extern const int v1[];
const int __attribute__((aligned(16))) v1[] = { 0 };
extern const int __attribute__((aligned(16))) v2[];
const int v2[] = { 0 };
extern const int __attribute__((aligned(16))) v3[];
const int __attribute__((aligned(16))) v3[] = { 0 };
const int __attribute__((aligned(16))) v4[] = { 0 };
int test[(__alignof__ (v4) != __alignof__ (v1)/* { dg-bogus "is negative" } */
|| __alignof__ (v4) != __alignof__ (v2)
|| __alignof__ (v4) != __alignof__ (v3)) ? -1 : 0];
fails with gcc 4.7, worked with 4.6, but it looks like the actual bug is of an earlier date, when DECL_USER_ALIGN bit has been moved from tree_decl_common etc.
down into tree_base.
extern const int v1[]; _((aligned( 16))) v1[] = { 0 }; _((aligned( 16))) v2[]; _((aligned( 16))) v3[]; _((aligned( 16))) v3[] = { 0 }; _((aligned( 16))) v4[] = { 0 };
const int __attribute_
extern const int __attribute_
const int v2[] = { 0 };
extern const int __attribute_
const int __attribute_
const int __attribute_
int test[(__alignof__ (v4) != __alignof__ (v1)/* { dg-bogus "is negative" } */
|| __alignof__ (v4) != __alignof__ (v2)
|| __alignof__ (v4) != __alignof__ (v3)) ? -1 : 0];
fails with gcc 4.7, worked with 4.6, but it looks like the actual bug is of an earlier date, when DECL_USER_ALIGN bit has been moved from tree_decl_common etc.
down into tree_base.