Enable the tail call optimization when the caller returns undef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88737 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman
2009-11-14 02:06:30 +00:00
parent 0cd22dd738
commit ed9bab3b4d
2 changed files with 12 additions and 1 deletions

View File

@@ -4376,6 +4376,10 @@ isInTailCallPosition(const Instruction *I, Attributes CalleeRetAttr,
// what the call's return type is.
if (!Ret || Ret->getNumOperands() == 0) return true;
// If the return value is undef, it doesn't matter what the call's
// return type is.
if (isa<UndefValue>(Ret->getOperand(0))) return true;
// Conservatively require the attributes of the call to match those of
// the return. Ignore noalias because it doesn't affect the call sequence.
unsigned CallerRetAttr = F->getAttributes().getRetAttributes();