blob: 95a376664da46df463bd3c08948c38585b159ddd [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-Waddress-of-packed-member" } */
struct t {
char a;
int b;
int *c;
int d[10];
int *e[1];
_Complex float f;
} __attribute__((packed));
struct t t0;
struct t t10[10];
struct t t100[10][10];
struct t *t1;
struct t **t2;
struct t *bar();
struct t (*baz())[10];
struct t (*bazz())[10][10];
int *i1;
int **i2;
float f0, *f1;
__UINTPTR_TYPE__ u1;
__UINTPTR_TYPE__ baa();
void foo (void)
{
t1 = &t0; /* { dg-bogus "may result in an unaligned pointer value" } */
t1 = t10; /* { dg-bogus "may result in an unaligned pointer value" } */
t2 = &t1; /* { dg-bogus "may result in an unaligned pointer value" } */
t2 = t2; /* { dg-bogus "may result in an unaligned pointer value" } */
t2 = (struct t**)t2; /* { dg-bogus "may result in an unaligned pointer value" } */
t1 = (struct t*)t2; /* { dg-bogus "may result in an unaligned pointer value" } */
t1 = bar(); /* { dg-bogus "may result in an unaligned pointer value" } */
t1 = (struct t*) baz(); /* { dg-bogus "may result in an unaligned pointer value" } */
t1 = (struct t*) bazz(); /* { dg-bogus "may result in an unaligned pointer value" } */
t1 = *baz(); /* { dg-bogus "may result in an unaligned pointer value" } */
t1 = **bazz(); /* { dg-bogus "may result in an unaligned pointer value" } */
t1 = (struct t*) baa(); /* { dg-bogus "may result in an unaligned pointer value" } */
t2 = (struct t**) baa(); /* { dg-bogus "may result in an unaligned pointer value" } */
i1 = t0.c; /* { dg-bogus "may result in an unaligned pointer value" } */
i1 = t1->c; /* { dg-bogus "may result in an unaligned pointer value" } */
i1 = t10[0].c; /* { dg-bogus "may result in an unaligned pointer value" } */
u1 = (__UINTPTR_TYPE__) &t0; /* { dg-bogus "may result in an unaligned pointer value" } */
u1 = (__UINTPTR_TYPE__) t1; /* { dg-bogus "may result in an unaligned pointer value" } */
i1 = t10[0].e[0]; /* { dg-bogus "may result in an unaligned pointer value" } */
i1 = *&t0.c; /* { dg-bogus "may result in an unaligned pointer value" } */
i1 = *&*&t0.c; /* { dg-bogus "may result in an unaligned pointer value" } */
f0 = __real__ t0.f; /* { dg-bogus "may result in an unaligned pointer value" } */
f0 = __imag__ t0.f; /* { dg-bogus "may result in an unaligned pointer value" } */
f0 = *&__real__ t0.f; /* { dg-bogus "may result in an unaligned pointer value" } */
f0 = *&__imag__ t0.f; /* { dg-bogus "may result in an unaligned pointer value" } */
i1 = (&t0.c, (int*) 0); /* { dg-bogus "may result in an unaligned pointer value" } */
t2 = (struct t**) t10; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
t2 = (struct t**) t100; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
t2 = (struct t**) t1; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
t2 = (struct t**) bar(); /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
t2 = (struct t**) baz(); /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
t2 = (struct t**) bazz(); /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = &t0.b; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = &t1->b; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = &t10[0].b; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = t0.d; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = t1->d; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = t10[0].d; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = (int*) &t10[0].e[0]; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = (int*) t10[0].e; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i2 = &t10[0].e[0]; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i2 = t10[0].e; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i2 = &*&t0.c; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i2 = &*&*&t0.c; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
f1 = &__real__ t0.f; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
f1 = &__imag__ t0.f; /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = (0, (int*) &t0.c); /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = (int*) (0, &t0.c); /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = (0, (int*)(0, &t0.c));/* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
i1 = (int*)(0, 1, (void*)(2, 3, (int*)(4, 5, &t0.c)));/* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } } */
}