/* { dg-do run } */ /* { dg-options "-O3 -fno-strict-aliasing" } */ struct s { __INT32_TYPE__ x; } __attribute__((packed)); struct t { __INT32_TYPE__ x; }; void __attribute__((noinline,noipa)) swap(struct s* p, struct t* q) { p->x = q->x; q->x = p->x; } int main() { struct t a[2]; a[0].x = 0x12345678; a[1].x = 0x98765432; swap ((struct s *)((char *)a + 1), a); if (a[0].x != 0x12345678) __builtin_abort (); return 0; }