- void insert(Value *Val);
-
- /// This method removes a value from the symbol table. The name of the
- /// Value is extracted from \p Val and used to lookup the Value in the
- /// symbol table. If the Value is not in the symbol table, this method
- /// returns false. \p Val is not deleted, just removed from the symbol table.
- /// @returns true if \p Val was successfully removed, false otherwise
- /// @brief Remove a value from the symbol table.
- bool remove(Value* Val);
-
- /// Given a value with a non-empty name, remove its existing
- /// entry from the symbol table and insert a new one for Name. This is
- /// equivalent to doing "remove(V), V->Name = Name, insert(V)".
- /// @brief Rename a value in the symbol table
- bool rename(Value *V, const std::string &Name);
-
+ void reinsertValue(Value *V);
+
+ /// createValueName - This method attempts to create a value name and insert
+ /// it into the symbol table with the specified name. If it conflicts, it
+ /// auto-renames the name and returns that instead.
+ ValueName *createValueName(const char *NameStart, unsigned NameLen, Value *V);
+
+ /// This method removes a value from the symbol table. It leaves the
+ /// ValueName attached to the value, but it is no longer inserted in the
+ /// symtab.
+ void removeValueName(ValueName *V);
+