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 | |
parent | d473a0acc4f80eca8c98cf449a77633d1f2e8636 (diff) | |
download | llvm-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.cpp | 9 | ||||
-rw-r--r-- | lib/VMCore/Instruction.cpp | 33 | ||||
-rw-r--r-- | lib/VMCore/SymbolTable.cpp | 19 | ||||
-rw-r--r-- | lib/VMCore/iOperators.cpp | 19 |
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 //===----------------------------------------------------------------------===// |