aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKugan Vivekanandarajah <kuganv@linaro.org>2016-12-09 19:47:10 +0000
committerKugan Vivekanandarajah <kugan@gcc.gnu.org>2016-12-09 19:47:10 +0000
commit7d22d5a3ec5d0a2564e1b1a8feb6b3b1625a42e9 (patch)
treec9326816a55000fcb9a5107f06fb3b449f527f87
parent424c77c26ed0aca25622745ca14b14eeb7d0895c (diff)
downloadgcc-7d22d5a3ec5d0a2564e1b1a8feb6b3b1625a42e9.zip
gcc-7d22d5a3ec5d0a2564e1b1a8feb6b3b1625a42e9.tar.gz
gcc-7d22d5a3ec5d0a2564e1b1a8feb6b3b1625a42e9.tar.bz2
re PR tree-optimization/78721 (ICE on valid code at -O2 and -O3 on x86_64-linux-gnu: in set_value_range, at tree-vrp.c:371)
gcc/testsuite/ChangeLog: 2016-12-09 Kugan Vivekanandarajah <kuganv@linaro.org> PR ipa/78721 * gcc.dg/pr78721.c: New test. gcc/ChangeLog: 2016-12-09 Kugan Vivekanandarajah <kuganv@linaro.org> PR ipa/78721 * ipa-cp.c (propagate_vr_accross_jump_function): drop_tree_overflow after fold_convert. From-SVN: r243501
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-cp.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr78721.c23
4 files changed, 35 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b36a14c..eedb11b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-12-09 Kugan Vivekanandarajah <kuganv@linaro.org>
+
+ PR ipa/78721
+ * ipa-cp.c (propagate_vr_accross_jump_function): drop_tree_overflow
+ after fold_convert.
+
2016-12-09 Jakub Jelinek <jakub@redhat.com>
PR target/72742
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 2ec671f..4ec7cc5 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -1895,9 +1895,9 @@ propagate_vr_accross_jump_function (cgraph_edge *cs,
tree val = ipa_get_jf_constant (jfunc);
if (TREE_CODE (val) == INTEGER_CST)
{
+ val = fold_convert (param_type, val);
if (TREE_OVERFLOW_P (val))
val = drop_tree_overflow (val);
- val = fold_convert (param_type, val);
jfunc->vr_known = true;
jfunc->m_vr.type = VR_RANGE;
jfunc->m_vr.min = val;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ac7abfd..db4765b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-12-09 Kugan Vivekanandarajah <kuganv@linaro.org>
+
+ PR ipa/78721
+ * gcc.dg/pr78721.c: New test.
+
2016-12-09 Jakub Jelinek <jakub@redhat.com>
PR target/72742
diff --git a/gcc/testsuite/gcc.dg/pr78721.c b/gcc/testsuite/gcc.dg/pr78721.c
new file mode 100644
index 0000000..fb2ffc3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr78721.c
@@ -0,0 +1,23 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+int a, b, c;
+
+int fn1 (char e, char f)
+{
+ return !f || (e && f == 1);
+}
+
+void fn2 (char e)
+{
+ while (b)
+ e = 0;
+ a = 128;
+ c = fn1 (e, a == e);
+}
+
+int main ()
+{
+ fn2 (0);
+ return 0;
+}