1 /* { dg-do run } */ 2 /* { dg-options "-fschedule-insns" { target scheduling } } */ 3 4 extern void abort (void); 5 6 struct S { 7 int i; 8 int j; 9 }; 10 11 struct U { 12 struct S s; 13 } __attribute__((may_alias)); 14 15 int __attribute__((noinline,noclone)) foo(struct U * p,struct U * q)16foo (struct U *p, struct U *q) 17 { 18 int i; 19 q->s.j = 1; 20 i = p->s.i; 21 return i; 22 } 23 main()24int main() 25 { 26 int a[3]; 27 int *p = a; 28 p[1] = 0; 29 if (foo ((struct U *)(p + 1), (struct U *)p) != 1) 30 abort (); 31 return 0; 32 } 33