diff options
author | Richard Biener <rguenther@suse.de> | 2016-11-14 10:33:15 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-11-14 10:33:15 +0000 |
commit | 5129b43be675171c2e4742ae4b1e073249314818 (patch) | |
tree | 2ca5eb36c704a785bb669f3c685de8065075ccc0 /gcc | |
parent | d97cca4a46aea362e15fbf3a35f5f8c4f66ded75 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/gimple-ssa-backprop.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr78312.c | 23 |
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; +} |