https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109085
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |NEW Resolution|FIXED |--- --- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The only difference with -fexcess-precision=standard Is after: fdivrs 32(%esp) We do this: fstps 12(%esp) flds 12(%esp) Which is exactly what you expect, that is a truncation to 32bit float from long double. The reason why it "worked" before was there is an implict truncation when passing to a function call ...