1 /* struct X is complete in this TU, this causes us to not merge Y and
2 thus assign different alias-sets to them. */
3 struct X
4 {
5 int i;
6 };
7 struct Y
8 {
9 struct X *p;
10 int i;
11 };
12 extern void abort (void);
13 extern void foo(struct Y *);
14 int __attribute__((noinline)) bar(struct Y *p)
15 {
16 p->i = 0;
17 foo (p);
18 return p->i;
19 }
20 int main()
21 {
22 struct Y y;
23 if (bar (&y) != 1)
24 abort ();
25 return 0;
26 }