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