aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2017-05-04 10:35:58 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2017-05-04 10:35:58 +0000
commitc89ffd9997ef30cf68d97e979537dc288a5902b2 (patch)
tree800f1baa1d7259be22dde5aaaa310402915b786e /gcc
parent261ce1e56f828d0b18c9c0ca5dcd14452661f062 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/calls.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr80612.c15
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); }