aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.cc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2024-06-17 11:32:51 -0400
committerAndrew MacLeod <amacleod@redhat.com>2024-06-21 08:55:21 -0400
commit68532d3c63725777aaa63b9ac2e4a086c6359bfa (patch)
tree3ce25ae8c86c0ec7634bd1bd523e2006b8350510 /gcc/tree-vrp.cc
parentffaa806c302cca23b36173b65140a1ee1b1826af (diff)
downloadgcc-68532d3c63725777aaa63b9ac2e4a086c6359bfa.zip
gcc-68532d3c63725777aaa63b9ac2e4a086c6359bfa.tar.gz
gcc-68532d3c63725777aaa63b9ac2e4a086c6359bfa.tar.bz2
Change fast VRP algorithm
Change the fast VRP algorithm to track contextual ranges active within each basic block. * gimple-range.cc (dom_ranger::dom_ranger): Create a block vector. (dom_ranger::~dom_ranger): Dispose of the block vector. (dom_ranger::edge_range): Delete. (dom_ranger::range_on_edge): Combine range in src BB with any range gori_nme_on_edge returns. (dom_ranger::range_in_bb): Combine global range with any active contextual range for an ssa-name. (dom_ranger::range_of_stmt): Fix non-ssa LHS case, use fur_depend for folding so relations can be registered. (dom_ranger::maybe_push_edge): Delete. (dom_ranger::pre_bb): Create incoming contextual range vector. (dom_ranger::post_bb): Free contextual range vector. * gimple-range.h (dom_ranger::edge_range): Delete. (dom_ranger::m_e0): Delete. (dom_ranger::m_e1): Delete. (dom_ranger::m_bb): New. (dom_ranger::m_pop_list): Delete. * tree-vrp.cc (execute_fast_vrp): Enable relation oracle.
Diffstat (limited to 'gcc/tree-vrp.cc')
-rw-r--r--gcc/tree-vrp.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/tree-vrp.cc b/gcc/tree-vrp.cc
index a3b1a5c..6e96b63 100644
--- a/gcc/tree-vrp.cc
+++ b/gcc/tree-vrp.cc
@@ -1284,11 +1284,13 @@ execute_fast_vrp (struct function *fun, bool final_p)
gcc_checking_assert (!fun->x_range_query);
fun->x_range_query = &dr;
+ get_range_query (fun)->create_relation_oracle ();
folder.substitute_and_fold ();
if (folder.m_unreachable)
folder.m_unreachable->remove ();
+ get_range_query (fun)->destroy_relation_oracle ();
fun->x_range_query = NULL;
return 0;
}