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.

Reply via email to