https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81450
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- > typedef double __attribute__((aligned (32))) AlignedDouble; > AlignedDouble* A = aligned_doubles( size * size ); > A[j + i * size] += alpha; here you say that &A[j+i*size] is aligned to 32 bytes because you dereference A + j + i*size which is still of type AlignedDouble. Maybe surprising but this it is.