aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range-cache.h
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2022-07-15 09:35:29 -0400
committerAndrew MacLeod <amacleod@redhat.com>2022-07-19 18:05:49 -0400
commitb0cc57cd76f511f29cab233654249817312ec2a6 (patch)
treec8b6efb6e3bdff95e91cbd6e1ec9bfb0a043c8c9 /gcc/gimple-range-cache.h
parentf838d15641d256e21ffc126c3277b290ed743928 (diff)
downloadgcc-b0cc57cd76f511f29cab233654249817312ec2a6.zip
gcc-b0cc57cd76f511f29cab233654249817312ec2a6.tar.gz
gcc-b0cc57cd76f511f29cab233654249817312ec2a6.tar.bz2
Remove recursion from range_from_dom.
Avoid calling range_of_dom recursively by putting all nodes to be calculated on the worklist, and figure out which kind they are when removed from the list. * gimple-range-cache.cc (ranger_cache::resolve_dom): New. (ranger_cache::range_from_dom): Put all nodes to be calculated in the worklist and resolve after the dom walk. * gimple-range-cache.h (resolve_dom): New prototype.
Diffstat (limited to 'gcc/gimple-range-cache.h')
-rw-r--r--gcc/gimple-range-cache.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/gimple-range-cache.h b/gcc/gimple-range-cache.h
index 0341192..45053b5 100644
--- a/gcc/gimple-range-cache.h
+++ b/gcc/gimple-range-cache.h
@@ -107,6 +107,7 @@ private:
RFD_FILL // Scan DOM tree, updating important nodes.
};
bool range_from_dom (vrange &r, tree name, basic_block bb, enum rfd_mode);
+ void resolve_dom (vrange &r, tree name, basic_block bb);
void range_of_def (vrange &r, tree name, basic_block bb = NULL);
void entry_range (vrange &r, tree expr, basic_block bb, enum rfd_mode);
void exit_range (vrange &r, tree expr, basic_block bb, enum rfd_mode);