This was broken out of the first tree-vrp refactoring patch. This patch just moves two classes to earlier points in the file.
Richi approved this as part of the larger patch. But since I had it pulled out, I'm going to commit it individually. I'm posting the patch here for archival purposes. Bootstrapped and regression tested on x86_64. Jeff
commit 03a28fc2e61f529be691f5b3f884b25d79044864 Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu Nov 9 23:04:20 2017 +0000 * tree-vrp.c (vrp_prop): Move class to earlier point in the file. (vrp_folder): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254612 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 16bec6ec00b..9b93a852099 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2017-11-09 Jeff Law <l...@redhat.com> + * tree-vrp.c (vrp_prop): Move class to earlier point in the file. + (vrp_folder): Likewise. + * tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack. Get it from the existing bitmap instead. (vrp_intersect_ranges_1): Likewise. diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 8e86b060ae7..fc9ad4adebe 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -6635,6 +6635,13 @@ insert_range_assertions (void) BITMAP_FREE (need_assert_for); } +class vrp_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; +}; + /* Checks one ARRAY_REF in REF, located at LOCUS. Ignores flexible arrays and "struct" hacks. If VRP can determine that the array subscript is a constant, check if it is outside valid @@ -8066,13 +8073,6 @@ extract_range_from_stmt (gimple *stmt, edge *taken_edge_p, vrp_visit_switch_stmt (as_a <gswitch *> (stmt), taken_edge_p); } -class vrp_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; -}; - /* Evaluate statement STMT. If the statement produces a useful range, return SSA_PROP_INTERESTING and record the SSA name with the interesting range into *OUTPUT_P. @@ -10450,6 +10450,13 @@ simplify_stmt_using_ranges (gimple_stmt_iterator *gsi) return false; } +class vrp_folder : public substitute_and_fold_engine +{ + public: + tree get_value (tree) FINAL OVERRIDE; + bool fold_stmt (gimple_stmt_iterator *) FINAL OVERRIDE; +}; + /* If the statement pointed by SI has a predicate whose value can be computed using the value range information computed by VRP, compute its value and return true. Otherwise, return false. */ @@ -10512,13 +10519,6 @@ fold_predicate_in (gimple_stmt_iterator *si) return false; } -class vrp_folder : public substitute_and_fold_engine -{ - public: - tree get_value (tree) FINAL OVERRIDE; - bool fold_stmt (gimple_stmt_iterator *) FINAL OVERRIDE; -}; - /* Callback for substitute_and_fold folding the stmt at *SI. */ bool