From: Chris Lattner Date: Mon, 11 Oct 2004 22:21:13 +0000 (+0000) Subject: Add long overdue methods X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b92f50fe6091a7a12f54f9884529b1127b1a14e5;p=oota-llvm.git Add long overdue methods git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16921 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/BasicBlock.h b/include/llvm/BasicBlock.h index 9c82da266ef..2a18ba837ed 100644 --- a/include/llvm/BasicBlock.h +++ b/include/llvm/BasicBlock.h @@ -95,6 +95,18 @@ public: TerminatorInst *getTerminator(); const TerminatorInst *const getTerminator() const; + /// removeFromParent - This method unlinks 'this' from the containing + /// function, but does not delete it. + /// + void removeFromParent(); + + /// eraseFromParent - This method unlinks 'this' from the containing function + /// and deletes it. + /// + void eraseFromParent(); + + + //===--------------------------------------------------------------------===// /// Instruction iterator methods /// diff --git a/include/llvm/Function.h b/include/llvm/Function.h index 9e17f2602cc..63b533461a3 100644 --- a/include/llvm/Function.h +++ b/include/llvm/Function.h @@ -114,6 +114,17 @@ public: setLinkage(ExternalLinkage); } + /// removeFromParent - This method unlinks 'this' from the containing module, + /// but does not delete it. + /// + void removeFromParent(); + + /// eraseFromParent - This method unlinks 'this' from the containing module + /// and deletes it. + /// + void eraseFromParent(); + + // getNext/Prev - Return the next or previous function in the list. These // methods should never be used directly, and are only used to implement the // function list as part of the module. diff --git a/include/llvm/GlobalVariable.h b/include/llvm/GlobalVariable.h index dd6f24d7d03..99c39f17960 100644 --- a/include/llvm/GlobalVariable.h +++ b/include/llvm/GlobalVariable.h @@ -97,6 +97,16 @@ public: /// bool isConstant() const { return isConstantGlobal; } void setConstant(bool Value) { isConstantGlobal = Value; } + + /// removeFromParent - This method unlinks 'this' from the containing module, + /// but does not delete it. + /// + void removeFromParent(); + + /// eraseFromParent - This method unlinks 'this' from the containing module + /// and deletes it. + /// + void eraseFromParent(); /// Override Constant's implementation of this method so we can /// replace constant initializers. diff --git a/include/llvm/Instruction.h b/include/llvm/Instruction.h index 85f6cdb0b14..8d49870e4d3 100644 --- a/include/llvm/Instruction.h +++ b/include/llvm/Instruction.h @@ -57,6 +57,10 @@ public: // Specialize setName to handle symbol table majik... virtual void setName(const std::string &name, SymbolTable *ST = 0); + /// mayWriteToMemory - Return true if this instruction may modify memory. + /// + virtual bool mayWriteToMemory() const { return false; } + /// clone() - Create a copy of 'this' instruction that is identical in all /// ways except the following: /// * The instruction has no parent @@ -76,9 +80,15 @@ public: Instruction *getPrev() { return Prev; } const Instruction *getPrev() const { return Prev; } - /// mayWriteToMemory - Return true if this instruction may modify memory. + /// removeFromParent - This method unlinks 'this' from the containing basic + /// block, but does not delete it. /// - virtual bool mayWriteToMemory() const { return false; } + void removeFromParent(); + + /// eraseFromParent - This method unlinks 'this' from the containing basic + /// block and deletes it. + /// + void eraseFromParent(); // --------------------------------------------------------------------------- /// Subclass classification... getOpcode() returns a member of