diff options
author | Richard Biener <rguenther@suse.de> | 2017-09-07 07:44:43 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-09-07 07:44:43 +0000 |
commit | a7976089dba5e22778e4496e1b86e022241f9d69 (patch) | |
tree | 0a6114aa3b7e88085de18911eacd2d3276ca52ea /gcc/tree-ssa-pre.c | |
parent | e76b247239756b547eaa51d9fa0629416a293269 (diff) | |
download | gcc-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.c | 7 |
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); |