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

--- Comment #2 from Marc Glisse <glisse at gcc dot gnu.org> ---
two_valued_val_range_p doesn't work on pointers, it uses vrp_val_min on the
type of the arguments. Probably:

--- vr-values.c (revision 255021)
+++ vr-values.c (working copy)
@@ -4091,7 +4091,7 @@ vr_values::simplify_stmt_using_ranges (g
         LHS = VAR == VAL1 ? (VAL1 BINOP CST) : (VAL2 BINOP CST) */

       if (TREE_CODE_CLASS (rhs_code) == tcc_binary
-         && INTEGRAL_TYPE_P (TREE_TYPE (lhs))
+         && INTEGRAL_TYPE_P (TREE_TYPE (rhs1))
          && ((TREE_CODE (rhs1) == INTEGER_CST
               && TREE_CODE (rhs2) == SSA_NAME)
              || (TREE_CODE (rhs2) == INTEGER_CST

(or keep both tests)

Reply via email to