Permalink
Browse files

Fix pr69941.c test failure for avr

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.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@240795 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information...
saaadhu
saaadhu committed Oct 5, 2016
1 parent ea55eab commit d204444eb12ee811bddf972c6bf31ecb53322491
Showing with 13 additions and 2 deletions.
  1. +5 −0 gcc/testsuite/ChangeLog
  2. +8 −2 gcc/testsuite/gcc.dg/torture/pr69941.c
View
@@ -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.
@@ -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; }

0 comments on commit d204444

Please sign in to comment.