diff options
author | Bill Wendling <isanbard@gmail.com> | 2011-03-24 18:07:13 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2011-03-24 18:07:13 +0000 |
commit | 334706d7d8f3056b5f8ded003d253bbf5376e1d3 (patch) | |
tree | 7ee5ff1f83e4110a231df205699750eb0f80e023 | |
parent | 05378af04056b33aa6db8e8f12d5abe0028b70f8 (diff) | |
download | llvm-334706d7d8f3056b5f8ded003d253bbf5376e1d3.zip llvm-334706d7d8f3056b5f8ded003d253bbf5376e1d3.tar.gz llvm-334706d7d8f3056b5f8ded003d253bbf5376e1d3.tar.bz2 |
--- Merging r128212 into '.':
U lib/Transforms/Scalar/CodeGenPrepare.cpp
--- Merging r128217 into '.':
G lib/Transforms/Scalar/CodeGenPrepare.cpp
llvm-svn: 128223
-rw-r--r-- | llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp b/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp index 237b0a7..15d8c20 100644 --- a/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp +++ b/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp @@ -602,7 +602,9 @@ bool CodeGenPrepare::DupRetToEnableTailCallOpts(ReturnInst *RI) { if (&*BI != RI) return false; } else { - if (&*BB->begin() != RI) + BasicBlock::iterator BI = BB->begin(); + while (isa<DbgInfoIntrinsic>(BI)) ++BI; + if (&*BI != RI) return false; } @@ -626,10 +628,12 @@ bool CodeGenPrepare::DupRetToEnableTailCallOpts(ReturnInst *RI) { BasicBlock::InstListType &InstList = (*PI)->getInstList(); BasicBlock::InstListType::reverse_iterator RI = InstList.rbegin(); BasicBlock::InstListType::reverse_iterator RE = InstList.rend(); - if (++RI == RE) + do { ++RI; } while (RI != RE && isa<DbgInfoIntrinsic>(&*RI)); + if (RI == RE) continue; + CallInst *CI = dyn_cast<CallInst>(&*RI); - if (CI && CI->getType()->isVoidTy() && TLI->mayBeEmittedAsTailCall(CI)) + if (CI && CI->use_empty() && TLI->mayBeEmittedAsTailCall(CI)) TailCalls.push_back(CI); } } |