diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2020-05-05 13:45:39 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2020-06-10 15:09:37 +0200 |
commit | 1396fa5b91cfa0b3708ec9df33c0bb84386081d6 (patch) | |
tree | d5eb6c1149ef54835dcc6b0d2d7be8fa28de1d03 /gcc/gimple-loop-versioning.cc | |
parent | 8b6731e674c76cb48a417f2eef74ced92a17f469 (diff) | |
download | gcc-1396fa5b91cfa0b3708ec9df33c0bb84386081d6.zip gcc-1396fa5b91cfa0b3708ec9df33c0bb84386081d6.tar.gz gcc-1396fa5b91cfa0b3708ec9df33c0bb84386081d6.tar.bz2 |
Merge evrp uses of substitute_and_fold_engine into the engine itself.
This patch merges the evrp uses of the substitute and fold engine into
the engine itself, at least the parts that can be re-used by other
engine uses. It also adds a context parameter to get_value() for
further use.
gcc/
* gimple-loop-versioning.cc (loop_versioning::name_prop::get_value):
Add stmt parameter.
* gimple-ssa-evrp.c (class evrp_folder): New.
(class evrp_dom_walker): Remove.
(execute_early_vrp): Use evrp_folder instead of evrp_dom_walker.
* tree-ssa-ccp.c (ccp_folder::get_value): Add stmt parameter.
* tree-ssa-copy.c (copy_folder::get_value): Same.
* tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
Pass stmt to get_value.
(substitute_and_fold_engine::replace_phi_args_in): Same.
(substitute_and_fold_dom_walker::after_dom_children): Call
post_fold_bb.
(substitute_and_fold_dom_walker::foreach_new_stmt_in_bb): New.
(substitute_and_fold_dom_walker::propagate_into_phi_args): New.
(substitute_and_fold_dom_walker::before_dom_children): Adjust to
call virtual functions for folding, pre_folding, and post folding.
Call get_value with PHI. Tweak dump.
* tree-ssa-propagate.h (class substitute_and_fold_engine):
New argument to get_value.
New virtual function pre_fold_bb.
New virtual function post_fold_bb.
New virtual function pre_fold_stmt.
New virtual function post_new_stmt.
New function propagate_into_phi_args.
* tree-vrp.c (vrp_folder::get_value): Add stmt argument.
* vr-values.c (vr_values::extract_range_from_stmt): Adjust dump
output.
(vr_values::fold_cond): New.
(vr_values::simplify_cond_using_ranges_1): Call fold_cond.
* vr-values.h (class vr_values): Add
simplify_cond_using_ranges_when_edge_is_known.
gcc/testsuite/
* gcc.dg/tree-ssa/ssa-dse-30.c: Adjust test for folding of
memmove happening later.
Diffstat (limited to 'gcc/gimple-loop-versioning.cc')
-rw-r--r-- | gcc/gimple-loop-versioning.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/gimple-loop-versioning.cc b/gcc/gimple-loop-versioning.cc index ff6c561..002b2a6 100644 --- a/gcc/gimple-loop-versioning.cc +++ b/gcc/gimple-loop-versioning.cc @@ -277,7 +277,7 @@ private: { public: name_prop (loop_info &li) : m_li (li) {} - tree get_value (tree) FINAL OVERRIDE; + tree get_value (tree, gimple *) FINAL OVERRIDE; private: /* Information about the versioning we've performed on the loop. */ @@ -534,7 +534,8 @@ loop_versioning::lv_dom_walker::after_dom_children (basic_block bb) Return the new value if so, otherwise return null. */ tree -loop_versioning::name_prop::get_value (tree val) +loop_versioning::name_prop::get_value (tree val, + gimple *stmt ATTRIBUTE_UNUSED) { if (TREE_CODE (val) == SSA_NAME && bitmap_bit_p (&m_li.unity_names, SSA_NAME_VERSION (val))) |