Fix pr69941.c test failure for avr
authorSenthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
Wed, 5 Oct 2016 17:11:22 +0000 (17:11 +0000)
committerSenthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
Wed, 5 Oct 2016 17:11:22 +0000 (17:11 +0000)
The test assumes ints are atleast 32 bits wide. For the avr
target, ints are 16 bits wide. This leads VRP to conclude
that a right shift by 9 followed by an equality comparison
to 0x74 can never be true. VRP eliminates the conditional, and
the code ends up unconditionally calling __builtin_abort.

Fixed the testcase to use __INT32_TYPE__ for targets with less
than 32 bit wide integers, wherever the size happens to be
significant.

gcc/testsuite/ChangeLog

2016-10-05  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

        * gcc.dg/torture/pr69941.c: Use __INT32_TYPE__ instead
        of int if __SIZEOF_INT__ is less than 4 bytes.

From-SVN: r240795

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr69941.c

index 947e84cbc6fbe8d6dc2a5575c6840aa403354660..722fb8219e8166d7197330cfa88ceaef17183e4d 100644 (file)
@@ -1,3 +1,8 @@
+2016-10-05  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
+
+       * gcc.dg/torture/pr69941.c: Use __INT32_TYPE__ instead
+       of int if __SIZEOF_INT__ is less than 4 bytes.
+
 2016-10-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        * gfortran.dg/dtio_15.f90: Fix spaces in dg-do.
index f15d41a819f3c77adce8247aaa721679b45b91fd..7d097caf26816d169372eb8f4bb3add6b3ca293b 100644 (file)
@@ -1,11 +1,17 @@
 /* { dg-do run } */
+
+#if __SIZEOF_INT__ < 4
+__extension__ typedef __INT32_TYPE__ int32_t;
+#else
+typedef int int32_t;
+#endif
  
 int a = 0;
 int b = 0;
 int c = 0;
-int e = 0;
+int32_t e = 0;
 int f = 0;
-int *g = &e;
+int32_t *g = &e;
  
 int fn1() { return b ? a : b; }