diff options
author | Bill Wendling <isanbard@gmail.com> | 2012-07-07 00:52:35 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2012-07-07 00:52:35 +0000 |
commit | 786de35fa08fea705693a9edee500ea288f55773 (patch) | |
tree | ba52ce440f2692b4808a367aaed4e51279c3a700 /llvm/lib | |
parent | 210b815f9dfb2dc249af44ef346522bb5a388228 (diff) | |
download | bcm5719-llvm-786de35fa08fea705693a9edee500ea288f55773.tar.gz bcm5719-llvm-786de35fa08fea705693a9edee500ea288f55773.zip |
Use the DebugInfo wrappers instead of mucking about with the MDNode directly.
llvm-svn: 159881
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/VMCore/DebugLoc.cpp | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/llvm/lib/VMCore/DebugLoc.cpp b/llvm/lib/VMCore/DebugLoc.cpp index 9013d28bb67..b8d85514621 100644 --- a/llvm/lib/VMCore/DebugLoc.cpp +++ b/llvm/lib/VMCore/DebugLoc.cpp @@ -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 { |