1 extern int fun(int);
2
3 typedef int (*fun_t)(int);
4
fa(void)5 fun_t fa(void) { return &fun; }
f0(void)6 fun_t f0(void) { return fun; }
f1(void)7 fun_t f1(void) { return *fun; }
8
9 /*
10 * check-name: degen-function
11 * check-command: test-linearize -m64 -Wno-decl -fdump-ir=linearize $file
12 * check-assert: sizeof(void *) == 8
13 *
14 * check-output-start
15 fa:
16 .L0:
17 <entry-point>
18 symaddr.64 %r1 <- fun
19 phisrc.64 %phi1(return) <- %r1
20 br .L1
21
22 .L1:
23 phi.64 %r2 <- %phi1(return)
24 ret.64 %r2
25
26
27 f0:
28 .L2:
29 <entry-point>
30 symaddr.64 %r3 <- fun
31 phisrc.64 %phi2(return) <- %r3
32 br .L3
33
34 .L3:
35 phi.64 %r4 <- %phi2(return)
36 ret.64 %r4
37
38
39 f1:
40 .L4:
41 <entry-point>
42 symaddr.64 %r5 <- fun
43 phisrc.64 %phi3(return) <- %r5
44 br .L5
45
46 .L5:
47 phi.64 %r6 <- %phi3(return)
48 ret.64 %r6
49
50
51 * check-output-end
52 */
53