From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2136) id AA7D13838001; Wed, 21 Apr 2021 17:19:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AA7D13838001 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Aldy Hernandez To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/aldyh/heads/ranger-relational)] Resolve symbolics in loop info results. X-Act-Checkin: gcc X-Git-Author: Aldy Hernandez X-Git-Refname: refs/users/aldyh/heads/ranger-relational X-Git-Oldrev: d96133745bf2d83527bae9aa5049ffb8705a2a4c X-Git-Newrev: 9fc92dea23701792630d86a0c85d1356243ba7a0 Message-Id: <20210421171926.AA7D13838001@sourceware.org> Date: Wed, 21 Apr 2021 17:19:26 +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: Wed, 21 Apr 2021 17:19:26 -0000 https://gcc.gnu.org/g:9fc92dea23701792630d86a0c85d1356243ba7a0 commit 9fc92dea23701792630d86a0c85d1356243ba7a0 Author: Aldy Hernandez Date: Wed Apr 21 17:33:33 2021 +0200 Resolve symbolics in loop info results. Diff: --- gcc/gimple-range-fold.cc | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/gcc/gimple-range-fold.cc b/gcc/gimple-range-fold.cc index c8104058796..5d62bd62682 100644 --- a/gcc/gimple-range-fold.cc +++ b/gcc/gimple-range-fold.cc @@ -886,13 +886,22 @@ fold_using_range::range_of_ssa_name_with_loop_info (irange &r, tree name, tree min, max, type = TREE_TYPE (name); if (bounds_of_var_in_loop (&min, &max, &(src.m_query), l, phi, name)) { - // ?? We could do better here. Since MIN/MAX can only be an - // SSA, SSA +- INTEGER_CST, or INTEGER_CST, we could easily call - // the ranger and solve anything not an integer. if (TREE_CODE (min) != INTEGER_CST) - min = vrp_val_min (type); + { + src.m_query.range_of_expr (r, min, phi); + if (r.undefined_p ()) + min = vrp_val_min (type); + else + min = wide_int_to_tree (type, r.lower_bound ()); + } if (TREE_CODE (max) != INTEGER_CST) - max = vrp_val_max (type); + { + src.m_query.range_of_expr (r, max, phi); + if (r.undefined_p ()) + max = vrp_val_max (type); + else + max = wide_int_to_tree (type, r.upper_bound ()); + } r.set (min, max); } else