Skip to content

Commit

Permalink
Fix pr69941.c test failure for avr
Browse files Browse the repository at this point in the history
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 committed Oct 5, 2016
1 parent ea55eab commit d204444
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
5 changes: 5 additions & 0 deletions gcc/testsuite/ChangeLog
@@ -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.
Expand Down
10 changes: 8 additions & 2 deletions gcc/testsuite/gcc.dg/torture/pr69941.c
@@ -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; }

Expand Down

0 comments on commit d204444

Please sign in to comment.