/* PR c/53037. */ /* { dg-do compile } */ /* { dg-options "-O0" } */ typedef unsigned long long __u64 __attribute__((aligned(4),warn_if_not_aligned(8))); struct foo1 /* { dg-warning "alignment 4 of 'foo1' is less than 8" } */ { int i1; int i2; int i3; __u64 x; /* { dg-warning "'foo1::x' offset 12 in 'foo1' isn't aligned to 8" } */ }; struct foo2 { int i1; int i2; int i3; __u64 x; /* { dg-warning "'foo2::x' offset 12 in 'foo2' isn't aligned to 8" } */ } __attribute__((aligned(8))); struct foo3 /* { dg-warning "alignment 4 of 'foo3' is less than 8" } */ { int i1; int i3; __u64 x; }; struct foo4 { int i1; int i2; __u64 x; } __attribute__((aligned(8))); struct foo5 /* { dg-warning "alignment 4 of 'foo5' is less than 16" } */ { int i1; int x __attribute__((warn_if_not_aligned(16))); /* { dg-warning "'foo5::x' offset 4 in 'foo5' isn't aligned to 16" } */ }; struct foo6 { int i1; int x __attribute__((warn_if_not_aligned(16))); /* { dg-warning "'foo6::x' offset 4 in 'foo6' isn't aligned to 16" } */ } __attribute__((aligned(16))); struct foo7 { int i1; int i2; int i3; int i4; int x __attribute__((warn_if_not_aligned(16))); } __attribute__((aligned(16))); union bar1 /* { dg-warning "alignment 4 of 'bar1' is less than 8" } */ { int i1; __u64 x; }; union bar2 { int i1; __u64 x; } __attribute__((aligned(8))); union bar3 /* { dg-warning "alignment 4 of 'bar3' is less than 16" } */ { int i1; int x __attribute__((warn_if_not_aligned(16))); }; union bar4 { int i1; int x __attribute__((warn_if_not_aligned(16))); } __attribute__((aligned(16)));