| /* PR c/83844 */ |
| /* { dg-do compile { target int32plus } } */ |
| /* { dg-options "-O0 -Wall" } */ |
| /* { dg-require-effective-target alloca } */ |
| |
| typedef unsigned long long __u64 __attribute__((aligned(4),warn_if_not_aligned(8))); |
| void bar (void *, void *, void *); |
| |
| void |
| foo (int n) |
| { |
| struct A |
| { |
| int i1; |
| int i2; |
| int i3[n]; |
| __u64 x; /* { dg-warning "in 'struct A' may not be aligned to 8" } */ |
| } __attribute__((aligned (8))); |
| struct B |
| { |
| int i1; |
| int i2; |
| long long i3[n]; |
| __u64 x; |
| } __attribute__((aligned (8))); |
| struct C |
| { |
| int i1; |
| int i2; |
| int i3[2 * n]; |
| __u64 x; |
| } __attribute__((aligned (8))); |
| struct A a; |
| struct B b; |
| struct C c; |
| bar (&a, &b, &c); |
| } |