X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FVMCore%2FIntrinsicInst.cpp;h=ac8ec2086b18f58d42d204c4ac23f9faa020840d;hb=0e64f810a521806838bf90d77f081d3a1da98b5e;hp=94f582911e13534f25d37d1fcfb24a9d9dd1ceae;hpb=84b7df43fb098268f6ce37a3e32bcc2f455ecf96;p=oota-llvm.git diff --git a/lib/VMCore/IntrinsicInst.cpp b/lib/VMCore/IntrinsicInst.cpp index 94f582911e1..ac8ec2086b1 100644 --- a/lib/VMCore/IntrinsicInst.cpp +++ b/lib/VMCore/IntrinsicInst.cpp @@ -8,11 +8,7 @@ //===----------------------------------------------------------------------===// // // This file implements methods that make it really easy to deal with intrinsic -// functions with the isa/dyncast family of functions. In particular, this -// allows you to do things like: -// -// if (DbgStopPointInst *SPI = dyn_cast(Inst)) -// ... SPI->getFileName() ... SPI->getDirectory() ... +// functions. // // All intrinsic function calls are instances of the call instruction, so these // are all subclasses of the CallInst class. Note that none of these classes @@ -28,7 +24,7 @@ #include "llvm/IntrinsicInst.h" #include "llvm/Constants.h" #include "llvm/GlobalVariable.h" -#include "llvm/CodeGen/MachineModuleInfo.h" +#include "llvm/Metadata.h" using namespace llvm; //===----------------------------------------------------------------------===// @@ -54,23 +50,24 @@ Value *DbgInfoIntrinsic::StripCast(Value *C) { } //===----------------------------------------------------------------------===// -/// DbgStopPointInst - This represents the llvm.dbg.stoppoint instruction. +/// DbgDeclareInst - This represents the llvm.dbg.declare instruction. +/// + +Value *DbgDeclareInst::getAddress() const { + if (MDNode* MD = cast_or_null(getArgOperand(0))) + return MD->getOperand(0); + else + return NULL; +} + +//===----------------------------------------------------------------------===// +/// DbgValueInst - This represents the llvm.dbg.value instruction. /// -std::string DbgStopPointInst::getFileName() const { - // Once the operand indices are verified, update this assert - assert(LLVMDebugVersion == (6 << 16) && "Verify operand indices"); - GlobalVariable *GV = cast(getContext()); - if (!GV->hasInitializer()) return ""; - ConstantStruct *CS = cast(GV->getInitializer()); - return CS->getOperand(3)->getStringValue(); +const Value *DbgValueInst::getValue() const { + return cast(getArgOperand(0))->getOperand(0); } -std::string DbgStopPointInst::getDirectory() const { - // Once the operand indices are verified, update this assert - assert(LLVMDebugVersion == (6 << 16) && "Verify operand indices"); - GlobalVariable *GV = cast(getContext()); - if (!GV->hasInitializer()) return ""; - ConstantStruct *CS = cast(GV->getInitializer()); - return CS->getOperand(4)->getStringValue(); +Value *DbgValueInst::getValue() { + return cast(getArgOperand(0))->getOperand(0); }