1*7304104dSAndroid Build Coastguard Worker // gcc -g -O2 -o parameter_ref parameter_ref.c
2*7304104dSAndroid Build Coastguard Worker
3*7304104dSAndroid Build Coastguard Worker volatile int vv;
4*7304104dSAndroid Build Coastguard Worker
5*7304104dSAndroid Build Coastguard Worker /* Don't inline, but do allow clone to create specialized versions. */
6*7304104dSAndroid Build Coastguard Worker static __attribute__((noinline)) int
foo(int x,int y,int z)7*7304104dSAndroid Build Coastguard Worker foo (int x, int y, int z)
8*7304104dSAndroid Build Coastguard Worker {
9*7304104dSAndroid Build Coastguard Worker int a = x * 2;
10*7304104dSAndroid Build Coastguard Worker int b = y * 2;
11*7304104dSAndroid Build Coastguard Worker int c = z * 2;
12*7304104dSAndroid Build Coastguard Worker vv++;
13*7304104dSAndroid Build Coastguard Worker return x + z;
14*7304104dSAndroid Build Coastguard Worker }
15*7304104dSAndroid Build Coastguard Worker
16*7304104dSAndroid Build Coastguard Worker int
main(int x,char ** argv)17*7304104dSAndroid Build Coastguard Worker main (int x, char **argv)
18*7304104dSAndroid Build Coastguard Worker {
19*7304104dSAndroid Build Coastguard Worker return foo (x, 2, 3) + foo (x, 4, 3) + foo (x + 6, x, 3) + x;
20*7304104dSAndroid Build Coastguard Worker }
21