mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-09 13:33:17 +00:00
add a method to decode a DILocation into a NewDebugLoc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100081 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ec306a9771
commit
68c5513499
@ -40,6 +40,9 @@ namespace llvm {
|
|||||||
static NewDebugLoc get(unsigned Line, unsigned Col,
|
static NewDebugLoc get(unsigned Line, unsigned Col,
|
||||||
MDNode *Scope, MDNode *InlinedAt);
|
MDNode *Scope, MDNode *InlinedAt);
|
||||||
|
|
||||||
|
/// getFromDILocation - Translate the DILocation quad into a NewDebugLoc.
|
||||||
|
static NewDebugLoc getFromDILocation(MDNode *N);
|
||||||
|
|
||||||
/// isUnknown - Return true if this is an unknown location.
|
/// isUnknown - Return true if this is an unknown location.
|
||||||
bool isUnknown() const { return ScopeIdx == 0; }
|
bool isUnknown() const { return ScopeIdx == 0; }
|
||||||
|
|
||||||
@ -96,7 +99,7 @@ namespace llvm {
|
|||||||
bool operator!=(const DebugLoc &DL) const { return !(*this == DL); }
|
bool operator!=(const DebugLoc &DL) const { return !(*this == DL); }
|
||||||
};
|
};
|
||||||
|
|
||||||
/// DebugLocTracker - This class tracks debug location information.
|
/// DebugLocTracker - This class tracks debug location information.
|
||||||
///
|
///
|
||||||
struct DebugLocTracker {
|
struct DebugLocTracker {
|
||||||
/// DebugLocations - A vector of unique DebugLocTuple's.
|
/// DebugLocations - A vector of unique DebugLocTuple's.
|
||||||
|
@ -111,6 +111,21 @@ MDNode *NewDebugLoc::getAsMDNode(const LLVMContext &Ctx) const {
|
|||||||
return MDNode::get(Ctx2, &Elts[0], 4);
|
return MDNode::get(Ctx2, &Elts[0], 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// getFromDILocation - Translate the DILocation quad into a NewDebugLoc.
|
||||||
|
NewDebugLoc NewDebugLoc::getFromDILocation(MDNode *N) {
|
||||||
|
if (N == 0 || N->getNumOperands() != 4) return NewDebugLoc();
|
||||||
|
|
||||||
|
MDNode *Scope = dyn_cast_or_null<MDNode>(N->getOperand(2));
|
||||||
|
if (Scope == 0) return NewDebugLoc();
|
||||||
|
|
||||||
|
unsigned LineNo = 0, ColNo = 0;
|
||||||
|
if (ConstantInt *Line = dyn_cast_or_null<ConstantInt>(N->getOperand(0)))
|
||||||
|
LineNo = Line->getZExtValue();
|
||||||
|
if (ConstantInt *Col = dyn_cast_or_null<ConstantInt>(N->getOperand(1)))
|
||||||
|
ColNo = Col->getZExtValue();
|
||||||
|
|
||||||
|
return get(LineNo, ColNo, Scope, dyn_cast_or_null<MDNode>(N->getOperand(3)));
|
||||||
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// LLVMContextImpl Implementation
|
// LLVMContextImpl Implementation
|
||||||
|
Loading…
x
Reference in New Issue
Block a user