On 8/4/20 8:55 AM, Richard Biener wrote:
On Tue, Aug 4, 2020 at 8:40 AM Aldy Hernandez via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:

VR_RANGE of [-INF,+INF] is canonicalized to VARYING at creation.
That is why the test now becomes varying_p().

gcc/ChangeLog:

         * vr-values.c (simplify_using_ranges::vrp_evaluate_conditional): Adjust
         for irange API.
---
  gcc/vr-values.c | 6 +-----
  1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/gcc/vr-values.c b/gcc/vr-values.c
index 1190fa96453..90ba8fca246 100644
--- a/gcc/vr-values.c
+++ b/gcc/vr-values.c
@@ -2495,11 +2495,7 @@ simplify_using_ranges::vrp_evaluate_conditional 
(tree_code code, tree op0,
        tree type = TREE_TYPE (op0);
        const value_range_equiv *vr0 = get_value_range (op0);

-      if (vr0->kind () == VR_RANGE
-         && INTEGRAL_TYPE_P (type)
-         && vrp_val_is_min (vr0->min ())
-         && vrp_val_is_max (vr0->max ())
-         && is_gimple_min_invariant (op1))
+      if (vr0->varying_p () && INTEGRAL_TYPE_P (type))

You dropped the is_gimple_min_invariant (op1) check.

Ah, thanks.

Pushed the attached patch.

Aldy
commit a44293840c0cb1376ac2f45212da7b8d5d21037a
Author: Aldy Hernandez <al...@redhat.com>
Date:   Tue Aug 4 11:19:39 2020 +0200

    Add is_gimple_min_invariant dropped from previous patch.
    
    gcc/ChangeLog:
    
            * vr-values.c (simplify_using_ranges::vrp_evaluate_conditional):
            Call is_gimple_min_invariant dropped from previous patch.

diff --git a/gcc/vr-values.c b/gcc/vr-values.c
index 2fd4956a2e4..511342f2f13 100644
--- a/gcc/vr-values.c
+++ b/gcc/vr-values.c
@@ -2495,7 +2495,9 @@ simplify_using_ranges::vrp_evaluate_conditional (tree_code code, tree op0,
       tree type = TREE_TYPE (op0);
       const value_range_equiv *vr0 = get_value_range (op0);
 
-      if (vr0->varying_p () && INTEGRAL_TYPE_P (type))
+      if (vr0->varying_p ()
+	  && INTEGRAL_TYPE_P (type)
+	  && is_gimple_min_invariant (op1))
 	{
 	  location_t location;
 

Reply via email to