https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93682
--- Comment #2 from Rich Felker <bugdal at aerifal dot cx> --- I think the underlying issue here is just that -mpc64 (along with -mpc32) is just hopelessly broken and should be documented as such. It could probably be made to work, but there are all sorts of issues like float.h being wrong, math library code breaking, etc. On a more fundamental level (but seemingly unrelated to the mechanism of breakage here), the underlying x87 precision control modes are also hopelessly broken. They're not actually single/double precision modes, but single/double mantissa with ld80 exponent. So I don't think it's possible to make the optimizer aware of them without making it aware of two new floating point formats that it doesn't presently know about. If you just pretended they were single/double, the same sort of issue would arise again as soon as someone uses small or large values that should be denormal/underflow/overflow but which retain their full-precision values by virtue of the excess exponent precision.