http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52684
--- Comment #3 from davem at gcc dot gnu.org 2012-05-01 22:27:11 UTC --- Sadly, the bug is even more severe. Even something as simple as: long double f(long double a, long double b) { return a + b; } will be miscompiled with -O1 -ffloat-store on 64-bit. The problem is that the call instructions emitted lack the reg use notes so that the compiler can see the stack frame inputs to the libcall. Strangely, the notes are created properly on 32-bit. Then DSE thinks that the stack stores can be eliminated and proceeds to kill those insns off. Also, code generation is significantly better with -ffloat-store enabled. If you don't believe me, see for yourself.