Use the DebugInfo wrappers instead of mucking about with the MDNode directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159881 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bill Wendling 2012-07-07 00:52:35 +00:00
parent ee17cee77c
commit 9cb22d6c8c

View File

@ -8,6 +8,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/Support/DebugLoc.h"
#include "llvm/DebugInfo.h"
#include "llvm/ADT/DenseMapInfo.h"
#include "LLVMContextImpl.h"
using namespace llvm;
@ -114,34 +115,19 @@ MDNode *DebugLoc::getAsMDNode(const LLVMContext &Ctx) const {
/// getFromDILocation - Translate the DILocation quad into a DebugLoc.
DebugLoc DebugLoc::getFromDILocation(MDNode *N) {
if (N == 0 || N->getNumOperands() != 4) return DebugLoc();
MDNode *Scope = dyn_cast_or_null<MDNode>(N->getOperand(2));
DILocation Loc(N);
MDNode *Scope = Loc.getScope();
if (Scope == 0) return DebugLoc();
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)));
return get(Loc.getLineNumber(), Loc.getColumnNumber(), Scope,
Loc.getOrigLocation());
}
/// getFromDILexicalBlock - Translate the DILexicalBlock into a DebugLoc.
DebugLoc DebugLoc::getFromDILexicalBlock(MDNode *N) {
if (N == 0 || N->getNumOperands() < 3) return DebugLoc();
MDNode *Scope = dyn_cast_or_null<MDNode>(N->getOperand(1));
DILexicalBlock LexBlock(N);
MDNode *Scope = LexBlock.getContext();
if (Scope == 0) return DebugLoc();
unsigned LineNo = 0, ColNo = 0;
if (ConstantInt *Line = dyn_cast_or_null<ConstantInt>(N->getOperand(2)))
LineNo = Line->getZExtValue();
if (ConstantInt *Col = dyn_cast_or_null<ConstantInt>(N->getOperand(3)))
ColNo = Col->getZExtValue();
return get(LineNo, ColNo, Scope, NULL);
return get(LexBlock.getLineNumber(), LexBlock.getColumnNumber(), Scope, NULL);
}
void DebugLoc::dump(const LLVMContext &Ctx) const {