https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69573
--- Comment #9 from Martin Sebor <msebor at gcc dot gnu.org> ---
I built the x86_64-apple-darwin15.3.0 cross-compiler to better understand what
the problem is but I don't see it. The cross compiler says the size and
alignment of long double is 16 in both ILP32 (with -m32) and LP64. So the
patched test should pass without any further changes.
Can you let me know the target triple of your GCC and the result of
_Alignof(long double)? Below is what I get:
$ (set -x; cat t.c && for m in 32 64; do
/build/sysroot/x86_64-apple-darwin15.3.0/bin/x86_64-apple-darwin15.3.0-gcc -S
-Wall -m$m -o/dev/stdout -std=c11 t.c; done)
+ cat t.c
int alignof_long_double = _Alignof (long double);
long double ld = 1;
+ for m in 32 64
+ /build/sysroot/x86_64-apple-darwin15.3.0/bin/x86_64-apple-darwin15.3.0-gcc -S
-Wall -m32 -o/dev/stdout -std=c11 t.c
.globl _alignof_long_double
.data
.align 2
_alignof_long_double:
.long 16 <<< _Alignof(long double) in -m64
.globl _ld
.align 4 <<< alignment of ld (2^4 bytes)
_ld:
.long 0
.long 2147483648
.long 16383
.long 0
.subsections_via_symbols
+ for m in 32 64
+ /build/sysroot/x86_64-apple-darwin15.3.0/bin/x86_64-apple-darwin15.3.0-gcc -S
-Wall -m64 -o/dev/stdout -std=c11 t.c
.globl _alignof_long_double
.data
.align 2
_alignof_long_double:
.long 16 <<< _Alignof(long double) with -m64
.globl _ld
.align 4 <<< alignment of ld (2^4 bytes)
_ld:
.long 0
.long 2147483648
.long 16383
.long 0
.subsections_via_symbols