diff options
| author | Cameron Zwarich <zwarich@apple.com> | 2011-03-24 16:34:59 +0000 |
|---|---|---|
| committer | Cameron Zwarich <zwarich@apple.com> | 2011-03-24 16:34:59 +0000 |
| commit | 74157ab3e5e1b8f601ef545b67725c1da4ba2fb5 (patch) | |
| tree | e6479dc5f59cefea86deeb761bbde6022ca2452a /llvm | |
| parent | b03bd5983d2846b351764ad740f1781fb83bd38f (diff) | |
| download | bcm5719-llvm-74157ab3e5e1b8f601ef545b67725c1da4ba2fb5.tar.gz bcm5719-llvm-74157ab3e5e1b8f601ef545b67725c1da4ba2fb5.zip | |
Debug intrinsics must be skipped at the beginning and ends of blocks, lest they
affect the generated code.
llvm-svn: 128217
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp b/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp index 337a4d3c468..2f7ccea6e17 100644 --- a/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp +++ b/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp @@ -617,7 +617,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; } @@ -641,8 +643,10 @@ 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->use_empty() && TLI->mayBeEmittedAsTailCall(CI)) TailCalls.push_back(CI); |

