dmd 2.029 release

Don nospam at nospam.com
Sat Apr 25 18:11:36 PDT 2009


Don wrote:
> bearophile wrote:

>> Isn't sin(x)+sin(x) pure? Even if the compiler doesn't want to replace 
>> x+x with x*2 because x is a floating point, it can do:
>>
>> y = sin(x)
>> y+y
>>
>> And that gives the same result even with FPs.
> 
> Yes. From further investigation, I've found that:
> (1) the optimisation of pure only happens for int returns, not for 
> floating-point return types. It should convert purefunc(x)+purefunc(x) 
> into 2*purefunc(x) if the return type of purefunc is int, float, or 
> complex.
> 
> (2) the back-end isn't smart enough to convert f*2 into f+f.
I've fixed (2), patch to the backend is in bigzilla 2888.
I learnt a lot about the backend in the process, maybe I can fix (1) now.


More information about the Digitalmars-d-announce mailing list