]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
testsuite: Fix up pr119318.c test for big-endian [PR120082] master trunk
authorJakub Jelinek <jakub@redhat.com>
Tue, 1 Jul 2025 09:58:28 +0000 (11:58 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 1 Jul 2025 10:01:08 +0000 (12:01 +0200)
The test is not endianess clean, x[0] is supposed to be ((__int128)0x19)<<32
on little endian - 0x19 is in the second vector elt - but ((__int128)0x19)<<64
on big endian.  I've added also verification of int and __int128 sizes just
in case we have say 16-bit or 64-bit int target with __int128 type, or
pdp endian gets __int128 support.

2025-07-01  Jakub Jelinek  <jakub@redhat.com>

PR ipa/119318
PR testsuite/120082
* gcc.dg/ipa/pr119318.c (main): Expect different result on big endian
from little endian, on unexpected endianness or int/int128 sizes don't
test anything.  Formatting fixes.

gcc/testsuite/gcc.dg/ipa/pr119318.c

index f179aed503975572cfb2177856f8dfd4661de77d..47698a5e751c39469a86603f850c23bc8ae9a9a8 100644 (file)
@@ -30,8 +30,14 @@ int
 main ()
 {
   W x = foo (0, (V) { 0, 5 });
-  for (unsigned i = 0; i < sizeof(x)/sizeof(x[0]); i++)
+  for (unsigned i = 0; i < sizeof (x) / sizeof (x[0]); i++)
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_INT__ == 4 && __SIZEOF_INT128__ == 16
     if (x[i] != (i ? 0 : 0x1900000000))
-      __builtin_abort();
+#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ && __SIZEOF_INT__ == 4 && __SIZEOF_INT128__ == 16
+    if (x[i] != (i ? 0 : ((__int128) 0x19) << 64))
+#else
+    if (0)
+#endif
+      __builtin_abort ();
   return 0;
 }