On Tue, Jun 24, 2008 at 3:51 PM, Don Stewart <[EMAIL PROTECTED]> wrote:
> > > > I've taken all optimization flags out of the .cabal file. They don't > have > > any effect. My understanding of things is this: (please correct if > wrong) > > All functions have inline pragmas, and all are small (1 or 2 lines) so > > their definitions are all spewed into the .hi files. So in both > scenarios > > (library vs local) GHC can "see" the whole library. Since every > function > > is inlined, it doesn't matter what flags the library is compiled with. > > That compiled code will never be used so long as the application is > > compiled with optimization on. > > > You might want to give the simplifier enough time to unwind things. > I use, e.g. > > -O2 > -fvia-C -optc-O2 > -fdicts-cheap > -fno-method-sharing > -fmax-simplifier-iterations10 > -fliberate-case-threshold100 > > in my ghc-options for 'whole program' libraries. > > Raise these limits if you find they're having an effect > > -- Don Yeah I saw those in your uvector library and was going to ask: what do they do? Are they documented anywhere? I can't find any info on them. Speicifcally, what is the case liberation threshold? (Can't even find that on google.) That sounds germane because the function in question is one of the few with branches. And what effect does -fvia-C -optc-O2 have? Those refer to the generation of machine code, do they not? If the library is essentially a core-only library, why use them? As far as I can tell, even -O2 is ineffectual when compiling the library. 'Compiling' here is even a misnomer. We're just transliterating from haskell to core. Scott
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users