diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr83844.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/pr83844.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr83844.c b/gcc/testsuite/gcc.dg/pr83844.c new file mode 100644 index 0000000..c6db68a --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr83844.c @@ -0,0 +1,36 @@ +/* PR c/83844 */ +/* { dg-do compile } */ +/* { dg-options "-O0 -Wall" } */ + +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); +} |