[Bug tree-optimization/71031] [6/7 Regression] ICE in extract_range_from_binary_expr_1, at tree-vrp.c:2535 w/ -Os

mpolacek at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu May 19 11:44:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71031

--- Comment #12 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
I'm testing this then:

--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -2525,14 +2525,19 @@ extract_range_from_binary_expr_1 (value_range *vr,
          set_value_range_to_varying (vr);
          return;
        }
+         else if ((min_ovf == 1 && max_ovf == 0)
+              || (min_ovf == 0 && max_ovf == -1))
+       {
+         /* Min overflow or max underflow., drop to VR_VARYING.  */
+         set_value_range_to_varying (vr);
+         return;
+       }
          else
        {
          /* Min underflow or max overflow.  The range kind
             changes to VR_ANTI_RANGE.  */
          bool covers = false;
          wide_int tem = tmin;
-         gcc_assert ((min_ovf == -1 && max_ovf == 0)
-                 || (max_ovf == 1 && min_ovf == 0));
          type = VR_ANTI_RANGE;
          tmin = tmax + 1;
          if (wi::cmp (tmin, tmax, sgn) < 0)


More information about the Gcc-bugs mailing list