https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106574
--- Comment #8 from Michael Hudson-Doyle <michael.hudson at canonical dot com> --- I just changed z = xx * xx; to z = math_opt_barrier(xx * xx); which perhaps isn't sufficient. But my reading of the assembly is that the issue is that some of the math code is being moved _after_ the restore of the fpu state implied by SET_RESTORE_ROUNDL (FE_TONEAREST). I included some snippets in https://paste.ubuntu.com/p/RMdWK6yr2F/. This seems bad?