https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96373
--- Comment #10 from Michael Matz <matz at gcc dot gnu.org> --- (In reply to Andreas Schwab from comment #5) > > Just note that _all_ floating point operations, not just divisions, can trap > > (without fast-math). You never know if the user enabled stops for any of > > the FP exceptions (overflow, underflow, inexact, invalid op, div-by-zero). > > You need #pragma STDC FENV_ACCESS ON for that, otherwise it's undefined > behaviour. Sure, that's for operations that occur due to normal abstract machine evaluations. The point here is that we introduce operations that aren't in the original program (for the testcase on "array elements" after [10]), and if we do so those must be unobservable. These pragmas don't give license to introduce additional faults that can't possibly have happened in the abstract machine. (To see this, replace all arrays elements by 1.0, then the FP operations are all exact, we still get SIGFPE).