summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/CodeGenPrepare.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2015-12-08 21:50:52 +0000
committerReid Kleckner <rnk@google.com>2015-12-08 21:50:52 +0000
commit7c005324d57ce908afb4dc01031850db70e3f4fc (patch)
tree864053e0ea71780228b0faf7523b370fab6d11ce /llvm/lib/CodeGen/CodeGenPrepare.cpp
parent8fc2cbf933d6d264538bd59321320649ea935aef (diff)
downloadbcm5719-llvm-7c005324d57ce908afb4dc01031850db70e3f4fc.tar.gz
bcm5719-llvm-7c005324d57ce908afb4dc01031850db70e3f4fc.zip
[CGP] Check that we have an insert point before moving llvm.dbg.value around
llvm-svn: 255055
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
-rw-r--r--llvm/lib/CodeGen/CodeGenPrepare.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp
index d619044e86c..615bcf33767 100644
--- a/llvm/lib/CodeGen/CodeGenPrepare.cpp
+++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp
@@ -5251,12 +5251,16 @@ bool CodeGenPrepare::placeDbgValues(Function &F) {
Instruction *VI = dyn_cast_or_null<Instruction>(DVI->getValue());
if (VI && VI != PrevNonDbgInst && !VI->isTerminator()) {
- DEBUG(dbgs() << "Moving Debug Value before :\n" << *DVI << ' ' << *VI);
- DVI->removeFromParent();
+ BasicBlock::iterator IP;
if (isa<PHINode>(VI))
- DVI->insertBefore(&*VI->getParent()->getFirstInsertionPt());
+ IP = VI->getParent()->getFirstInsertionPt();
else
- DVI->insertAfter(VI);
+ IP = ++VI->getIterator();
+ if (IP == VI->getParent()->end())
+ continue;
+ DEBUG(dbgs() << "Moving Debug Value before :\n" << *DVI << ' ' << *VI);
+ DVI->removeFromParent();
+ VI->getParent()->getInstList().insert(IP, DVI);
MadeChange = true;
++NumDbgValueMoved;
}
OpenPOWER on IntegriCloud