aboutsummaryrefslogtreecommitdiffstats
path: root/lib/VMCore/SymbolTable.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-06-25 07:33:13 +0000
committerChris Lattner <sabre@nondot.org>2001-06-25 07:33:13 +0000
commit20554f11d0410496bc5c49744e0d45c71a1a3955 (patch)
tree69b5232ea26f9799ddb3f7d814e7442a39638bb3 /lib/VMCore/SymbolTable.cpp
parentd473a0acc4f80eca8c98cf449a77633d1f2e8636 (diff)
downloadexternal_llvm-20554f11d0410496bc5c49744e0d45c71a1a3955.zip
external_llvm-20554f11d0410496bc5c49744e0d45c71a1a3955.tar.gz
external_llvm-20554f11d0410496bc5c49744e0d45c71a1a3955.tar.bz2
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.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/VMCore/SymbolTable.cpp b/lib/VMCore/SymbolTable.cpp
index 395c23f..214f41f 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) {