diff options
author | Jim Grosbach <grosbach@apple.com> | 2010-06-16 21:13:38 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2010-06-16 21:13:38 +0000 |
commit | fd3b4e739012b95bf981bbe79702a6a955578ca3 (patch) | |
tree | 50da8217e3fe617631e7a7c4e9e0b3023783c31d /llvm/lib/Analysis/ScalarEvolutionExpander.cpp | |
parent | 7dbfb4616377442f6424f903b045b70c29467630 (diff) | |
download | bcm5719-llvm-fd3b4e739012b95bf981bbe79702a6a955578ca3.tar.gz bcm5719-llvm-fd3b4e739012b95bf981bbe79702a6a955578ca3.zip |
A few more places where SCEVExpander bits need to skip over debug intrinsics
when iterating through instructions. Yet more work for rdar://7797940
llvm-svn: 106149
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolutionExpander.cpp')
-rw-r--r-- | llvm/lib/Analysis/ScalarEvolutionExpander.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolutionExpander.cpp b/llvm/lib/Analysis/ScalarEvolutionExpander.cpp index 4f49bf17fb4..b4b00b9500a 100644 --- a/llvm/lib/Analysis/ScalarEvolutionExpander.cpp +++ b/llvm/lib/Analysis/ScalarEvolutionExpander.cpp @@ -97,7 +97,7 @@ Value *SCEVExpander::InsertNoopCastOfTo(Value *V, const Type *Ty) { BasicBlock::iterator It = I; ++It; if (isa<InvokeInst>(I)) It = cast<InvokeInst>(I)->getNormalDest()->begin(); - while (isa<PHINode>(It)) ++It; + while (isa<PHINode>(It) || isa<DbgInfoIntrinsic>(It)) ++It; if (It != BasicBlock::iterator(CI)) { // Recreate the cast after the user. // The old cast is left in place in case it is being used @@ -115,7 +115,7 @@ Value *SCEVExpander::InsertNoopCastOfTo(Value *V, const Type *Ty) { BasicBlock::iterator IP = I; ++IP; if (InvokeInst *II = dyn_cast<InvokeInst>(I)) IP = II->getNormalDest()->begin(); - while (isa<PHINode>(IP)) ++IP; + while (isa<PHINode>(IP) || isa<DbgInfoIntrinsic>(IP)) ++IP; Instruction *CI = CastInst::Create(Op, V, Ty, V->getName(), IP); rememberInstruction(CI); return CI; @@ -1070,7 +1070,8 @@ Value *SCEVExpander::visitAddRecExpr(const SCEVAddRecExpr *S) { BasicBlock::iterator SaveInsertPt = Builder.GetInsertPoint(); BasicBlock::iterator NewInsertPt = llvm::next(BasicBlock::iterator(cast<Instruction>(V))); - while (isa<PHINode>(NewInsertPt)) ++NewInsertPt; + while (isa<PHINode>(NewInsertPt) || isa<DbgInfoIntrinsic>(NewInsertPt)) + ++NewInsertPt; V = expandCodeFor(SE.getTruncateExpr(SE.getUnknown(V), Ty), 0, NewInsertPt); restoreInsertPoint(SaveInsertBB, SaveInsertPt); |