Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/c-c++-common/Waddress-of-packed-member-2.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/c-c++-common/Waddress-of-packed-member-2.c Thu Feb 13 11:34:05 2020 +0900 @@ -0,0 +1,58 @@ +/* { dg-do compile } */ +/* { dg-options "-Waddress-of-packed-member" } */ + +struct r { + int a[10]; + int b[10][10]; + int ****i4; +}; + +struct s { + char c; + struct r p; +} __attribute__((packed)); + +struct t { + char c; + struct r p __attribute__((packed)); + struct r u; +}; + +struct s s0; +struct t t0; +int *i0; + +void foo (void) +{ + i0 = s0.p.a; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = t0.p.a; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = s0.p.b[0]; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = t0.p.b[0]; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = &s0.p.a[0]; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = &t0.p.a[0]; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = &s0.p.b[0][0]; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = &t0.p.b[0][0]; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = *s0.p.b; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = *t0.p.b; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = &**s0.p.b; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = &**t0.p.b; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = **&s0.p.b; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = **&t0.p.b; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = &*s0.p.a; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = &*t0.p.a; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = *&s0.p.a; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = *&t0.p.a; /* { dg-warning "may result in an unaligned pointer value" } */ + i0 = t0.u.a; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = t0.u.b[0]; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = &t0.u.a[0]; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = &t0.u.b[0][0]; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = *t0.u.b; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = &*t0.u.a; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = &**t0.u.b; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = ***s0.p.i4; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = ***t0.p.i4; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = ****&s0.p.i4; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = ****&t0.p.i4; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = &****s0.p.i4; /* { dg-bogus "may result in an unaligned pointer value" } */ + i0 = &****t0.p.i4; /* { dg-bogus "may result in an unaligned pointer value" } */ +}