* Rename get.*Operator to create seeing that it would have to be qualified
authorChris Lattner <sabre@nondot.org>
Mon, 25 Jun 2001 07:31:05 +0000 (07:31 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 25 Jun 2001 07:31:05 +0000 (07:31 +0000)
  with the classname anyways.
* Add an isPHINode() method to Instruction
* Add getUniqueName() to SymbolTable class
* Add an insert method to ValueHolder

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/InstrTypes.h
include/llvm/Instruction.h
include/llvm/SymbolTable.h
include/llvm/ValueHolder.h
lib/VMCore/ValueHolderImpl.h

index 23d60198660af5fe6c309bd3517c5ed9f444d596..6d35ed5d50f5d19b96442f006d0a891972ed1c71 100644 (file)
@@ -60,10 +60,10 @@ class UnaryOperator : public Instruction {
   Use Source;
 public:
 
-  // getUnaryOperator() - Construct a unary instruction, given the opcode
+  // create() - Construct a unary instruction, given the opcode
   // and its operand.
   //
-  static UnaryOperator *getUnaryOperator(unsigned Op, Value *Source);
+  static UnaryOperator *create(unsigned Op, Value *Source);
 
   UnaryOperator(Value *S, unsigned iType, const string &Name = "")
       : Instruction(S->getType(), iType, Name), Source(S, this) {
@@ -71,7 +71,7 @@ public:
   inline ~UnaryOperator() { dropAllReferences(); }
 
   virtual Instruction *clone() const { 
-    return getUnaryOperator(getInstType(), Source);
+    return create(getInstType(), Source);
   }
 
   virtual void dropAllReferences() {
@@ -105,10 +105,11 @@ class BinaryOperator : public Instruction {
   Use Source1, Source2;
 public:
 
-  // getBinaryOperator() - Construct a binary instruction, given the opcode
+  // create() - Construct a binary instruction, given the opcode
   // and the two operands.
   //
-  static BinaryOperator *getBinaryOperator(unsigned Op, Value *S1, Value *S2);
+  static BinaryOperator *create(unsigned Op, Value *S1, Value *S2,
+                               const string &Name = "");
 
   BinaryOperator(unsigned iType, Value *S1, Value *S2, 
                  const string &Name = "") 
@@ -118,8 +119,8 @@ public:
   }
   inline ~BinaryOperator() { dropAllReferences(); }
 
-  virtual Instruction *clone() const { 
-    return getBinaryOperator(getInstType(), Source1, Source2);
+  virtual Instruction *clone() const {
+    return create(getInstType(), Source1, Source2);
   }
 
   virtual void dropAllReferences() {
index 0ac1921682381d1bfc23e033d4260265481cd730..871ed037ef1d27762cb26046042ee7c5637eb128 100644 (file)
@@ -85,6 +85,9 @@ public:
     return iType >= FirstBinaryOp && iType < NumBinaryOps;
   }
 
+  // isPHINode() - This is used frequently enough to allow it to exist
+  inline bool isPHINode() const { return iType == PHINode; }
+
 
   //----------------------------------------------------------------------
   // Exported enumerations...
index dfb78eee822ad1767b27e1a692af20e9ff147e4a..91c5d613d45d20bbd2441c868f7e6a41d3ede270 100644 (file)
@@ -58,6 +58,12 @@ public:
   void remove(Value *N);
   Value *type_remove(const type_iterator &It);
 
+  // getUniqueName - Given a base name, return a string that is either equal to
+  // it (or derived from it) that does not already occur in the symbol table for
+  // the specified type.
+  //
+  string getUniqueName(const Type *Ty, const string &BaseName);
+
   inline unsigned type_size(const Type *TypeID) const {
     return find(TypeID)->second.size();
   }
index 134262354a1274f69435d1fa4fcdb5ae42671272..26ecd267f2c8ea31a9dcee3c4f2e9c867e15697f 100644 (file)
@@ -82,12 +82,18 @@ public:
   // specified by the iterator, and leaves the iterator pointing to the element 
   // that used to follow the element deleted.
   //
-  ValueSubclass *remove(iterator &DI);        // Defined in ValueHolderImpl.h
-  ValueSubclass *remove(const iterator &DI);  // Defined in ValueHolderImpl.h
-  void     remove(ValueSubclass *D);          // Defined in ValueHolderImpl.h
+  ValueSubclass *remove(iterator &DI);         // Defined in ValueHolderImpl.h
+  ValueSubclass *remove(const iterator &DI);   // Defined in ValueHolderImpl.h
+  void           remove(ValueSubclass *D);     // Defined in ValueHolderImpl.h
 
-  inline void push_front(ValueSubclass *Inst); // Defined in ValueHolderImpl.h
-  inline void push_back(ValueSubclass *Inst);  // Defined in ValueHolderImpl.h
+  void push_front(ValueSubclass *Inst);        // Defined in ValueHolderImpl.h
+  void push_back(ValueSubclass *Inst);         // Defined in ValueHolderImpl.h
+
+  // ValueHolder::insert - This method inserts the specified value *BEFORE* the 
+  // indicated iterator position, and returns an interator to the newly inserted
+  // value.
+  //
+  iterator insert(iterator Pos, ValueSubclass *Inst);
 };
 
 #endif
index 9ca5d949267343dcd7a98d48f8f588d77564d241..1bfdd2512e129dcb4c521dec1367e331766d34cd 100644 (file)
@@ -100,4 +100,21 @@ void ValueHolder<ValueSubclass,ItemParentType>::push_back(ValueSubclass *Inst) {
     Parent->getSymbolTableSure()->insert(Inst);
 }
 
+// ValueHolder::insert - This method inserts the specified value *BEFORE* the 
+// indicated iterator position, and returns an interator to the newly inserted
+// value.
+//
+template<class ValueSubclass, class ItemParentType>
+ValueHolder<ValueSubclass,ItemParentType>::iterator
+ValueHolder<ValueSubclass,ItemParentType>::insert(iterator Pos,
+                                                          ValueSubclass *Inst){
+  assert(Inst->getParent() == 0 && "Value already has parent!");
+  Inst->setParent(ItemParent);
+
+  iterator I = ValueList.insert(Pos, Inst);
+  if (Inst->hasName() && Parent)
+    Parent->getSymbolTableSure()->insert(Inst);
+  return I;
+}
+
 #endif