/* { dg-do run } */ /* { dg-options "-fschedule-insns" { target scheduling } } */ extern void abort (void); struct S { int i; int j; }; struct U { struct S s; } __attribute__((may_alias)); int __attribute__((noinline,noclone)) foo (struct U *p, struct U *q) { int i; q->s.j = 1; i = p->s.i; return i; } int main() { int a[3]; int *p = a; p[1] = 0; if (foo ((struct U *)(p + 1), (struct U *)p) != 1) abort (); return 0; }