Skip to content
Snippets Groups Projects
Commit b71eeeb6 authored by an7s's avatar an7s
Browse files

Add indirect function pointers to fibonacci tests

Former-commit-id: c89362d2752478f41d5ef6cef6752ba6789b1373
parent 2c945bf2
No related branches found
No related tags found
No related merge requests found
......@@ -2,6 +2,19 @@
extern int fib();
extern int fib2();
extern int fibp(int n, int (*)(int,int));
int add(int n1, int n2)
{
if (n1 == 0)
return n2;
else if (n2 == 0)
return n1;
else if (n1 == 2)
return add(1, add(1, n2));
else
return n1 + add(0, n2);
}
main(int argc, char **argv)
{
......@@ -16,6 +29,8 @@ main(int argc, char **argv)
f = fib2(x);
else if (x == 4)
f = fib_simple(x);
else if (x == 5)
f = fibp(x, &add);
else
f = fib(x);
printf("Fibonacci(%d) = %d\n", x, f);
......@@ -24,14 +39,14 @@ main(int argc, char **argv)
}
fib_main(int f) {
if (f <= 1)
if (f <= 2)
return 1;
else
return fib_simple(f-1) + fib_main(f-2);
}
fib_simple(int f) {
if (f <= 1)
if (f <= 2)
return 1;
else
return fib_simple(f-1) + fib_simple(f-2);
......
extern int fib_main();
extern int fib2();
extern int fib2p(int n, int (*)(int,int));
int fib(n)
int add2(int n1, int n2)
{
if (n <= 1)
if (n1 == 0)
return n2;
else if (n2 == 0)
return n1;
else if (n2 == 2)
return add2(add2(n1, 1),1);
else
return add2(0, n2) + add2(n1, 0);
}
int fib(int n)
{
if (n <= 2)
return 1;
else
return fib_main(n-1) + fib2(n-2);
}
int fibp(int n, int (*addp)(int,int))
{
if (n <= 2)
return 1;
else
return (*addp)(fib_main(n-1),fib2p(n-2,&add2));
}
extern int fib_main();
extern int fib();
int fib2(n)
int fib2(int n)
{
if (n <= 1)
if (n <= 2)
return 1;
else
// return fib_main(n-1) + fib2(n-2);
return fib2(n-1) + fib_main(n-2);
}
int fib2p(int n, int (*addp)(int,int))
{
if (n <= 2)
return (*addp)(1,0);
else
return (*addp)(fib2(n-1),fib2p(n-2, addp));
}
......@@ -130,106 +130,127 @@ main()
test fib.exe 3 libfib.so.orig libfib2.so.orig
test fib.exe 4 libfib.so.orig libfib2.so.orig
test fib.exe 5 libfib.so.orig libfib2.so.orig
test fib.exe 6 libfib.so.orig libfib2.so.orig
test fib.exe 2 libfib.so.cfi libfib2.so.orig
test fib.exe 3 libfib.so.cfi libfib2.so.orig
test fib.exe 4 libfib.so.cfi libfib2.so.orig
test fib.exe 5 libfib.so.cfi libfib2.so.orig
test fib.exe 6 libfib.so.cfi libfib2.so.orig
test fib.exe 2 libfib.so.orig libfib2.so.cfi
test fib.exe 3 libfib.so.orig libfib2.so.cfi
test fib.exe 4 libfib.so.orig libfib2.so.cfi
test fib.exe 5 libfib.so.orig libfib2.so.cfi
test fib.exe 6 libfib.so.orig libfib2.so.cfi
test fib.exe 2 libfib.so.cfi libfib2.so.cfi
test fib.exe 3 libfib.so.cfi libfib2.so.cfi
test fib.exe 4 libfib.so.cfi libfib2.so.cfi
test fib.exe 5 libfib.so.cfi libfib2.so.cfi
test fib.exe 6 libfib.so.cfi libfib2.so.cfi
test fib.exe.cfi 2 libfib.so.orig libfib2.so.orig
test fib.exe.cfi 3 libfib.so.orig libfib2.so.orig
test fib.exe.cfi 4 libfib.so.orig libfib2.so.orig
test fib.exe.cfi 5 libfib.so.orig libfib2.so.orig
test fib.exe.cfi 6 libfib.so.orig libfib2.so.orig
test fib.exe.cfi 2 libfib.so.cfi libfib2.so.orig
test fib.exe.cfi 3 libfib.so.cfi libfib2.so.orig
test fib.exe.cfi 4 libfib.so.cfi libfib2.so.orig
test fib.exe.cfi 5 libfib.so.cfi libfib2.so.orig
test fib.exe.cfi 6 libfib.so.cfi libfib2.so.orig
test fib.exe.cfi 2 libfib.so.orig libfib2.so.cfi
test fib.exe.cfi 3 libfib.so.orig libfib2.so.cfi
test fib.exe.cfi 4 libfib.so.orig libfib2.so.cfi
test fib.exe.cfi 5 libfib.so.orig libfib2.so.cfi
test fib.exe.cfi 6 libfib.so.orig libfib2.so.cfi
test fib.exe.cfi 2 libfib.so.cfi libfib2.so.cfi
test fib.exe.cfi 3 libfib.so.cfi libfib2.so.cfi
test fib.exe.cfi 4 libfib.so.cfi libfib2.so.cfi
test fib.exe.cfi 5 libfib.so.cfi libfib2.so.cfi
test fib.exe.cfi 6 libfib.so.cfi libfib2.so.cfi
test fib.exe.cfi.color 2 libfib.so.orig libfib2.so.orig
test fib.exe.cfi.color 3 libfib.so.orig libfib2.so.orig
test fib.exe.cfi.color 4 libfib.so.orig libfib2.so.orig
test fib.exe.cfi.color 5 libfib.so.orig libfib2.so.orig
test fib.exe.cfi.color 6 libfib.so.orig libfib2.so.orig
test fib.exe.cfi.color 2 libfib.so.cfi libfib2.so.orig
test fib.exe.cfi.color 3 libfib.so.cfi libfib2.so.orig
test fib.exe.cfi.color 4 libfib.so.cfi libfib2.so.orig
test fib.exe.cfi.color 5 libfib.so.cfi libfib2.so.orig
test fib.exe.cfi.color 6 libfib.so.cfi libfib2.so.orig
test fib.exe.cfi.color 2 libfib.so.orig libfib2.so.cfi
test fib.exe.cfi.color 3 libfib.so.orig libfib2.so.cfi
test fib.exe.cfi.color 4 libfib.so.orig libfib2.so.cfi
test fib.exe.cfi.color 5 libfib.so.orig libfib2.so.cfi
test fib.exe.cfi.color 6 libfib.so.orig libfib2.so.cfi
test fib.exe.cfi.color 2 libfib.so.cfi libfib2.so.cfi
test fib.exe.cfi.color 3 libfib.so.cfi libfib2.so.cfi
test fib.exe.cfi.color 4 libfib.so.cfi libfib2.so.cfi
test fib.exe.cfi.color 5 libfib.so.cfi libfib2.so.cfi
test fib.exe.cfi.color 6 libfib.so.cfi libfib2.so.cfi
test fib.exe 2 libfib.so.cfi.color libfib2.so.orig
test fib.exe 3 libfib.so.cfi.color libfib2.so.orig
test fib.exe 4 libfib.so.cfi.color libfib2.so.orig
test fib.exe 5 libfib.so.cfi.color libfib2.so.orig
test fib.exe 6 libfib.so.cfi.color libfib2.so.orig
test fib.exe 2 libfib.so.orig libfib2.so.cfi.color
test fib.exe 3 libfib.so.orig libfib2.so.cfi.color
test fib.exe 4 libfib.so.orig libfib2.so.cfi.color
test fib.exe 5 libfib.so.orig libfib2.so.cfi.color
test fib.exe 6 libfib.so.orig libfib2.so.cfi.color
test fib.exe 2 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe 3 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe 4 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe 5 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe 6 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe.cfi 2 libfib.so.cfi.color libfib2.so.orig
test fib.exe.cfi 3 libfib.so.cfi.color libfib2.so.orig
test fib.exe.cfi 4 libfib.so.cfi.color libfib2.so.orig
test fib.exe.cfi 5 libfib.so.cfi.color libfib2.so.orig
test fib.exe.cfi 6 libfib.so.cfi.color libfib2.so.orig
test fib.exe.cfi 2 libfib.so.orig libfib2.so.cfi.color
test fib.exe.cfi 3 libfib.so.orig libfib2.so.cfi.color
test fib.exe.cfi 4 libfib.so.orig libfib2.so.cfi.color
test fib.exe.cfi 5 libfib.so.orig libfib2.so.cfi.color
test fib.exe.cfi 6 libfib.so.orig libfib2.so.cfi.color
test fib.exe.cfi 2 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe.cfi 3 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe.cfi 4 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe.cfi 5 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe.cfi 6 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe.cfi.color 2 libfib.so.cfi.color libfib2.so.orig
test fib.exe.cfi.color 3 libfib.so.cfi.color libfib2.so.orig
test fib.exe.cfi.color 4 libfib.so.cfi.color libfib2.so.orig
test fib.exe.cfi.color 5 libfib.so.cfi.color libfib2.so.orig
test fib.exe.cfi.color 6 libfib.so.cfi.color libfib2.so.orig
test fib.exe.cfi.color 2 libfib.so.orig libfib2.so.cfi.color
test fib.exe.cfi.color 3 libfib.so.orig libfib2.so.cfi.color
test fib.exe.cfi.color 4 libfib.so.orig libfib2.so.cfi.color
test fib.exe.cfi.color 5 libfib.so.orig libfib2.so.cfi.color
test fib.exe.cfi.color 6 libfib.so.orig libfib2.so.cfi.color
test fib.exe.cfi.color 2 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe.cfi.color 3 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe.cfi.color 4 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe.cfi.color 5 libfib.so.cfi.color libfib2.so.cfi.color
test fib.exe.cfi.color 6 libfib.so.cfi.color libfib2.so.cfi.color
# some tests for different optimization levels
test fib.exe.cfi.color 5 libfib.so.orig libfib2.O.so.cfi
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment