summaryrefslogtreecommitdiff
path: root/lib
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
parentd473a0acc4f80eca8c98cf449a77633d1f2e8636 (diff)
downloadllvm-20554f11d0410496bc5c49744e0d45c71a1a3955.tar.gz
llvm-20554f11d0410496bc5c49744e0d45c71a1a3955.tar.bz2
llvm-20554f11d0410496bc5c49744e0d45c71a1a3955.tar.xz
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')
-rw-r--r--lib/VMCore/InstrTypes.cpp9
-rw-r--r--lib/VMCore/Instruction.cpp33
-rw-r--r--lib/VMCore/SymbolTable.cpp19
-rw-r--r--lib/VMCore/iOperators.cpp19
4 files changed, 47 insertions, 33 deletions
diff --git a/lib/VMCore/InstrTypes.cpp b/lib/VMCore/InstrTypes.cpp
index 15db9e07a7..142019b93d 100644
--- a/lib/VMCore/InstrTypes.cpp
+++ b/lib/VMCore/InstrTypes.cpp
@@ -11,6 +11,15 @@
#include "llvm/Type.h"
#include <algorithm>
+// TODO: Move to getUnaryOperator iUnary.cpp when and if it exists!
+UnaryOperator *UnaryOperator::create(unsigned Op, Value *Source) {
+ switch (Op) {
+ default:
+ cerr << "Don't know how to GetUnaryOperator " << Op << endl;
+ return 0;
+ }
+}
+
//===----------------------------------------------------------------------===//
// TerminatorInst Class
//===----------------------------------------------------------------------===//
diff --git a/lib/VMCore/Instruction.cpp b/lib/VMCore/Instruction.cpp
index 6cb62ea374..bd3596debf 100644
--- a/lib/VMCore/Instruction.cpp
+++ b/lib/VMCore/Instruction.cpp
@@ -8,8 +8,6 @@
#include "llvm/BasicBlock.h"
#include "llvm/Method.h"
#include "llvm/SymbolTable.h"
-#include "llvm/iBinary.h"
-#include "llvm/iUnary.h"
Instruction::Instruction(const Type *ty, unsigned it, const string &Name)
: User(ty, Value::InstructionVal, Name) {
@@ -29,34 +27,3 @@ void Instruction::setName(const string &name) {
Value::setName(name);
if (PP && hasName()) PP->getSymbolTableSure()->insert(this);
}
-
-BinaryOperator *BinaryOperator::getBinaryOperator(unsigned Op,
- Value *S1, Value *S2) {
- switch (Op) {
- case Add:
- return new AddInst(S1, S2);
- case Sub:
- return new SubInst(S1, S2);
-
- case SetLT:
- case SetGT:
- case SetLE:
- case SetGE:
- case SetEQ:
- case SetNE:
- return new SetCondInst((BinaryOps)Op, S1, S2);
-
- default:
- cerr << "Don't know how to GetBinaryOperator " << Op << endl;
- return 0;
- }
-}
-
-
-UnaryOperator *UnaryOperator::getUnaryOperator(unsigned Op, Value *Source) {
- switch (Op) {
- default:
- cerr << "Don't know how to GetUnaryOperator " << Op << endl;
- return 0;
- }
-}
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) {
diff --git a/lib/VMCore/iOperators.cpp b/lib/VMCore/iOperators.cpp
index c754f42b6f..d856a20d0a 100644
--- a/lib/VMCore/iOperators.cpp
+++ b/lib/VMCore/iOperators.cpp
@@ -7,6 +7,25 @@
#include "llvm/iBinary.h"
#include "llvm/Type.h"
+BinaryOperator *BinaryOperator::create(unsigned Op, Value *S1, Value *S2,
+ const string &Name) {
+ switch (Op) {
+ case Add: return new AddInst(S1, S2, Name);
+ case Sub: return new SubInst(S1, S2, Name);
+ case SetLT:
+ case SetGT:
+ case SetLE:
+ case SetGE:
+ case SetEQ:
+ case SetNE:
+ return new SetCondInst((BinaryOps)Op, S1, S2, Name);
+
+ default:
+ cerr << "Don't know how to GetBinaryOperator " << Op << endl;
+ return 0;
+ }
+}
+
//===----------------------------------------------------------------------===//
// SetCondInst Class
//===----------------------------------------------------------------------===//