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

--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #8)
>   cmp_8 = -_2;
>   _3 = cmp_8 & a_6(D);
> We convert that into:
> _2 * a_6(D);
> 
> And then have:
>   _11 = _2 + -1;
>   _5 = b_7(D) & _11;
> 
> This could be convert into:
> (_11 ^ 1) * b_7(D)
> 
> ```
> (simplify
>  (bit_and:c (convert? (plus zero_one_valued_p@0 integer_all_onesp)) @1)
>  (if (INTEGRAL_TYPE_P (type)
>       && INTEGRAL_TYPE_P (TREE_TYPE (@0))
>       && TREE_CODE (TREE_TYPE (@0)) != BOOLEAN_TYPE
>       /* Sign extending of the neg or a truncation of the neg
>          is needed. */
>       && (!TYPE_UNSIGNED (TREE_TYPE (@0))
>         || TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0))))
>  (mult (convert (bit_xor @0 { build_one_cst (TREE_TYPE (@0)); })) @1))
> ```

Which is what PR 110949 is asking for.

Reply via email to