diff options
author | Jeff Law <law@redhat.com> | 2017-11-01 16:52:34 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2017-11-01 16:52:34 -0600 |
commit | e10a635c274f90cc2241394b1d17e291adcbf153 (patch) | |
tree | 9ebad3083f2dd86e7aad41a9fa1673917493aea8 /gcc/tree-ssa-propagate.h | |
parent | d9a3704a0bc83286afc179bc5e638ad6f7460bb3 (diff) | |
download | gcc-e10a635c274f90cc2241394b1d17e291adcbf153.zip gcc-e10a635c274f90cc2241394b1d17e291adcbf153.tar.gz gcc-e10a635c274f90cc2241394b1d17e291adcbf153.tar.bz2 |
tree-ssa-ccp.c (ccp_folder): New class derived from substitute_and_fold_engine.
* tree-ssa-ccp.c (ccp_folder): New class derived from
substitute_and_fold_engine.
(ccp_folder::get_value): New member function.
(ccp_folder::fold_stmt): Renamed from ccp_fold_stmt.
(ccp_fold_stmt): Remove prototype.
(ccp_finalize): Call substitute_and_fold from the ccp_class.
* tree-ssa-copy.c (copy_folder): New class derived from
substitute_and_fold_engine.
(copy_folder::get_value): Renamed from get_value.
(fini_copy_prop): Call substitute_and_fold from copy_folder class.
* tree-vrp.c (vrp_folder): New class derived from
substitute_and_fold_engine.
(vrp_folder::fold_stmt): Renamed from vrp_fold_stmt.
(vrp_folder::get_value): New member function.
(vrp_finalize): Call substitute_and_fold from vrp_folder class.
(evrp_dom_walker::before_dom_children): Similarly for replace_uses_in.
* tree-ssa-propagate.h (substitute_and_fold_engine): New class to
provide a class interface to folder/substitute routines.
(ssa_prop_fold_stmt_fn): Remove typedef.
(ssa_prop_get_value_fn): Likewise.
(subsitute_and_fold): Remove prototype.
(replace_uses_in): Likewise.
* tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
Renamed from replace_uses_in. Call the virtual member function
(substitute_and_fold_engine::replace_phi_args_in): Similarly.
(substitute_and_fold_dom_walker): Remove initialization of
data member entries for calbacks. Add substitute_and_fold_engine
member and initialize it.
(substitute_and_fold_dom_walker::before_dom_children0: Use the
member functions for get_value, replace_phi_args_in c
replace_uses_in, and fold_stmt calls.
(substitute_and_fold_engine::substitute_and_fold): Renamed from
substitute_and_fold. Remove assert. Update ctor call.
From-SVN: r254330
Diffstat (limited to 'gcc/tree-ssa-propagate.h')
-rw-r--r-- | gcc/tree-ssa-propagate.h | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/gcc/tree-ssa-propagate.h b/gcc/tree-ssa-propagate.h index cff9e53..629ae77 100644 --- a/gcc/tree-ssa-propagate.h +++ b/gcc/tree-ssa-propagate.h @@ -61,17 +61,11 @@ enum ssa_prop_result { }; -/* Call-back functions used by the value propagation engine. */ -typedef bool (*ssa_prop_fold_stmt_fn) (gimple_stmt_iterator *gsi); -typedef tree (*ssa_prop_get_value_fn) (tree); - - extern bool valid_gimple_rhs_p (tree); extern void move_ssa_defining_stmt_for_defs (gimple *, gimple *); extern bool update_gimple_call (gimple_stmt_iterator *, tree, int, ...); extern bool update_call_from_tree (gimple_stmt_iterator *, tree); extern bool stmt_makes_single_store (gimple *); -extern bool substitute_and_fold (ssa_prop_get_value_fn, ssa_prop_fold_stmt_fn); extern bool may_propagate_copy (tree, tree); extern bool may_propagate_copy_into_stmt (gimple *, tree); extern bool may_propagate_copy_into_asm (tree); @@ -79,7 +73,6 @@ extern void propagate_value (use_operand_p, tree); extern void replace_exp (use_operand_p, tree); extern void propagate_tree_value (tree *, tree); extern void propagate_tree_value_into_stmt (gimple_stmt_iterator *, tree); -extern bool replace_uses_in (gimple *stmt, ssa_prop_get_value_fn get_value); /* Public interface into the SSA propagation engine. Clients should inherit from this class and provide their own visitors. */ @@ -104,4 +97,14 @@ class ssa_propagation_engine }; +class substitute_and_fold_engine +{ + public: + bool substitute_and_fold (void); + bool replace_uses_in (gimple *); + virtual bool fold_stmt (gimple_stmt_iterator *) { return false; } + virtual tree get_value (tree) { return NULL_TREE; } + bool replace_phi_args_in (gphi *); +}; + #endif /* _TREE_SSA_PROPAGATE_H */ |