http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49600
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> 2011-07-04 13:42:00 UTC --- Here is the testcase: --- long int seedi; long lo; double ran() { long hi; long test; hi = seedi / 127773L; test = 16807L * lo - 2836L * hi; if (test > 0) { seedi = test; } return ( (float) seedi / 2147483647L); } --- It failed at -O3 -funroll-loops -msse2 -mfpmath=sse -ffast-math -mtune=XXX, where XXX is a new x86 optimization we are working on.