X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FVMCore%2FIntrinsicInst.cpp;h=ac8ec2086b18f58d42d204c4ac23f9faa020840d;hb=f96703e62f2302cfe2465fb0fddaf62259eee62c;hp=dbd3c8caa6151adab0a402521a9b93f2be30c943;hpb=5fed164d7002f93fbe46c9e4b6d5c055a4635cb4;p=oota-llvm.git diff --git a/lib/VMCore/IntrinsicInst.cpp b/lib/VMCore/IntrinsicInst.cpp index dbd3c8caa61..ac8ec2086b1 100644 --- a/lib/VMCore/IntrinsicInst.cpp +++ b/lib/VMCore/IntrinsicInst.cpp @@ -2,17 +2,13 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by James M. Laskey and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // 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/MachineDebugInfo.h" +#include "llvm/Metadata.h" using namespace llvm; //===----------------------------------------------------------------------===// @@ -54,27 +50,24 @@ Value *DbgInfoIntrinsic::StripCast(Value *C) { } //===----------------------------------------------------------------------===// -/// DbgStopPointInst - This represents the llvm.dbg.stoppoint instruction. +/// DbgDeclareInst - This represents the llvm.dbg.declare 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(); +Value *DbgDeclareInst::getAddress() const { + if (MDNode* MD = cast_or_null(getArgOperand(0))) + return MD->getOperand(0); + else + return NULL; } -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(); +//===----------------------------------------------------------------------===// +/// DbgValueInst - This represents the llvm.dbg.value instruction. +/// + +const Value *DbgValueInst::getValue() const { + return cast(getArgOperand(0))->getOperand(0); } -//===----------------------------------------------------------------------===// -/// Ensure that users of IntrinsicInst.h will link with this module. -DEFINING_FILE_FOR(IntrinsicInst) +Value *DbgValueInst::getValue() { + return cast(getArgOperand(0))->getOperand(0); +}