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