On Mon, Jun 29, 2020 at 11:45:41PM +0200, Marc Glisse wrote: > On Mon, 29 Jun 2020, Segher Boessenkool wrote: > > >Another question. How do these builtins prevent other FP insns from > >being moved (or optimised) "over" them? > > At the GIMPLE level they don't.
And not at RTL level, either. > They prevent other function calls from > moving across, just because function calls where at least one is not pure > can't cross, but otherwise fenv_access is one big missing feature in gcc. > I started something last year (and postponed indefinitely for lack of > time), replacing all FP operations (when the safe mode is enabled) with > builtins that get expanded by default to insert asm pass-through on the > arguments and the result. Yes, it is an ancient missing feature, and still very relevant. Thanks for any attempt you made / are making / will make to make this better! My fear is that if we optimise the floating env access better, that then fewer bad transforms are accidentally prevented :-/ Segher