aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-08-01 07:04:10 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-08-01 07:04:10 +0000
commit5e8fe12fccb2edeb1b699101167b1c921a742bb7 (patch)
tree4e2d8acc2a1798ae4c5754c00fef9b38f530ecee /gcc
parent93ac482a661be4904563e065f6dd32c04eac1cee (diff)
downloadgcc-5e8fe12fccb2edeb1b699101167b1c921a742bb7.zip
gcc-5e8fe12fccb2edeb1b699101167b1c921a742bb7.tar.gz
gcc-5e8fe12fccb2edeb1b699101167b1c921a742bb7.tar.bz2
re PR tree-optimization/81297 (ICE in get_single_symbol)
2017-08-01 Richard Biener <rguenther@suse.de> PR tree-optimization/81297 * tree-vrp.c (get_single_symbol): Remove assert, instead drop TREE_OVERFLOW from INTEGER_CSTs. * gcc.dg/torture/pr81297.c: New testcase. From-SVN: r250758
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr81297.c16
-rw-r--r--gcc/tree-vrp.c3
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3913f1b..2e96427 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-08-01 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/81297
+ * tree-vrp.c (get_single_symbol): Remove assert, instead drop
+ TREE_OVERFLOW from INTEGER_CSTs.
+
2017-07-31 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.c (enum rs6000_reg_type): Delete trailing comma.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9315835..8ae9ef5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-08-01 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/81297
+ * gcc.dg/torture/pr81297.c: New testcase.
+
2017-07-31 Uros Bizjak <ubizjak@gmail.com>
* gcc.target/i386/naked-1.c (dg-options): Add -fno-pic.
diff --git a/gcc/testsuite/gcc.dg/torture/pr81297.c b/gcc/testsuite/gcc.dg/torture/pr81297.c
new file mode 100644
index 0000000..be346c4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr81297.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+
+int
+nf (int gy, int x0)
+{
+ while (gy < 1)
+ ++x0;
+
+ gy += !!gy;
+ if (gy < 0)
+ {
+ x0 += gy;
+ return (x0 > (gy + x0)) ? (1 / 0) : 1; /* { dg-warning "division by zero" } */
+ }
+}
+
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 1f0b688..79a29bf 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -796,7 +796,8 @@ get_single_symbol (tree t, bool *neg, tree *inv)
if (TREE_CODE (t) != SSA_NAME)
return NULL_TREE;
- gcc_assert (! inv_ || ! TREE_OVERFLOW_P (inv_));
+ if (inv_ && TREE_OVERFLOW_P (inv_))
+ inv_ = drop_tree_overflow (inv_);
*neg = neg_;
*inv = inv_;