aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2021-11-09 09:29:23 -0500
committerAndrew MacLeod <amacleod@redhat.com>2021-11-09 13:27:42 -0500
commit56af35de3d11960100996b96034dc9ccd7c75ca3 (patch)
treecf373ec2c094fa6ef46252f65481e55c65181d27 /gcc
parent53080c5b4ce3742d20a0aa4643203215f20aadf6 (diff)
downloadgcc-56af35de3d11960100996b96034dc9ccd7c75ca3.zip
gcc-56af35de3d11960100996b96034dc9ccd7c75ca3.tar.gz
gcc-56af35de3d11960100996b96034dc9ccd7c75ca3.tar.bz2
Keep x_range_query NULL for global ranges.
Instead of x_range_query always pointing to an object, have it default to NULL and return a pointer to the global query in that case. * function.c (allocate_struct_function): Don't set x_range_query. * function.h (get_range_query): Move to value-query.h. * gimple-range.cc (enable_ranger): Check that query is currently NULL. (disable_ranger): Clear function current query field. * value-query.cc (get_global_range_query): Relocate to: * value-query.h (get_global_range_query): Here and inline. (get_range_query): Relocate here from function.h.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/function.c2
-rw-r--r--gcc/function.h11
-rw-r--r--gcc/gimple-range.cc5
-rw-r--r--gcc/value-query.cc8
-rw-r--r--gcc/value-query.h16
5 files changed, 19 insertions, 23 deletions
diff --git a/gcc/function.c b/gcc/function.c
index af3d57b..61b3bd0 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -4873,8 +4873,6 @@ allocate_struct_function (tree fndecl, bool abstract_p)
binding annotations among them. */
cfun->debug_nonbind_markers = lang_hooks.emits_begin_stmt
&& MAY_HAVE_DEBUG_MARKER_STMTS;
-
- cfun->x_range_query = &global_ranges;
}
/* This is like allocate_struct_function, but pushes a new cfun for FNDECL
diff --git a/gcc/function.h b/gcc/function.h
index 36003e7..8994308 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -719,15 +719,4 @@ extern const char *current_function_name (void);
extern void used_types_insert (tree);
-/* Returns the currently active range access class. When there is no active
- range class, global ranges are used. Never returns null. */
-
-ATTRIBUTE_RETURNS_NONNULL inline range_query *
-get_range_query (const struct function *fun)
-{
- return fun->x_range_query;
-}
-
-extern range_query *get_global_range_query ();
-
#endif /* GCC_FUNCTION_H */
diff --git a/gcc/gimple-range.cc b/gcc/gimple-range.cc
index 87dba6e..a2b68b2 100644
--- a/gcc/gimple-range.cc
+++ b/gcc/gimple-range.cc
@@ -467,6 +467,7 @@ enable_ranger (struct function *fun)
{
gimple_ranger *r;
+ gcc_checking_assert (!fun->x_range_query);
r = new gimple_ranger;
fun->x_range_query = r;
@@ -479,7 +480,7 @@ enable_ranger (struct function *fun)
void
disable_ranger (struct function *fun)
{
+ gcc_checking_assert (fun->x_range_query);
delete fun->x_range_query;
-
- fun->x_range_query = &global_ranges;
+ fun->x_range_query = NULL;
}
diff --git a/gcc/value-query.cc b/gcc/value-query.cc
index 17ebd86..b7d9e66 100644
--- a/gcc/value-query.cc
+++ b/gcc/value-query.cc
@@ -435,14 +435,6 @@ gimple_range_global (tree name)
global_range_query global_ranges;
-// Like get_range_query, but for accessing global ranges.
-
-range_query *
-get_global_range_query ()
-{
- return &global_ranges;
-}
-
bool
global_range_query::range_of_expr (irange &r, tree expr, gimple *stmt)
{
diff --git a/gcc/value-query.h b/gcc/value-query.h
index 5161d23..38e23bb 100644
--- a/gcc/value-query.h
+++ b/gcc/value-query.h
@@ -127,6 +127,22 @@ public:
};
extern global_range_query global_ranges;
+
+inline range_query *
+get_global_range_query ()
+{
+ return &global_ranges;
+}
+
+/* Returns the currently active range access class. When there is no active
+ range class, global ranges are used. Never returns null. */
+
+ATTRIBUTE_RETURNS_NONNULL inline range_query *
+get_range_query (const struct function *fun)
+{
+ return fun->x_range_query ? fun->x_range_query : &global_ranges;
+}
+
extern value_range gimple_range_global (tree name);
extern bool update_global_range (irange &r, tree name);