http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49257
--- Comment #11 from Uros Bizjak <ubizjak at gmail dot com> 2011-06-07 08:38:45 UTC --- Patched gcc fails following testcase: --cut here-- #include <stdio.h> float __attribute__((noinline)) ll2f (long long i) { return i; } long long __attribute__((noinline)) f2ll (float f) { return f; } int main () { static volatile long long ll = 0x4000004000000001ll; static volatile float f; static volatile long long o; f = ll2f (ll); o = f2ll (f); printf ("%#llx %f %#llx\n", ll, f, o); return 0; } --cut here-- gcc -m32 -O2 -msse2 -mfpmath=sse: 0x4000004000000001 4611686018427387904.000000 0x4000000000000000 gcc -m32 -O2 -msse2 -mfpmath=387: 0x4000004000000001 4611686568183201792.000000 0x4000008000000000 A bit has been lost...