aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-11-14 10:33:15 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-11-14 10:33:15 +0000
commit5129b43be675171c2e4742ae4b1e073249314818 (patch)
tree2ca5eb36c704a785bb669f3c685de8065075ccc0 /gcc
parentd97cca4a46aea362e15fbf3a35f5f8c4f66ded75 (diff)
downloadgcc-5129b43be675171c2e4742ae4b1e073249314818.zip
gcc-5129b43be675171c2e4742ae4b1e073249314818.tar.gz
gcc-5129b43be675171c2e4742ae4b1e073249314818.tar.bz2
re PR tree-optimization/78312 (wrong code due to ssa-backprop)
2016-11-14 Richard Biener <rguenther@suse.de> PR tree-optimization/78312 * gimple-ssa-backprop.c (backprop::prepare_change): Reset flow-sensitive info. * gcc.dg/torture/pr78312.c: New testcase. From-SVN: r242380
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimple-ssa-backprop.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr78312.c23
4 files changed, 35 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5c53b9b..a4f6a34 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-11-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/78312
+ * gimple-ssa-backprop.c (backprop::prepare_change): Reset
+ flow-sensitive info.
+
2016-11-14 Georg-Johann Lay <avr@gjlay.de>
PR target/78093
diff --git a/gcc/gimple-ssa-backprop.c b/gcc/gimple-ssa-backprop.c
index 53349e8..6ef2218 100644
--- a/gcc/gimple-ssa-backprop.c
+++ b/gcc/gimple-ssa-backprop.c
@@ -728,6 +728,7 @@ backprop::prepare_change (tree var)
{
if (MAY_HAVE_DEBUG_STMTS)
insert_debug_temp_for_var_def (NULL, var);
+ reset_flow_sensitive_info (var);
}
/* STMT has been changed. Give the fold machinery a chance to simplify
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b87788e..bf99ab9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-11-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/78312
+ * gcc.dg/torture/pr78312.c: New testcase.
+
2016-11-14 Georg-Johann Lay <avr@gjlay.de>
PR target/78093
diff --git a/gcc/testsuite/gcc.dg/torture/pr78312.c b/gcc/testsuite/gcc.dg/torture/pr78312.c
new file mode 100644
index 0000000..470e5b2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr78312.c
@@ -0,0 +1,23 @@
+/* { dg-do run } */
+
+typedef unsigned short u16;
+
+static u16 a;
+
+u16 __attribute__ ((noinline, noclone))
+foo (int p1)
+{
+ a = -(p1 > 0);
+ a *= 0 != a;
+ a *= (unsigned)a;
+ return a;
+}
+
+int
+main ()
+{
+ u16 x = foo (1);
+ if (x != 1)
+ __builtin_abort();
+ return 0;
+}