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