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

Add indirect function pointers to fibonacci tests

parent 8743ac32
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