diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a7c688c7d24..7556316cd56 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-06-06 Thomas Preud'homme + + * 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 PR c++/60432 diff --git a/gcc/testsuite/gcc.c-torture/execute/bswap-2.c b/gcc/testsuite/gcc.c-torture/execute/bswap-2.c index 38f18fd6c95..a47e01a6053 100644 --- a/gcc/testsuite/gcc.c-torture/execute/bswap-2.c +++ b/gcc/testsuite/gcc.c-torture/execute/bswap-2.c @@ -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)