diff options
author | Devang Patel <dpatel@apple.com> | 2010-08-26 20:06:46 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2010-08-26 20:06:46 +0000 |
commit | f2ec7ae2799c149e4eccfb5a3632f9ba8c6dae7b (patch) | |
tree | 9c1aad1faf0223a4a3cea3ba11f782a89f937aa5 | |
parent | 01ba461af7eafc9d181a5c349487691f2e801438 (diff) |
Update DanglingDebugInfo so that it can be used to track llvm.dbg.declare also.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112213 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 19 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h | 8 |
2 files changed, 19 insertions, 8 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 15ad23de97..a1ff8adc46 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -875,12 +875,23 @@ void SelectionDAGBuilder::visit(unsigned Opcode, const User &I) { void SelectionDAGBuilder::resolveDanglingDebugInfo(const Value *V, SDValue Val) { DanglingDebugInfo &DDI = DanglingDebugInfoMap[V]; - if (DDI.getDI()) { - const DbgValueInst *DI = DDI.getDI(); + MDNode *Variable = NULL; + uint64_t Offset = 0; + + if (const DbgValueInst *DI = dyn_cast_or_null<DbgValueInst>(DDI.getDI())) { + Variable = DI->getVariable(); + Offset = DI->getOffset(); + } else if (const DbgDeclareInst *DI = + dyn_cast_or_null<DbgDeclareInst>(DDI.getDI())) + Variable = DI->getVariable(); + else { + assert (DDI.getDI() == NULL && "Invalid debug info intrinsic!"); + return; + } + + if (Variable) { DebugLoc dl = DDI.getdl(); unsigned DbgSDNodeOrder = DDI.getSDNodeOrder(); - MDNode *Variable = DI->getVariable(); - uint64_t Offset = DI->getOffset(); SDDbgValue *SDV; if (Val.getNode()) { if (!EmitFuncArgumentDbgValue(V, Variable, Offset, Val)) { diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h index 2ba88974ab..047a05dd67 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h @@ -36,7 +36,7 @@ class BasicBlock; class BitCastInst; class BranchInst; class CallInst; -class DbgValueInst; +class DbgInfoIntrinsic; class ExtractElementInst; class ExtractValueInst; class FCmpInst; @@ -96,14 +96,14 @@ class SelectionDAGBuilder { /// DanglingDebugInfo - Helper type for DanglingDebugInfoMap. class DanglingDebugInfo { - const DbgValueInst* DI; + const DbgInfoIntrinsic* DI; DebugLoc dl; unsigned SDNodeOrder; public: DanglingDebugInfo() : DI(0), dl(DebugLoc()), SDNodeOrder(0) { } - DanglingDebugInfo(const DbgValueInst *di, DebugLoc DL, unsigned SDNO) : + DanglingDebugInfo(const DbgInfoIntrinsic *di, DebugLoc DL, unsigned SDNO) : DI(di), dl(DL), SDNodeOrder(SDNO) { } - const DbgValueInst* getDI() { return DI; } + const DbgInfoIntrinsic* getDI() { return DI; } DebugLoc getdl() { return dl; } unsigned getSDNodeOrder() { return SDNodeOrder; } }; |