https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92486

--- Comment #16 from Alexander Cherepanov <ch3root at openwall dot com> ---
BTW this bug combines nicely with pr71460. Possible effects:
- padding in a long double inside a struct is lost on x86-64;
- sNaN is converted to qNaN in a double inside a struct on x86-32.

Both are illustrated at https://godbolt.org/z/VKmGbY . E.g., the former, this:

----------------------------------------------------------------------
#include <string.h>

struct s1 { long double d; };
void f1(struct s1 *restrict p, struct s1 *restrict q)
{
    *p = *q;
    memcpy(p, q, sizeof(struct s1));
}
----------------------------------------------------------------------

is compiled into this:

----------------------------------------------------------------------
f1:
        fldt    (%rsi)
        fstpt   (%rdi)
        ret
----------------------------------------------------------------------

Reply via email to