diff options
author | Chris Lattner <sabre@nondot.org> | 2001-06-25 07:33:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2001-06-25 07:33:13 +0000 |
commit | 20554f11d0410496bc5c49744e0d45c71a1a3955 (patch) | |
tree | 69b5232ea26f9799ddb3f7d814e7442a39638bb3 /lib/VMCore/SymbolTable.cpp | |
parent | d473a0acc4f80eca8c98cf449a77633d1f2e8636 (diff) |
Moved UnaryOperator::create to InstrTypes.cpp until there is an iUnaryOps.cpp
Moved BinaryOperator::create to iBinaryOperators.cpp
Add getUniqueName to SymbolTable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/SymbolTable.cpp')
-rw-r--r-- | lib/VMCore/SymbolTable.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/VMCore/SymbolTable.cpp b/lib/VMCore/SymbolTable.cpp index 395c23f2ab..214f41f169 100644 --- a/lib/VMCore/SymbolTable.cpp +++ b/lib/VMCore/SymbolTable.cpp @@ -6,6 +6,7 @@ #include "llvm/SymbolTable.h" #include "llvm/InstrTypes.h" +#include "llvm/Tools/StringExtras.h" #ifndef NDEBUG #include "llvm/BasicBlock.h" // Required for assertions to work. #include "llvm/Type.h" @@ -45,6 +46,24 @@ SymbolTable::type_iterator SymbolTable::type_find(const Type *Ty, return I->second.find(Name); } +// 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 SymbolTable::getUniqueName(const Type *Ty, const string &BaseName) { + iterator I = find(Ty); + if (I == end()) return BaseName; + + string TryName = BaseName; + unsigned Counter = 0; + type_iterator End = I->second.end(); + + while (I->second.find(TryName) != End) // Loop until we find unoccupied + TryName = BaseName + utostr(++Counter); // Name in the symbol table + return TryName; +} + + // lookup - Returns null on failure... Value *SymbolTable::lookup(const Type *Ty, const string &Name) { |