diff options
author | Jeff Law <law@redhat.com> | 2017-11-01 16:49:08 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2017-11-01 16:49:08 -0600 |
commit | d9a3704a0bc83286afc179bc5e638ad6f7460bb3 (patch) | |
tree | 1c17c33dc292c5cbbffe76f1b5fe6839e210688b /gcc/tree-ssa-copy.c | |
parent | efc04f78d8a0efb66d9f767ce26aa7d01d19cb0c (diff) | |
download | gcc-d9a3704a0bc83286afc179bc5e638ad6f7460bb3.zip gcc-d9a3704a0bc83286afc179bc5e638ad6f7460bb3.tar.gz gcc-d9a3704a0bc83286afc179bc5e638ad6f7460bb3.tar.bz2 |
tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef.
* tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef.
(ssa_prop_visit_phi_fn): Likewise.
(class ssa_propagation_engine): New class to provide an interface
into ssa_propagate.
* tree-ssa-propagate.c (ssa_prop_visit_stmt): Remove file scoped
variable.
(ssa_prop_visit_phi): Likewise.
(ssa_propagation_engine::simulate_stmt): Moved into class.
Call visit_phi/visit_stmt from the class rather than via
file scoped static variables.
(ssa_propagation_engine::simulate_block): Moved into class.
(ssa_propagation_engine::process_ssa_edge_worklist): Similarly.
(ssa_propagation_engine::ssa_propagate): Similarly. No longer
set file scoped statics for the visit_stmt/visit_phi callbacks.
* tree-complex.c (complex_propagate): New class derived from
ssa_propagation_engine.
(complex_propagate::visit_stmt): Renamed from complex_visit_stmt.
(complex_propagate::visit_phi): Renamed from complex_visit_phi.
(tree_lower_complex): Call ssa_propagate via the complex_propagate
class.
* tree-ssa-ccp.c: (ccp_propagate): New class derived from
ssa_propagation_engine.
(ccp_propagate::visit_phi): Renamed from ccp_visit_phi_node.
(ccp_propagate::visit_stmt): Renamed from ccp_visit_stmt.
(do_ssa_ccp): Call ssa_propagate from the ccp_propagate class.
* tree-ssa-copy.c (copy_prop): New class derived from
ssa_propagation_engine.
(copy_prop::visit_stmt): Renamed from copy_prop_visit_stmt.
(copy_prop::visit_phi): Renamed from copy_prop_visit_phi_node.
(execute_copy_prop): Call ssa_propagate from the copy_prop class.
* tree-vrp.c (vrp_prop): New class derived from ssa_propagation_engine.
(vrp_prop::visit_stmt): Renamed from vrp_visit_stmt.
(vrp_prop::visit_phi): Renamed from vrp_visit_phi_node.
(execute_vrp): Call ssa_propagate from the vrp_prop class.
From-SVN: r254329
Diffstat (limited to 'gcc/tree-ssa-copy.c')
-rw-r--r-- | gcc/tree-ssa-copy.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c index 9f0fe54..9db11e2 100644 --- a/gcc/tree-ssa-copy.c +++ b/gcc/tree-ssa-copy.c @@ -68,6 +68,13 @@ struct prop_value_t { tree value; }; +class copy_prop : public ssa_propagation_engine +{ + public: + enum ssa_prop_result visit_stmt (gimple *, edge *, tree *) FINAL OVERRIDE; + enum ssa_prop_result visit_phi (gphi *) FINAL OVERRIDE; +}; + static prop_value_t *copy_of; static unsigned n_copy_of; @@ -263,8 +270,8 @@ copy_prop_visit_cond_stmt (gimple *stmt, edge *taken_edge_p) If the new value produced by STMT is varying, return SSA_PROP_VARYING. */ -static enum ssa_prop_result -copy_prop_visit_stmt (gimple *stmt, edge *taken_edge_p, tree *result_p) +enum ssa_prop_result +copy_prop::visit_stmt (gimple *stmt, edge *taken_edge_p, tree *result_p) { enum ssa_prop_result retval; @@ -317,8 +324,8 @@ copy_prop_visit_stmt (gimple *stmt, edge *taken_edge_p, tree *result_p) /* Visit PHI node PHI. If all the arguments produce the same value, set it to be the value of the LHS of PHI. */ -static enum ssa_prop_result -copy_prop_visit_phi_node (gphi *phi) +enum ssa_prop_result +copy_prop::visit_phi (gphi *phi) { enum ssa_prop_result retval; unsigned i; @@ -601,7 +608,8 @@ static unsigned int execute_copy_prop (void) { init_copy_prop (); - ssa_propagate (copy_prop_visit_stmt, copy_prop_visit_phi_node); + class copy_prop copy_prop; + copy_prop.ssa_propagate (); if (fini_copy_prop ()) return TODO_cleanup_cfg; return 0; |