1struct M;
2
3struct S {
4  int x;
5  M * m;
6};
7
8struct M {
9  int a;
10  S * s;
11};
12
13struct T {
14  S s;
15  int a;
16};
17
18struct U {
19  struct {
20    S s;
21  };
22  int r;
23};
24
25void reg1(S*, T*, T*) { }
26void reg2(U*) { }
27