1230429Skib/* { dg-do run } */ 2230429Skib/* { dg-options "-O2 -fipa-pta" } */ 3230429Skib 4230429Skibstruct Foo { 5230429Skib int *p; 6230429Skib int *q; 7230429Skib}; 8230429Skib 9230429Skibvoid __attribute__((noinline)) 10230429Skibbar (int **x) 11230429Skib{ 12230429Skib struct Foo *f = (struct Foo *)(x - 1); 13230429Skib *(f->p) = 0; 14230429Skib} 15230429Skib 16230429Skibint foo(void) 17230429Skib{ 18230429Skib struct Foo f; 19230429Skib int i = 1, j = 2; 20230429Skib f.p = &i; 21230429Skib f.q = &j; 22230429Skib bar(&f.q); 23230429Skib return i; 24230429Skib} 25230429Skib 26230429Skibextern void abort (void); 27230429Skibint main() 28230429Skib{ 29230429Skib if (foo () != 0) 30230429Skib abort (); 31230429Skib return 0; 32230429Skib} 33230429Skib