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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|12.5                        |15.0
            Summary|[12/13/14/15 Regression]    |[15 Regression] ice in
                   |ice in decompose, at        |decompose, at
                   |wide-int.h:1049             |wide-int.h:1049

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #3)
> Confirmed.  This is likely from a new match.pd pattern.
> 
> * X == C (or X & Z == Y | C) is impossible if ~nonzero(X) & C != 0.  */
> (for cmp (eq ne)
>  (simplify
>   (cmp:c (with_possible_nonzero_bits2 @0) (with_certain_nonzero_bits2 @1))
>   (if (wi::bit_and_not (wi::to_wide (@1), get_nonzero_bits (@0)) != 0)
>    { constant_boolean_node (cmp == NE_EXPR, type); })))
> 
> the issue is that with_possible_nonzero_bits2 also supports SSA_NAMEs, so
> @1 cannot be used like this.

OK, I misparsed with_certain_nonzero_bits2 as with_possible_nonzero_bits2,
the pattern looks correct.

Reply via email to