diff options
author | Reid Kleckner <rnk@google.com> | 2015-12-08 21:50:52 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2015-12-08 21:50:52 +0000 |
commit | 7c005324d57ce908afb4dc01031850db70e3f4fc (patch) | |
tree | 864053e0ea71780228b0faf7523b370fab6d11ce /llvm/lib/CodeGen/CodeGenPrepare.cpp | |
parent | 8fc2cbf933d6d264538bd59321320649ea935aef (diff) | |
download | bcm5719-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.cpp | 12 |
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; } |