From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1011) id 33C763857801; Thu, 17 Jun 2021 00:11:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 33C763857801 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-1545] Range_on_edge in ranger_cache should return true for all ranges. X-Act-Checkin: gcc X-Git-Author: Andrew MacLeod X-Git-Refname: refs/heads/master X-Git-Oldrev: 487be9201c96d0a5c7c325339bc9c4916e933ed8 X-Git-Newrev: 8a22a10c7879109c3906e1b865c50fe236b89f41 Message-Id: <20210617001146.33C763857801@sourceware.org> Date: Thu, 17 Jun 2021 00:11:46 +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: Thu, 17 Jun 2021 00:11:46 -0000 https://gcc.gnu.org/g:8a22a10c7879109c3906e1b865c50fe236b89f41 commit r12-1545-g8a22a10c7879109c3906e1b865c50fe236b89f41 Author: Andrew MacLeod Date: Wed Jun 16 11:14:36 2021 -0400 Range_on_edge in ranger_cache should return true for all ranges. Range_on_edge was implemented in the cache to always return a range, but only returned true when the edge actally changed the range. Return true with any range that can be calculated. * gimple-range-cache.cc (ranger_cache::range_on_edge): Always return true when a range can be calculated. * gimple-range.cc (gimple_ranger::dump_bb): Check has_edge_range_p. Diff: --- gcc/gimple-range-cache.cc | 14 +++++--------- gcc/gimple-range.cc | 3 ++- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index 37e2acb19f9..cc2b7092dad 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -978,8 +978,7 @@ ranger_cache::range_of_expr (irange &r, tree name, gimple *stmt) } -// Implement range_on_edge. Return TRUE if the edge generates a range, -// otherwise false.. but still return a range. +// Implement range_on_edge. Always return the best available range. bool ranger_cache::range_on_edge (irange &r, edge e, tree expr) @@ -989,14 +988,11 @@ ranger_cache::range_of_expr (irange &r, tree name, gimple *stmt) exit_range (r, expr, e->src); int_range_max edge_range; if (m_gori.outgoing_edge_range_p (edge_range, e, expr, *this)) - { - r.intersect (edge_range); - return true; - } + r.intersect (edge_range); + return true; } - else - get_tree_range (r, expr, NULL); - return false; + + return get_tree_range (r, expr, NULL); } diff --git a/gcc/gimple-range.cc b/gcc/gimple-range.cc index 481b89b2b80..efb919f1595 100644 --- a/gcc/gimple-range.cc +++ b/gcc/gimple-range.cc @@ -1394,7 +1394,8 @@ gimple_ranger::dump_bb (FILE *f, basic_block bb) for (x = 1; x < num_ssa_names; x++) { tree name = gimple_range_ssa_p (ssa_name (x)); - if (name && m_cache.range_on_edge (range, e, name)) + if (name && gori ().has_edge_range_p (name, e) + && m_cache.range_on_edge (range, e, name)) { gimple *s = SSA_NAME_DEF_STMT (name); // Only print the range if this is the def block, or