[llvm-dev] Why doesn't tail recursion elimination work?
Alex Susu via llvm-dev
llvm-dev at lists.llvm.org
Sat Jun 2 01:32:12 PDT 2018
Hello.
Could you please tell me why is not LLVM performing tail recursion elimination on the
following function:
int A[10000];
int MulRedRec(int N) {
if (N == 0)
return A[0];
return A[N] * MulRedRec(N - 1);
}
I ask also because, for example, for the following function LLVM is able to eliminate
tail recursion:
int FactRec(int N) {
if (N == 0)
return 1;
return N * FactRec(N - 1);
}
Looking on the debug information printed by opt I was able to find some differences
in behavior when opt runs on each of the functions above - I can detail more on these
differences.
Thank you very much,
Alex
More information about the llvm-dev
mailing list