https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112736
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|vectorizer is introducing |[14 Regression] vectorizer
|out of bounds memory access |is introducing out of
| |bounds memory access
Known to work| |13.1.0
Known to fail| |14.0
Last reconfirmed| |2023-11-27
Keywords| |needs-bisection, wrong-code
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Target Milestone|--- |14.0
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
vect__14.12_2 = MEM <vector(4) int> [(int *)&b + -4B];
vect__14.14_16 = VEC_PERM_EXPR <vect__14.12_2, vect__14.12_2, { 3, 3, 3, 3
}>;
This might be ok, unless before b is unaligned and what is before is unmapped.
# vectp_b.10_23 = PHI <vectp_b.10_13(5), &MEM <int[3]> [(void *)&b + -4B](2)>
vect__14.12_1 = MEM <vector(4) int> [(int *)vectp_b.10_23];
vect__14.13_10 = VEC_PERM_EXPR <vect__14.12_1, vect__14.12_1, { 3, 2, 1, 0
}>;
vectp_b.10_11 = vectp_b.10_23 + 12;
vect__14.14_12 = VEC_PERM_EXPR <vect__14.13_10, vect__14.13_10, { 0, 0, 0, 0
}>;
Note GCC 13 was ok:
_1 = b[2];
_2 = {_1, _1, _1, _1};
MEM <vector(4) int> [(int *)&c + 40B] = _2;