Reduced test case from std.math. *ps is 0x800F_FFFF_FFFF_FFFF, yet the if() branch is not taken. This one looks as though it might be the root cause of many failures.
void check(double x)
{
ulong *ps = cast(ulong *)&x;
if (*ps & 0x8000_0000_0000_0000) {}
else assert(x>=0);
}
void main()
{
check(-double.min_normal*double.epsilon);
}
_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals
