]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
bswap-2.c: Add alignment constraints to bitfield and test wrong results instead of...
authorThomas Preud'homme <thomas.preudhomme@arm.com>
Fri, 6 Jun 2014 10:42:50 +0000 (10:42 +0000)
committerThomas Preud'homme <thopre01@gcc.gnu.org>
Fri, 6 Jun 2014 10:42:50 +0000 (10:42 +0000)
2014-06-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    * gcc.c-torture/execute/bswap-2.c: Add alignment constraints to
    bitfield and test wrong results instead of correct results to make the
    test more portable.

From-SVN: r211313

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/bswap-2.c

index a7c688c7d2479090cbbf820205f81b748e0d78e4..7556316cd56eee7abeeb6fe217a1d3ac858a5bd7 100644 (file)
@@ -1,3 +1,9 @@
+2014-06-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       * gcc.c-torture/execute/bswap-2.c: Add alignment constraints to
+       bitfield and test wrong results instead of correct results to make the
+       test more portable.
+
 2014-06-06  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/60432
index 38f18fd6c95748c190ad3c551644e4b24577d34e..a47e01a6053a5001ef984bb5b8568779a670086c 100644 (file)
@@ -6,8 +6,11 @@ typedef __UINT32_TYPE__ unsigned;
 
 struct bitfield {
   unsigned char f0:7;
+  unsigned char   :1;
   unsigned char f1:7;
+  unsigned char   :1;
   unsigned char f2:7;
+  unsigned char   :1;
   unsigned char f3:7;
 };
 
@@ -74,11 +77,17 @@ main ()
     return 0;
   bfin.inval = (struct ok) { 0x83, 0x85, 0x87, 0x89 };
   out = partial_read_le32 (bfin);
-  if (out != 0x09070503 && out != 0x88868482 && out != 0x78306141)
+  /* Test what bswap would do if its check are not strict enough instead of
+     what is the expected result as there is too many possible results with
+     bitfields.  */
+  if (out == 0x89878583)
     __builtin_abort ();
   bfin.inval = (struct ok) { 0x83, 0x85, 0x87, 0x89 };
   out = partial_read_be32 (bfin);
-  if (out != 0x03050709 && out != 0x82848688 && out != 0x41613078)
+  /* Test what bswap would do if its check are not strict enough instead of
+     what is the expected result as there is too many possible results with
+     bitfields.  */
+  if (out == 0x83858789)
     __builtin_abort ();
   out = fake_read_le32 (cin, &cin[2]);
   if (out != 0x89018583)