https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121638
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Version|unknown |16.0
Last reconfirmed| |2025-08-22
Status|UNCONFIRMED |NEW
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed. The vectorizer goes wrong:
```
<bb 3> [local count: 4294967269]:
# d_29 = PHI <d_8(12), 0(2)>
# ivtmp_39 = PHI <ivtmp_25(12), 16(2)>
# vect_vec_iv_.15_31 = PHI <_13(12), { 0, 1, 2, 3 }(2)>
# vectp_e.16_19 = PHI <vectp_e.16_38(12), e_6(2)>
# ivtmp_18 = PHI <ivtmp_34(12), 0(2)>
d_8 = d_29 + 1;
_9 = (long unsigned int) d_29;
_10 = _9 * 4;
_11 = e_6 + _10;
MEM <vector(4) int> [(int *)vectp_e.16_19] = vect_vec_iv_.15_31;
ivtmp_25 = ivtmp_39 - 1;
_13 = vect_vec_iv_.15_31 + { 4, 4, 4, 4 };
vectp_e.16_38 = vectp_e.16_19 + 16;
ivtmp_34 = ivtmp_18 + 1;
if (ivtmp_34 < 4)
goto <bb 12>; [77.75%]
else
goto <bb 4>; [22.25%]
<bb 12> [local count: 3339337035]:
goto <bb 3>; [100.00%]
<bb 4> [local count: 955630224]:
# d_21 = PHI <d_8(3)>
# vect_vec_iv_.15_16 = PHI <vect_vec_iv_.15_31(3)>
_1 = BIT_FIELD_REF <vect_vec_iv_.15_16, 32, 96>;
d_40 = _1;
if (d_21 != 16)
```
The problem is d_21/d_8 is not vectorized. it should have been _13[3] like how
d_40 is is vect_vec_iv_.15_31[3].