https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120982

            Bug ID: 120982
           Summary: Incorrect alignment after vectorization
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kristerw at gcc dot gnu.org
  Target Milestone: ---

The vectorizer introduces incorrect alignment for the function below when
compiled for AArch64 with "-O3 -march=armv9.5-a -fno-strict-aliasing".

long a[1000];
int foo (int n)
{
  for (int i = 0; i < n; i++)
    if (a[i] == 0)
      return 1;
  return 0;
}

The vectorized memory accesses look like
  vect__1.10_30 = MEM <vector(2) long int> [(long int *)vectp_a.8_28];
  vectp_a.8_31 = vectp_a.8_28 + 16;
  vect__1.11_32 = MEM <vector(2) long int> [(long int *)vectp_a.8_31];
where get_object_alignment returns that both have 32-byte alignment.

Reply via email to