aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-04-19 13:22:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-04-19 13:22:19 +0000
commit65f52ee9b978858ed791162f29a04f2cbcef6dbc (patch)
treec229c8622615d24353d0e083b34905437310e60f /gcc/tree-ssa-pre.c
parent27b95a65410ccb700752c8178fd19f1485a4b5bf (diff)
downloadgcc-65f52ee9b978858ed791162f29a04f2cbcef6dbc.zip
gcc-65f52ee9b978858ed791162f29a04f2cbcef6dbc.tar.gz
gcc-65f52ee9b978858ed791162f29a04f2cbcef6dbc.tar.bz2
re PR tree-optimization/70724 (Miscompiles python3 with FDO)
2016-04-19 Richard Biener <rguenther@suse.de> PR tree-optimization/70724 * tree-ssa-sccvn.c (scc_vn_restore_ssa_info): Split SSA info restoring out from ... (free_scc_vn): ... here. * tree-ssa-sccvn.h (scc_vn_restore_ssa_info): Declare. * tres-ssa-pre.c (pass_pre::execute): Restore SSA info before tail merging. (pass_fre::execute): Restore SSA info. * gcc.dg/torture/pr70724.c: New testcase. From-SVN: r235203
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r--gcc/tree-ssa-pre.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index c0e3b80..2d1eb70 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -4804,6 +4804,9 @@ pass_pre::execute (function *fun)
todo |= fini_eliminate ();
loop_optimizer_finalize ();
+ /* Restore SSA info before tail-merging as that resets it as well. */
+ scc_vn_restore_ssa_info ();
+
/* TODO: tail_merge_optimize may merge all predecessors of a block, in which
case we can merge the block with the remaining predecessor of the block.
It should either:
@@ -4877,6 +4880,7 @@ pass_fre::execute (function *fun)
todo |= fini_eliminate ();
+ scc_vn_restore_ssa_info ();
free_scc_vn ();
statistics_counter_event (fun, "Insertions", pre_stats.insertions);