aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range-path.cc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2022-05-09 15:35:14 -0400
committerAndrew MacLeod <amacleod@redhat.com>2022-05-17 14:38:03 -0400
commitb7501739f3b14ac7749aace93f636d021fd607f7 (patch)
tree5c359661a70191c7ee4cc92b6d001a78ff26c099 /gcc/gimple-range-path.cc
parent451894cadcf1210883ceefb2d69a0ed2d6a8cd8b (diff)
downloadgcc-b7501739f3b14ac7749aace93f636d021fd607f7.zip
gcc-b7501739f3b14ac7749aace93f636d021fd607f7.tar.gz
gcc-b7501739f3b14ac7749aace93f636d021fd607f7.tar.bz2
Add side effect infrastructure.
Replace the non-null procesing with a generic side effect implementation that can handle arbitrary side effects. * Makefile.in (OBJS): Add gimple-range-side-effect.o. * gimple-range-cache.cc (non_null_ref::non_null_ref): Delete. (non_null_ref::~non_null_ref): Delete. (non_null_ref::set_nonnull): Delete. (non_null_ref::non_null_deref_p): Delete. (non_null_ref::process_name): Delete. (ranger_cache::ranger_cache): Initialize m_exit object. (ranger_cache::fill_block_cache): Use m_exit object intead of nonnull. (ranger_cache::range_from_dom): Use side_effect class and m_exit object. (ranger_cache::update_to_nonnull): Delete. (non_null_loadstore): Delete. (ranger_cache::block_apply_nonnull): Delete. (ranger_cache::apply_side_effects): New. * gimple-range-cache.h (class non_null_ref): Delete. (non_null_ref::adjust_range): Delete. (class ranger_cache): Adjust prototypes, add side effect manager. * gimple-range-path.cc (path_range_query::range_defined_in_block): Use side effect manager for queries. (path_range_query::adjust_for_non_null_uses): Ditto. * gimple-range-path.h (class path_range_query): Delete non_null_ref. * gimple-range-side-effect.cc: New. * gimple-range-side-effect.h: New. * gimple-range.cc (gimple_ranger::gimple_ranger): Update contructor. (gimple_ranger::range_of_expr): Check def block for override value. (gimple_ranger::range_on_entry): Don't scan dominators for non-null. (gimple_ranger::range_on_edge): Check for outgoing side-effects. (gimple_ranger::register_side_effects): Call apply_side_effects. (enable_ranger): Update contructor. * gimple-range.h (class gimple_ranger): Update prototype. (enable_ranger): Update prototype. * tree-vrp.cc (execute_ranger_vrp): Invoke without immediate-use flag.
Diffstat (limited to 'gcc/gimple-range-path.cc')
-rw-r--r--gcc/gimple-range-path.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/gimple-range-path.cc b/gcc/gimple-range-path.cc
index ff39833..459d379 100644
--- a/gcc/gimple-range-path.cc
+++ b/gcc/gimple-range-path.cc
@@ -357,8 +357,8 @@ path_range_query::range_defined_in_block (irange &r, tree name, basic_block bb)
r.set_varying (TREE_TYPE (name));
}
- if (bb)
- m_non_null.adjust_range (r, name, bb, false);
+ if (bb && POINTER_TYPE_P (TREE_TYPE (name)))
+ m_ranger->m_cache.m_exit.maybe_adjust_range (r, name, bb);
if (DEBUG_SOLVER && (bb || !r.varying_p ()))
{
@@ -528,7 +528,7 @@ path_range_query::adjust_for_non_null_uses (basic_block bb)
else
r.set_varying (TREE_TYPE (name));
- if (m_non_null.adjust_range (r, name, bb, false))
+ if (m_ranger->m_cache.m_exit.maybe_adjust_range (r, name, bb))
set_cache (r, name);
}
}