5
/* Check that function wrapping works for a mutually recursive
8
static int fact1 ( int n );
9
static int fact2 ( int n );
11
/* This is needed to stop gcc4 turning 'fact' into a loop */
12
__attribute__((noinline))
13
int mul ( int x, int y ) { return x * y; }
17
if (n == 0) return 1; else return mul(n, fact2(n-1));
21
if (n == 0) return 1; else return mul(n, fact1(n-1));
25
int I_WRAP_SONAME_FNNAME_ZU(NONE,fact1) ( int n )
29
VALGRIND_GET_ORIG_FN(fn);
30
printf("in wrapper1-pre: fact(%d)\n", n);
32
printf("in wrapper1-post: fact(%d) = %d\n", n, r);
36
int I_WRAP_SONAME_FNNAME_ZU(NONE,fact2) ( int n )
40
VALGRIND_GET_ORIG_FN(fn);
41
printf("in wrapper2-pre: fact(%d)\n", n);
43
printf("in wrapper2-post: fact(%d) = %d\n", n, r);
52
printf("computing fact1(5)\n");
54
printf("fact1(5) = %d\n", r);