| /* PR c/51628. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O" } */ |
| |
| struct pair_t |
| { |
| char x; |
| int i; |
| } __attribute__((packed, aligned (4))); |
| |
| extern struct pair_t p; |
| extern int *x; |
| extern void bar (int *); |
| |
| int *addr = &p.i; |
| /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */ |
| |
| int * |
| foo (void) |
| { |
| struct pair_t arr[2] = { { 1, 10 }, { 2, 20 } }; |
| int *p0, *p1; |
| p0 = &arr[0].i; |
| /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */ |
| bar (p0); |
| p1 = &arr[1].i; |
| /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */ |
| bar (p1); |
| bar (&p.i); |
| /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */ |
| x = &p.i; |
| /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */ |
| return &p.i; |
| /* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */ |
| } |