X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FVMCore%2FIntrinsicInst.cpp;h=fb7a74b5f779b0dada9de28efb5ba764caa19eed;hb=92e73d7628436ef76b0e9bb7f8224f02128e9906;hp=8bdb944373a463c7d5ec7e4820b2e6ad627a1034;hpb=0bd135db5942c4cbd5bef11cf21814bf5d1d1037;p=oota-llvm.git diff --git a/lib/VMCore/IntrinsicInst.cpp b/lib/VMCore/IntrinsicInst.cpp index 8bdb944373a..fb7a74b5f77 100644 --- a/lib/VMCore/IntrinsicInst.cpp +++ b/lib/VMCore/IntrinsicInst.cpp @@ -2,8 +2,8 @@ // // 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. // //===----------------------------------------------------------------------===// // @@ -26,10 +26,9 @@ //===----------------------------------------------------------------------===// #include "llvm/IntrinsicInst.h" - #include "llvm/Constants.h" #include "llvm/GlobalVariable.h" - +#include "llvm/CodeGen/MachineModuleInfo.h" using namespace llvm; //===----------------------------------------------------------------------===// @@ -38,20 +37,20 @@ 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; } Value *DbgInfoIntrinsic::StripCast(Value *C) { if (Value *CO = CastOperand(C)) { - return StripCast(CO); + C = StripCast(CO); } else if (GlobalVariable *GV = dyn_cast(C)) { if (GV->hasInitializer()) if (Value *CO = CastOperand(GV->getInitializer())) - return StripCast(CO); + C = StripCast(CO); } - return C; + return dyn_cast(C); } //===----------------------------------------------------------------------===// @@ -59,15 +58,23 @@ Value *DbgInfoIntrinsic::StripCast(Value *C) { /// 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(4)->getStringValue(); + return CS->getOperand(3)->getStringValue(); } 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(5)->getStringValue(); + return CS->getOperand(4)->getStringValue(); } //===----------------------------------------------------------------------===// +/// Ensure that users of IntrinsicInst.h will link with this module. +DEFINING_FILE_FOR(IntrinsicInst)