Changes in directory llvm/include/llvm:
InstrTypes.h updated: 1.45 -> 1.46 Instruction.h updated: 1.71 -> 1.72 Instructions.h updated: 1.36 -> 1.37 --- Log message: Add some out-of-line virtual dtors so that the class has a "home", preventing vtables for (e.g.) Instruction from being emitted into every .o file. --- Diffs of the changes: (+11 -7) InstrTypes.h | 5 +++++ Instruction.h | 8 +++----- Instructions.h | 5 +++-- 3 files changed, 11 insertions(+), 7 deletions(-) Index: llvm/include/llvm/InstrTypes.h diff -u llvm/include/llvm/InstrTypes.h:1.45 llvm/include/llvm/InstrTypes.h:1.46 --- llvm/include/llvm/InstrTypes.h:1.45 Sun Apr 24 02:28:04 2005 +++ llvm/include/llvm/InstrTypes.h Wed Jun 21 11:53:47 2006 @@ -43,6 +43,9 @@ const std::string &Name, BasicBlock *InsertAtEnd) : Instruction(Ty, iType, Ops, NumOps, Name, 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; @@ -96,6 +99,8 @@ : Instruction(Ty, iType, &Op, 1, Name, IAE), Op(V, this) { } 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 { Index: llvm/include/llvm/Instruction.h diff -u llvm/include/llvm/Instruction.h:1.71 llvm/include/llvm/Instruction.h:1.72 --- llvm/include/llvm/Instruction.h:1.71 Tue May 9 12:29:17 2006 +++ llvm/include/llvm/Instruction.h Wed Jun 21 11:53:47 2006 @@ -52,11 +52,9 @@ Instruction(const Type *Ty, unsigned iType, Use *Ops, unsigned NumOps, const std::string &Name, BasicBlock *InsertAtEnd); public: - - ~Instruction() { - assert(Parent == 0 && "Instruction still linked in the program!"); - } - + // Out of line virtual method, so the vtable, etc has a home. + ~Instruction(); + /// mayWriteToMemory - Return true if this instruction may modify memory. /// virtual bool mayWriteToMemory() const { return false; } Index: llvm/include/llvm/Instructions.h diff -u llvm/include/llvm/Instructions.h:1.36 llvm/include/llvm/Instructions.h:1.37 --- llvm/include/llvm/Instructions.h:1.36 Fri May 19 14:07:54 2006 +++ llvm/include/llvm/Instructions.h Wed Jun 21 11:53:47 2006 @@ -40,9 +40,10 @@ const std::string &Name = "", Instruction *InsertBefore = 0); AllocationInst(const Type *Ty, Value *ArraySize, unsigned iTy, unsigned Align, const std::string &Name, BasicBlock *InsertAtEnd); - public: - + // Out of line virtual method, so the vtable, etc has a home. + virtual ~AllocationInst(); + /// isArrayAllocation - Return true if there is an allocation size parameter /// to the allocation instruction that is not 1. /// _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits