/* On my old laptop without fastcall: $ time ./fib 40 165580141 real 0m0.913s That’s 181 million leaf calls per second. More recent GCC sometimes does extensive enough optimization to make this pointless, converting recursion to iteration and inlining leaf calls. See dumbfib.S for an overview. */ __attribute__((fastcall)) int fib(int n) { return n < 2 ? 1 : fib(n-1) + fib(n-2); } main(int c, char **v) { printf("%d\n", fib(atoi(v[1]))); }