https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117890
--- Comment #7 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
(In reply to Hu Lin from comment #5)
> Seems that commit (d2f9159cfe7ea904e6476cabefea0c6ac9532e29) fixed this
> issue. The wrong pattern is no longer generated, although I don't understand
> why for the moment.
That said... given:
<bb 23> [local count: 761014530]:
_63 = _29 >> 2;
_64 = ~_63;
_65 = (_Bool) _64;
if (_65 != 0)
goto <bb 18>; [5.50%]
else
goto <bb 3>; [94.50%]
<bb 18> [local count: 223857727]:
# vect_vec_iv_.29_45 = PHI <{ 5, 6 }(3), { 1, 2 }(7), { 3, 4 }(23)>
# vect_vec_iv_.31_50 = PHI <{ 3, 2 }(3), { 7, 6 }(7), { 5, 4 }(23)>
_51 = BIT_FIELD_REF <vect_vec_iv_.31_50, 32, 0>;
_46 = BIT_FIELD_REF <vect_vec_iv_.29_45, 32, 0>;
goto <bb 17>; [100.00%]
Are you sure it's not g:51291ad0f1f89a81de917110af96e019dcd5690c that fixed it?
That would make more sense.
The code doesn't have a vector comparison there. so it feels more like PR117140