diff options
-rw-r--r-- | include/llvm/IntrinsicInst.h | 5 | ||||
-rw-r--r-- | include/llvm/Value.h | 4 | ||||
-rw-r--r-- | lib/VMCore/IntrinsicInst.cpp | 8 |
3 files changed, 13 insertions, 4 deletions
diff --git a/include/llvm/IntrinsicInst.h b/include/llvm/IntrinsicInst.h index 9893e1f..3c18de10 100644 --- a/include/llvm/IntrinsicInst.h +++ b/include/llvm/IntrinsicInst.h @@ -25,7 +25,6 @@ #define LLVM_INTRINSICINST_H #include "llvm/Constants.h" -#include "llvm/Metadata.h" #include "llvm/Function.h" #include "llvm/Instructions.h" #include "llvm/Intrinsics.h" @@ -175,9 +174,7 @@ namespace llvm { /// DbgValueInst - This represents the llvm.dbg.value instruction. /// struct DbgValueInst : public DbgInfoIntrinsic { - Value *getValue() const { - return cast<MDNode>(getOperand(1))->getOperand(0); - } + Value *getValue() const; Value *getOffset() const { return getOperand(2); } MDNode *getVariable() const { return cast<MDNode>(getOperand(3)); } diff --git a/include/llvm/Value.h b/include/llvm/Value.h index 4d94a30..f0bd8be 100644 --- a/include/llvm/Value.h +++ b/include/llvm/Value.h @@ -42,6 +42,7 @@ class AssemblyAnnotationWriter; class ValueHandleBase; class LLVMContext; class Twine; +class MDNode; //===----------------------------------------------------------------------===// // Value Class @@ -350,6 +351,9 @@ template <> inline bool isa_impl<GlobalValue, Value>(const Value &Val) { return isa<GlobalVariable>(Val) || isa<Function>(Val) || isa<GlobalAlias>(Val); } +template <> inline bool isa_impl<MDNode, Value>(const Value &Val) { + return Val.getValueID() == Value::MDNodeVal; +} // Value* is only 4-byte aligned. diff --git a/lib/VMCore/IntrinsicInst.cpp b/lib/VMCore/IntrinsicInst.cpp index b508f6b..5e0f42e 100644 --- a/lib/VMCore/IntrinsicInst.cpp +++ b/lib/VMCore/IntrinsicInst.cpp @@ -69,3 +69,11 @@ Value *DbgStopPointInst::getDirectory() const { assert(LLVMDebugVersion == (7 << 16) && "Verify operand indices"); return getContext()->getOperand(4); } + +//===----------------------------------------------------------------------===// +/// DbgValueInst - This represents the llvm.dbg.value instruction. +/// + +Value *DbgValueInst::getValue() const { + return cast<MDNode>(getOperand(1))->getOperand(0); +} |