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.

Reply via email to