diff options
author | Marek Polacek <polacek@redhat.com> | 2017-05-04 10:35:58 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2017-05-04 10:35:58 +0000 |
commit | c89ffd9997ef30cf68d97e979537dc288a5902b2 (patch) | |
tree | 800f1baa1d7259be22dde5aaaa310402915b786e | |
parent | 261ce1e56f828d0b18c9c0ca5dcd14452661f062 (diff) | |
download | gcc-c89ffd9997ef30cf68d97e979537dc288a5902b2.zip gcc-c89ffd9997ef30cf68d97e979537dc288a5902b2.tar.gz gcc-c89ffd9997ef30cf68d97e979537dc288a5902b2.tar.bz2 |
re PR tree-optimization/80612 (ICE in get_range_info, at tree-ssanames.c:375)
PR tree-optimization/80612
* calls.c (get_size_range): Check for INTEGRAL_TYPE_P.
* gcc.dg/torture/pr80612.c: New test.
From-SVN: r247586
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/calls.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr80612.c | 15 |
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 67a97c8..84c1f68 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-05-04 Marek Polacek <polacek@redhat.com> + + PR tree-optimization/80612 + * calls.c (get_size_range): Check for INTEGRAL_TYPE_P. + 2017-05-04 Prakhar Bahuguna <prakhar.bahuguna@arm.com> Andre Simoes Dias Vieira <andre.simoesdiasvieira@arm.com> diff --git a/gcc/calls.c b/gcc/calls.c index c26f157..bd081cc 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1270,7 +1270,7 @@ get_size_range (tree exp, tree range[2]) wide_int min, max; enum value_range_type range_type - = (TREE_CODE (exp) == SSA_NAME + = ((TREE_CODE (exp) == SSA_NAME && INTEGRAL_TYPE_P (TREE_TYPE (exp))) ? get_range_info (exp, &min, &max) : VR_VARYING); if (range_type == VR_VARYING) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d3fc739..b93975d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-05-04 Marek Polacek <polacek@redhat.com> + + PR tree-optimization/80612 + * gcc.dg/torture/pr80612.c: New test. + 2017-05-04 Prakhar Bahuguna <prakhar.bahuguna@arm.com> Andre Simoes Dias Vieira <andre.simoesdiasvieira@arm.com> diff --git a/gcc/testsuite/gcc.dg/torture/pr80612.c b/gcc/testsuite/gcc.dg/torture/pr80612.c new file mode 100644 index 0000000..225b811 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr80612.c @@ -0,0 +1,15 @@ +/* PR tree-optimization/80612 */ +/* { dg-do compile } */ + +struct obstack *a; +struct obstack { + union { + void *plain; + void (*extra)(); + } chunkfun; +} fn1(void p4()) { + a->chunkfun.plain = p4; + a->chunkfun.extra(a); +} +void fn2(int) __attribute__((__alloc_size__(1))); +void fn3() { fn1(fn2); } |