Changes in directory llvm/lib/VMCore:
IntrinsicInst.cpp added (r1.1) --- Log message: Simplify handling of llvm.dbg intrinsic operands to one spot. --- Diffs of the changes: (+55 -0) IntrinsicInst.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 55 insertions(+) Index: llvm/lib/VMCore/IntrinsicInst.cpp diff -c /dev/null llvm/lib/VMCore/IntrinsicInst.cpp:1.1 *** /dev/null Thu Mar 23 12:05:22 2006 --- llvm/lib/VMCore/IntrinsicInst.cpp Thu Mar 23 12:05:12 2006 *************** *** 0 **** --- 1,55 ---- + //===-- InstrinsicInst.cpp - Intrinsic Instruction Wrappers -----*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by the LLVM research group and is distributed under + // the University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===----------------------------------------------------------------------===// + + #include "llvm/IntrinsicInst.h" + + #include "llvm/Constants.h" + #include "llvm/GlobalVariable.h" + + using namespace llvm; + + //===----------------------------------------------------------------------===// + /// DbgInfoIntrinsic - This is the common base class for debug info intrinsics + /// + + static Value *CastOperand(Value *C) { + if (ConstantExpr *CE = dyn_cast<ConstantExpr>(C)) + if (CE->getOpcode() == Instruction::Cast) + return CE->getOperand(0); + return NULL; + } + + Value *DbgInfoIntrinsic::StripCast(Value *C) { + if (Value *CO = CastOperand(C)) { + return StripCast(CO); + } else if (GlobalVariable *GV = dyn_cast<GlobalVariable>(C)) { + if (GV->hasInitializer()) + if (Value *CO = CastOperand(GV->getInitializer())) + return StripCast(CO); + } + return C; + } + + //===----------------------------------------------------------------------===// + /// DbgStopPointInst - This represents the llvm.dbg.stoppoint instruction. + /// + + std::string DbgStopPointInst::getFileName() const { + GlobalVariable *GV = cast<GlobalVariable>(getContext()); + ConstantStruct *CS = cast<ConstantStruct>(GV->getInitializer()); + return CS->getOperand(4)->getStringValue(); + } + + std::string DbgStopPointInst::getDirectory() const { + GlobalVariable *GV = cast<GlobalVariable>(getContext()); + ConstantStruct *CS = cast<ConstantStruct>(GV->getInitializer()); + return CS->getOperand(5)->getStringValue(); + } + + //===----------------------------------------------------------------------===// _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits