# HG changeset patch # User Kaito Tokumori # Date 1384249531 -32400 # Node ID d84031a0fa3cfd95a1756d5166179ad649272258 # Parent 8198410b67801391b1b80b4ac750bb1e39e93e8c bug fix : removed the error that TCE doesn't work if the function isn't a code segment. (It's due to incorrect if statement) diff -r 8198410b6780 -r d84031a0fa3c lib/Transforms/Scalar/TailRecursionElimination.cpp --- a/lib/Transforms/Scalar/TailRecursionElimination.cpp Tue Nov 12 18:03:08 2013 +0900 +++ b/lib/Transforms/Scalar/TailRecursionElimination.cpp Tue Nov 12 18:45:31 2013 +0900 @@ -251,15 +251,14 @@ for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) if (CallInst *CI = dyn_cast(I)) { #ifndef noCbC - Function* CalledFunction = CI->getCalledFunction(); - if (CalledFunction != NULL) - if (CI->getCalledFunction()->getReturnType()->is__CodeTy() || !isOnlyForCbC()) { + if (isOnlyForCbC()){ + Function* CalledFunction = CI->getCalledFunction(); + if (CalledFunction == NULL || !CalledFunction->getReturnType()->is__CodeTy()) + continue; + } #endif - CI->setTailCall(); - MadeChange = true; -#ifndef noCbC - } -#endif + CI->setTailCall(); + MadeChange = true; } return MadeChange; }