Index: lib/Transforms/Scalar/TailRecursionElimination.cpp =================================================================== --- lib/Transforms/Scalar/TailRecursionElimination.cpp +++ lib/Transforms/Scalar/TailRecursionElimination.cpp @@ -252,8 +252,10 @@ for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) { if (CallInst *CI = dyn_cast(I)) { if (!ACT.UsesAlloca.count(CI)) { - CI->setTailCall(); - MadeChange = true; + if (!CI->isTailCall()) { + CI->setTailCall(); + MadeChange = true; + } } } }