1 #include <stdio.h>
2
3 /*
4 * Normal functions.
5 * i.e. all arguments are used.
6 */
arg1(int a1)7 int arg1(int a1)
8 {
9 printf("%d\n", a1);
10 return a1;
11 }
12
arg2(int a1,int a2)13 int arg2(int a1, int a2)
14 {
15 printf("%d\n", a1 + a2);
16 return a2;
17 }
18
arg3(int a1,int a2,int a3)19 int arg3(int a1, int a2, int a3)
20 {
21 printf("%d\n", a1 + a2 + a3);
22 return a3;
23 }
24
arg4(int a1,int a2,int a3,int a4)25 int arg4(int a1, int a2, int a3, int a4)
26 {
27 printf("%d\n", a1 + a2 + a3 + a4);
28 return a4;
29 }
30
arg5(int a1,int a2,int a3,int a4,int a5)31 int arg5(int a1, int a2, int a3, int a4, int a5)
32 {
33 printf("%d\n", a1 + a2 + a3 + a4 + a5);
34 return a5;
35 }
36
arg6(int a1,int a2,int a3,int a4,int a5,int a6)37 int arg6(int a1, int a2, int a3, int a4, int a5, int a6)
38 {
39 printf("%d\n", a1 + a2 + a3 + a4 + a5 + a6);
40 return a6;
41 }
42
arg7(int a1,int a2,int a3,int a4,int a5,int a6,int a7)43 int arg7(int a1, int a2, int a3, int a4, int a5, int a6, int a7)
44 {
45 printf("%d\n", a1 + a2 + a3 + a4 + a5 + a6 + a7);
46 return a7;
47 }
48
arg8(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8)49 int arg8(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8)
50 {
51 printf("%d\n", a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8);
52 return a8;
53 }
54
arg9(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9)55 int arg9(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9)
56 {
57 printf("%d\n", a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9);
58 return a9;
59 }
60
61 /*
62 * Not all parameters are used.
63 */
params_unused(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9)64 int params_unused(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9)
65 {
66 printf("%d\n", a1 + a2 + a9);
67 return a1;
68 }
69
70 /*
71 * Directly passes arguments to the callee
72 * In some cases this function might be optimized and no reference of those
73 * arguments can be found in this function.
74 */
argument_pass_through(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9)75 int argument_pass_through(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9)
76 {
77 arg3(a1, a2, a3);
78 arg9(a1, a2, a3, a4, a5, a6, a7, a8, a9);
79
80 return a1;
81 }
82
main(int argc,char ** argv)83 int main(int argc, char** argv)
84 {
85 int a;
86 scanf("%d", &a);
87 arg1(a);
88 arg2(a, a);
89 arg3(a, a, a);
90 arg4(a, a, a, a);
91 arg5(a, a, a, a, a);
92 arg6(a, a, a, a, a, a);
93 arg7(a, a, a, a, a, a, a);
94 arg8(a, a, a, a, a, a, a, a);
95 arg9(a, a, a, a, a, a, a, a, a);
96 params_unused(a, a, a, a, a, a, a, a, a);
97 argument_pass_through(a, a, a, a, a, a, a, a, a);
98 }
99