+
+ /// DbgFuncStartInst - This represents the llvm.dbg.func.start instruction.
+ ///
+ struct DbgFuncStartInst : public DbgInfoIntrinsic {
+ Value *getSubprogram() const { return StripCast(getOperand(1)); }
+
+ // Methods for support type inquiry through isa, cast, and dyn_cast:
+ static inline bool classof(const DbgFuncStartInst *) { return true; }
+ static inline bool classof(const IntrinsicInst *I) {
+ return I->getIntrinsicID() == Intrinsic::dbg_func_start;
+ }
+ static inline bool classof(const Value *V) {
+ return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
+ }
+ };
+
+ /// DbgRegionStartInst - This represents the llvm.dbg.region.start
+ /// instruction.
+ struct DbgRegionStartInst : public DbgInfoIntrinsic {
+ Value *getContext() const { return StripCast(getOperand(1)); }
+
+ // Methods for support type inquiry through isa, cast, and dyn_cast:
+ static inline bool classof(const DbgRegionStartInst *) { return true; }
+ static inline bool classof(const IntrinsicInst *I) {
+ return I->getIntrinsicID() == Intrinsic::dbg_region_start;
+ }
+ static inline bool classof(const Value *V) {
+ return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
+ }
+ };
+
+ /// DbgRegionEndInst - This represents the llvm.dbg.region.end instruction.
+ ///
+ struct DbgRegionEndInst : public DbgInfoIntrinsic {
+ Value *getContext() const { return StripCast(getOperand(1)); }
+
+ // Methods for support type inquiry through isa, cast, and dyn_cast:
+ static inline bool classof(const DbgRegionEndInst *) { return true; }
+ static inline bool classof(const IntrinsicInst *I) {
+ return I->getIntrinsicID() == Intrinsic::dbg_region_end;
+ }
+ static inline bool classof(const Value *V) {
+ return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
+ }
+ };
+
+ /// DbgDeclareInst - This represents the llvm.dbg.declare instruction.
+ ///
+ struct DbgDeclareInst : public DbgInfoIntrinsic {
+ Value *getAddress() const { return getOperand(1); }
+ Value *getVariable() const { return StripCast(getOperand(2)); }
+
+ // Methods for support type inquiry through isa, cast, and dyn_cast:
+ static inline bool classof(const DbgDeclareInst *) { return true; }
+ static inline bool classof(const IntrinsicInst *I) {
+ return I->getIntrinsicID() == Intrinsic::dbg_declare;
+ }
+ static inline bool classof(const Value *V) {
+ return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
+ }
+ };