Optimizing with dmd disables floating point exceptions
KennyTM~
kennytm at gmail.com
Fri Apr 29 00:47:07 PDT 2011
(It seems the message is lost. Let me try again.)
On Apr 29, 11 15:10, Jens Mueller wrote:
> KennyTM~ wrote:
[snip]
>
> I think the compiler performs that floating point division at compile
> time. I should look at the assembly. So the floating point exception
> happens at that point. Shouldn't the compiler tell me this somehow? Ask
> differently how do I get to know when my compile time function causes
> floating point exceptions?
> Interestingly the results are not the same. Shouldn't in both cases
> assert(a == real.infinity, to!(string)(a));
> hold.
> Without optimization it holds. Why does it not hold with optimizations?
>
> Jens
The compiler (optimizer) recognizes you have provided only constants and
try to do constant folding. But the backend (evalu8.c) did not treat the
divide-by-zero case correctly and yields a garbage value.
See bug 5908 (http://d.puremagic.com/issues/show_bug.cgi?id=5908).
More information about the Digitalmars-d
mailing list