https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102126
--- Comment #5 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- Exception traps (and thus exact underflow) are outside the scope of ISO C. (Some forms of alternate exception handling are described in TS 18661-5, which is *not* being integrated into C2x, but none of them are like feenableexcept; they involve lexically scoped, not dynamically scoped, alternate exception handling.) Note "This specification does not require support for trap handlers that maintain information about the order or count of floating-point exceptions.", concerning a different case where trap handlers could observe transformations that are not otherwise visible. Maybe we should split -ftrapping-math into the on-by-default flag concerned with the raising of exception flags, and an off-by-default flag concerned with actual changed-flow-of-control traps. (That's apart from the question of splitting -ftrapping-math into the part concerned with local transformations keeping the correct set of exception flags raised by expressions whose results are used, and the part (largely not implemented, but see Marc Glisse's -ffenv-access patches from August 2020) concerned with treating flag raising as an actual side effect and preventing code movement or removal that would be valid if flag raising weren't handled as a side effect.)