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;

Reply via email to