1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
struct s1;
typedef void (*f1)(struct s1);
typedef struct s1 (*f2)();
struct s2;
// struct s4 has weak edge to struct s3
struct s4 {
struct s3* a;
};
struct s3 {
struct s2* x1;
};
// struct s2 has strong edge to struct s3
struct s2 {
struct s3 a;
};
struct t1;
typedef struct t1 t1_t;
struct t1 {
const struct t2* t;
};
struct t2 {
t1_t t;
};
int main() {
static f1 f1 = 0;
static f2 f2 = 0;
static struct s4 s4;
static struct s2 s2;
static struct s3 s3;
static struct t1 t1;
static struct t2 t2;
return 0;
}