https://gcc.gnu.org/bugzilla/show_bug.cgi?id=33675
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- As said, we try to honor volatile automatic variables as such and they get a stack slot assigned for this reason. Without the volatile but with -frounding-math -O2 we get fldl 20(%esp) movl 16(%esp), %eax fchs fstps 4(%esp) flds 4(%esp) fchs fstps (%eax) which is what you expect. Fixed (or wontfix with the volatile).