1/* PR tree-optimization/22043 */
2
3extern void abort (void);
4
5struct A { int i; int j; int k; int l; };
6struct B { struct A a; int r[1]; };
7struct C { struct A a; int r[0]; };
8struct D { struct A a; int r[]; };
9
10void
11foo (struct A *x)
12{
13  if (x->i != 0 || x->j != 5 || x->k != 0 || x->l != 0)
14    abort ();
15}
16
17int
18main ()
19{
20  struct B b = { .a.j = 5 };
21  struct C c = { .a.j = 5 };
22  struct D d = { .a.j = 5 };
23  foo (&b.a);
24  foo (&c.a);
25  foo (&d.a);
26  return 0;
27}
28