The test was failing on x86 because longdouble128 only checks sizeof, rather than a full 128-bit payload. Using _Float128 is more portable and still exposes the original bug.
Tested on aarch64-linux-gnu and x86_64-linux-gnu, pushed as obvious. Richard gcc/testsuite/ PR target/118184 * gcc.dg/torture/pr118184.c: Use _Float128 instead of long double. --- gcc/testsuite/gcc.dg/torture/pr118184.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/testsuite/gcc.dg/torture/pr118184.c b/gcc/testsuite/gcc.dg/torture/pr118184.c index 20f567af11f..5933e2a1222 100644 --- a/gcc/testsuite/gcc.dg/torture/pr118184.c +++ b/gcc/testsuite/gcc.dg/torture/pr118184.c @@ -1,8 +1,8 @@ -/* { dg-do run { target { longdouble128 && lp64 } } } */ +/* { dg-do run { target { float128 && lp64 } } } */ union u1 { - long double ld; + _Float128 ld; unsigned long l[2]; }; @@ -13,7 +13,7 @@ unsigned long m() } [[gnu::noinline]] -long double f(void) +_Float128 f(void) { union u1 u; u.ld = __builtin_nanf128(""); -- 2.25.1