1 /* { dg-do run } */
2
3 #include <stdlib.h>
4
5 struct P {
6 long v;
7 struct P *n;
8 };
9
10 struct F {
11 long x;
12 struct P fam[];
13 };
14
15 int __attribute__((noipa))
16 f(struct F *f, int i)
17 {
18 struct P *p = f->fam;
19 asm("" : "+r"(f): "r"(p));
20 p->v = 0;
21 p->n = 0;
22 return f->fam->n != 0;
23 }
24
25 int
26 main()
27 {
28 struct F *m = malloc (sizeof (long) + 2 * sizeof (struct P));
29 m->fam[0].n = &m->fam[1];
30 if (f (m, 0))
31 abort ();
32 return 0;
33 }