aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-09-07 07:44:43 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-09-07 07:44:43 +0000
commita7976089dba5e22778e4496e1b86e022241f9d69 (patch)
tree0a6114aa3b7e88085de18911eacd2d3276ca52ea /gcc/tree-ssa-pre.c
parente76b247239756b547eaa51d9fa0629416a293269 (diff)
downloadgcc-a7976089dba5e22778e4496e1b86e022241f9d69.zip
gcc-a7976089dba5e22778e4496e1b86e022241f9d69.tar.gz
gcc-a7976089dba5e22778e4496e1b86e022241f9d69.tar.bz2
passes.def (pass_split_crit_edges): Remove instance before PRE.
2017-09-07 Richard Biener <rguenther@suse.de> * passes.def (pass_split_crit_edges): Remove instance before PRE. * tree-ssa-pre.c (pass_pre::execute): Instead manually split critical edges here, after loop init. (pass_data_pre): Remove PROP_no_crit_edges flags. * tree-ssa-sccvn.c (vn_reference_lookup_3): Use vn_valueize for valueization of call args to avoid leaking VN_TOP. (visit_use): Assert we do not visit default defs. (init_scc_vn): Use build_decl for VN_TOP to make name nicer. Use error_mark_node to more easily detect leaking VN_TOP. All default-defs are varying, not VN_TOP. Mark them visited. (run_scc_vn): Make code match comment. * gcc.dg/tree-ssa/ssa-thread-12.c: XFAIL third FSM threading opportunity. From-SVN: r251833
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r--gcc/tree-ssa-pre.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 1ca68d4..6f9fac5 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -5006,11 +5006,9 @@ const pass_data pass_data_pre =
"pre", /* name */
OPTGROUP_NONE, /* optinfo_flags */
TV_TREE_PRE, /* tv_id */
- /* PROP_no_crit_edges is ensured by placing pass_split_crit_edges before
- pass_pre. */
- ( PROP_no_crit_edges | PROP_cfg | PROP_ssa ), /* properties_required */
+ ( PROP_cfg | PROP_ssa ), /* properties_required */
0, /* properties_provided */
- PROP_no_crit_edges, /* properties_destroyed */
+ 0, /* properties_destroyed */
TODO_rebuild_alias, /* todo_flags_start */
0, /* todo_flags_finish */
};
@@ -5040,6 +5038,7 @@ pass_pre::execute (function *fun)
/* This has to happen before SCCVN runs because
loop_optimizer_init may create new phis, etc. */
loop_optimizer_init (LOOPS_NORMAL);
+ split_critical_edges ();
run_scc_vn (VN_WALK);