diff options
Diffstat (limited to 'include/llvm/InstrTypes.h')
-rw-r--r-- | include/llvm/InstrTypes.h | 31 |
1 files changed, 6 insertions, 25 deletions
diff --git a/include/llvm/InstrTypes.h b/include/llvm/InstrTypes.h index c14b3bbc26..a6a8fff40c 100644 --- a/include/llvm/InstrTypes.h +++ b/include/llvm/InstrTypes.h @@ -38,16 +38,14 @@ protected: Use *Ops, unsigned NumOps, BasicBlock *InsertAtEnd) : Instruction(Ty, iType, Ops, NumOps, InsertAtEnd) {} + // Out of line virtual method, so the vtable, etc has a home. + ~TerminatorInst(); + /// Virtual methods - Terminators should overload these and provide inline /// overrides of non-V methods. virtual BasicBlock *getSuccessorV(unsigned idx) const = 0; virtual unsigned getNumSuccessorsV() const = 0; virtual void setSuccessorV(unsigned idx, BasicBlock *B) = 0; - - static void destroyThis(TerminatorInst* v) { - Instruction::destroyThis(v); - } - friend class Value; public: virtual Instruction *clone() const = 0; @@ -96,12 +94,10 @@ protected: UnaryInstruction(const Type *Ty, unsigned iType, Value *V, BasicBlock *IAE) : Instruction(Ty, iType, &Op, 1, IAE), Op(V, this_()) { } - - static void destroyThis(UnaryInstruction* v) { - Instruction::destroyThis(v); - } - friend class Value; public: + // Out of line virtual method, so the vtable, etc has a home. + ~UnaryInstruction(); + // Transparently provide more efficient getOperand methods. Value *getOperand(unsigned i) const { assert(i == 0 && "getOperand() out of range!"); @@ -140,11 +136,6 @@ protected: const std::string &Name, Instruction *InsertBefore); BinaryOperator(BinaryOps iType, Value *S1, Value *S2, const Type *Ty, const std::string &Name, BasicBlock *InsertAtEnd); - - static void destroyThis(BinaryOperator* v) { - Instruction::destroyThis(v); - } - friend class Value; public: /// Transparently provide more efficient getOperand methods. @@ -281,12 +272,6 @@ protected: : UnaryInstruction(Ty, iType, S, InsertAtEnd) { setName(Name); } - -protected: - static void destroyThis(CastInst* v) { - UnaryInstruction::destroyThis(v); - } - friend class Value; public: /// Provides a way to construct any of the CastInst subclasses using an /// opcode instead of the subclass's constructor. The opcode must be in the @@ -508,10 +493,6 @@ protected: Use Ops[2]; // CmpInst instructions always have 2 operands, optimize - static void destroyThis(CmpInst* v) { - Instruction::destroyThis(v); - } - friend class Value; public: /// Construct a compare instruction, given the opcode, the predicate and /// the two operands. Optionally (if InstBefore is specified) insert the |