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

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Changing the match pattern for conversions to non-recusive fixes the issue.

That is:
/* A conversion from an zero_one_valued_p is still a [0,1].
   This is useful when the range of a variable is not known */
/* Note this matches can't be recusive because of the way VN handles
   nop conversions being equivalent and then recusive between them. */
(match zero_one_valued_p
 (convert@0 @1)
 (if (INTEGRAL_TYPE_P (TREE_TYPE (@1))
      && (TYPE_UNSIGNED (TREE_TYPE (@1))
          || TYPE_PRECISION (TREE_TYPE (@1)) > 1)
      && wi::leu_p (tree_nonzero_bits (@1), 1))))

Reply via email to