https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93934
--- Comment #8 from Alexander Monakov <amonakov at gcc dot gnu.org> --- I think regstack is fine as x87 only supports computations in its native 80-bit format and conversions to/from ieee float/double happen only on memory loads/stores. > I suppose a fldt followed by "truncation" to 32/64 bit would then trap at the truncation step? Such "truncation" can only be implemented via a spill/reload on x87, so, yes. > We'd have to mark all loads from not must-initialized memory as possibly > trapping and thus not eligible for if-conversion. (except long double) > And this applies to possibly uninitialized registers > as well which might be spilled or allocated to the stack. Ideally registers should be always spilled in their native 80-bit format, for which the problem does not arise. For C with -fexcess-precision=standard this should already be the case.