Add a workaround for PR962, disabling the more aggressive form of this

transformation.  This speeds up a C++ app 2.25x.

llvm-svn: 31113
This commit is contained in:
Chris Lattner 2006-10-22 18:42:26 +00:00
parent aa1c614784
commit 250eff20da
1 changed files with 8 additions and 0 deletions

View File

@ -140,6 +140,14 @@ bool TailCallElim::runOnFunction(Function &F) {
FunctionContainsEscapingAllocas |=
CheckForEscapingAllocas(BB, CannotTCETailMarkedCall);
}
/// FIXME: The code generator produces really bad code when an 'escaping
/// alloca' is changed from being a static alloca to being a dynamic alloca.
/// Until this is resolved, disable this transformation if that would ever
/// happen. This bug is PR962.
if (FunctionContainsEscapingAllocas)
return false;
// Second pass, change any tail calls to loops.
for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB)