re PR tree-optimization/88274 (ICE in check, at tree-vrp.c:188)
authorRichard Biener <rguenther@suse.de>
Fri, 30 Nov 2018 10:37:39 +0000 (10:37 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 30 Nov 2018 10:37:39 +0000 (10:37 +0000)
2018-11-30  Richard Biener  <rguenther@suse.de>

PR tree-optimization/88274
* tree-vrp.c (ranges_from_anti_range): Fix handling of
TYPE_MIN/MAX_VALUE.

From-SVN: r266659

gcc/ChangeLog
gcc/tree-vrp.c

index 76db5d562192d18b8b67378bc3d252b00a81fd2e..de0acb9d50dd898962475bdd4541e6181ea44dfa 100644 (file)
@@ -1,3 +1,9 @@
+2018-11-30  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/88274
+       * tree-vrp.c (ranges_from_anti_range): Fix handling of
+       TYPE_MIN/MAX_VALUE.
+
 2018-11-29  Andi Kleen  <ak@linux.intel.com>
 
        * config/i386/i386.c (current_fentry_section): Add.
index eb4d5b0249dda4b6fbd98fe14481ee15f01253ab..aa6309e9e7bd11cfead244f8317cdf9c1afba27f 100644 (file)
@@ -1249,14 +1249,14 @@ ranges_from_anti_range (const value_range_base *ar,
       || !vrp_val_max (type))
     return false;
 
-  if (!vrp_val_is_min (ar->min ()))
-    *vr0 = value_range (VR_RANGE,
-                       vrp_val_min (type),
-                       wide_int_to_tree (type, wi::to_wide (ar->min ()) - 1));
-  if (!vrp_val_is_max (ar->max ()))
-    *vr1 = value_range (VR_RANGE,
-                       wide_int_to_tree (type, wi::to_wide (ar->max ()) + 1),
-                       vrp_val_max (type));
+  if (tree_int_cst_lt (vrp_val_min (type), ar->min ()))
+    vr0->set (VR_RANGE,
+             vrp_val_min (type),
+             wide_int_to_tree (type, wi::to_wide (ar->min ()) - 1));
+  if (tree_int_cst_lt (ar->max (), vrp_val_max (type)))
+    vr1->set (VR_RANGE,
+             wide_int_to_tree (type, wi::to_wide (ar->max ()) + 1),
+             vrp_val_max (type));
   if (vr0->undefined_p ())
     {
       *vr0 = *vr1;