[Haskell-cafe] GHC optimisations

Andrew Coppin andrewcoppin at btinternet.com
Mon Aug 13 14:51:06 EDT 2007


Stefan O'Rear wrote:
> On Mon, Aug 13, 2007 at 07:35:31PM +0100, Andrew Coppin wrote:
>   
>> (I once compiled a program that used the GHC API. The final binary was 
>> several times larger than ghc.exe...)
>>     
>
> GHC is a particularly bad case because what it does is determined by the
> settings of a bunch of switches in the configuration data.  Of course,
> GHC isn't smart enough to perform inter-module control flow analysis, so
> even with -split-objs you'd probably still link most of GHC.
>   

Is it likely that GHC will ever become "smart enough" to do that kind of 
analysis? (I imagine this is going to be especially fun with precompiled 
libraries...)

>>> This is called the Constructed Product Return (CPR) analysis, and it
>>> applies to all types with one constructor (in archaic jargon, product
>>> types).
>>>       
>> Right. So it doesn't have to have strict fields or anything? Just has to 
>> have exactly one constructor?
>>     
>
> Yep, CPR is completely independent of strictness, however the returned
> product must be *new*, since returning an old object by value risks
> losing sharing (and thus creating large memory leaks).
>   

Right, OK.



More information about the Haskell-Cafe mailing list