X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FVMCore%2FIntrinsicInst.cpp;h=ac8ec2086b18f58d42d204c4ac23f9faa020840d;hb=0e64f810a521806838bf90d77f081d3a1da98b5e;hp=a85d9a4b223fc65c87997780fe2ad92117544523;hpb=e2a78f2e3dcea4a087fd776aefc56e9edef840a9;p=oota-llvm.git diff --git a/lib/VMCore/IntrinsicInst.cpp b/lib/VMCore/IntrinsicInst.cpp index a85d9a4b223..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 @@ -26,11 +22,9 @@ //===----------------------------------------------------------------------===// #include "llvm/IntrinsicInst.h" - #include "llvm/Constants.h" #include "llvm/GlobalVariable.h" -#include "llvm/CodeGen/MachineDebugInfo.h" - +#include "llvm/Metadata.h" using namespace llvm; //===----------------------------------------------------------------------===// @@ -39,7 +33,7 @@ using namespace llvm; static Value *CastOperand(Value *C) { if (ConstantExpr *CE = dyn_cast(C)) - if (CE->getOpcode() == Instruction::Cast) + if (CE->isCast()) return CE->getOperand(0); return NULL; } @@ -56,25 +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 == (5 << 16) && "Verify operand indices"); - GlobalVariable *GV = cast(getContext()); - 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 == (5 << 16) && "Verify operand indices"); - GlobalVariable *GV = cast(getContext()); - 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); +}