/* { dg-do run } */
struct X {
int i;
int a[4];
} m;
int a[4];
int __attribute__((noinline)) foo(int b)
{
int (*p)[4] = b ? &a : &m.a;
a[3] = 0;
(*p)[3] = 1;
return (*p)[3] + (*p)[2] + (*p)[1] + a[0] + a[3];
}
extern void abort (void);
int main()
{
int i;
for (i = 0; i < 4; ++i)
a[i] = 0;
if (foo(1) != 2)
abort ();
return 0;
}