[llvm-commits] CVS: llvm/lib/VMCore/IntrinsicInst.cpp

Jim Laskey jlaskey at apple.com
Thu Mar 23 10:05:24 PST 2006



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();
+ }
+ 
+ //===----------------------------------------------------------------------===//






More information about the llvm-commits mailing list