Do not special case pointers in value_range_base::set.
authorAldy Hernandez <aldyh@redhat.com>
Mon, 4 Nov 2019 22:57:51 +0000 (22:57 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Mon, 4 Nov 2019 22:57:51 +0000 (22:57 +0000)
From-SVN: r277799

gcc/ChangeLog
gcc/tree-vrp.c

index a11c08f17deb85b03822c366a93193a439ac7944..254b3950a8e0b27320f2f84ead5ad624c498baee 100644 (file)
@@ -1,3 +1,7 @@
+2019-11-04  Aldy Hernandez  <aldyh@redhat.com>
+
+       * tree-vrp.c (value_range_base::set): Do not special case pointers.
+
 2019-11-04  Tobias Burnus  <tobias@codesourcery.com>
 
        * config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): New function.
index 0a0d7d760a7b001f82f2b777aabda18b161187df..452895bfc2481c31654460a57886f2a69dae4f5d 100644 (file)
@@ -793,10 +793,8 @@ value_range_base::set (enum value_range_kind kind, tree min, tree max)
     {
       /* For -fstrict-enums we may receive out-of-range ranges so consider
          values < -INF and values > INF as -INF/INF as well.  */
-      bool is_min = (INTEGRAL_TYPE_P (type)
-                    && tree_int_cst_compare (min, TYPE_MIN_VALUE (type)) <= 0);
-      bool is_max = (INTEGRAL_TYPE_P (type)
-                    && tree_int_cst_compare (max, TYPE_MAX_VALUE (type)) >= 0);
+      bool is_min = vrp_val_is_min (min);
+      bool is_max = vrp_val_is_max (max);
 
       if (is_min && is_max)
        {
@@ -816,10 +814,7 @@ value_range_base::set (enum value_range_kind kind, tree min, tree max)
            min = max = vrp_val_min (TREE_TYPE (min));
          kind = VR_RANGE;
        }
-      else if (is_min
-              /* Allow non-zero pointers to be normalized to [1,MAX].  */
-              || (POINTER_TYPE_P (TREE_TYPE (min))
-                  && integer_zerop (min)))
+      else if (is_min)
         {
          tree one = build_int_cst (TREE_TYPE (max), 1);
          min = int_const_binop (PLUS_EXPR, max, one);