[Bug target/71475] [5/6/7 Regression] Optimization of copying into long double looses bytes
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 10 10:29:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71475
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |INVALID
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So you're trying to construct Intel extended double with 0x4141414141414141LL
mantissa, 0 MSB of mantissa, exponent 0x4141 and sign bit of 0.
E.g. https://en.wikipedia.org/wiki/Extended_precision says on this:
Unnormal. Only generated on the 8087 and 80287. The 80387 and later treat this
as an invalid operand.
I think you are just in the teritory of undefined behavior this, glibc probably
doesn't check carefully enough that the value you're passing to it the first
time is invalid, and in the second time, the compiler when it sees invalid
value as it transforms it into its internal representation and back, it
transforms it into something valid.
More information about the Gcc-bugs
mailing list