aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-propagate.h
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2017-11-01 16:52:34 -0600
committerJeff Law <law@gcc.gnu.org>2017-11-01 16:52:34 -0600
commite10a635c274f90cc2241394b1d17e291adcbf153 (patch)
tree9ebad3083f2dd86e7aad41a9fa1673917493aea8 /gcc/tree-ssa-propagate.h
parentd9a3704a0bc83286afc179bc5e638ad6f7460bb3 (diff)
downloadgcc-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.h17
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 */