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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |8.0

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Marc Glisse from comment #2)
> 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)

and/or make two_valued_val_range_p return false for !INTEGRAL_TYPE_P

the above and/or this is pre-approved.

Reply via email to