From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1011) id 38AB0385801C; Tue, 9 Nov 2021 18:28:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 38AB0385801C MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Andrew Macleod To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-5070] Keep x_range_query NULL for global ranges. X-Act-Checkin: gcc X-Git-Author: Andrew MacLeod X-Git-Refname: refs/heads/master X-Git-Oldrev: 53080c5b4ce3742d20a0aa4643203215f20aadf6 X-Git-Newrev: 56af35de3d11960100996b96034dc9ccd7c75ca3 Message-Id: <20211109182800.38AB0385801C@sourceware.org> Date: Tue, 9 Nov 2021 18:28:00 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Nov 2021 18:28:00 -0000 https://gcc.gnu.org/g:56af35de3d11960100996b96034dc9ccd7c75ca3 commit r12-5070-g56af35de3d11960100996b96034dc9ccd7c75ca3 Author: Andrew MacLeod Date: Tue Nov 9 09:29:23 2021 -0500 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. Diff: --- gcc/function.c | 2 -- gcc/function.h | 11 ----------- gcc/gimple-range.cc | 5 +++-- gcc/value-query.cc | 8 -------- gcc/value-query.h | 16 ++++++++++++++++ 5 files changed, 19 insertions(+), 23 deletions(-) diff --git a/gcc/function.c b/gcc/function.c index af3d57b32a3..61b3bd036b8 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 36003e7576a..899430833ce 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 87dba6e81d8..a2b68b2bc80 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 17ebd86ce5f..b7d9e6653b1 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 5161d23714b..38e23bb357b 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);