https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111863
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #6) > Oh I see the issue: > ``` > _8 = _7 & 2; > _10 = _8 != 1; > > ``` > > There needs to be a check that 1 here is the same as 2 or 0 ... Wait I have that check: if (wi::popcount (nz) == 1 && (integer_zerop (arg1) || wi::to_wide (arg1) == nz)) Why is that not working ...