diff options
author | Chris Lattner <sabre@nondot.org> | 2005-03-05 19:51:50 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-03-05 19:51:50 +0000 |
commit | 0d1e40728d668085257b78657b381e1f13d77d52 (patch) | |
tree | 00e51cc189ccb0faa187276ed1c6ca5f2d953b9e | |
parent | 7acff25f7f48ccbc8ca55032a59bfd4102ebed72 (diff) | |
download | llvm-0d1e40728d668085257b78657b381e1f13d77d52.tar.gz llvm-0d1e40728d668085257b78657b381e1f13d77d52.tar.bz2 llvm-0d1e40728d668085257b78657b381e1f13d77d52.tar.xz |
remove all of the various setName implementations, consolidating them into
Value::setName, which is no longer virtual.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20464 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Argument.h | 3 | ||||
-rw-r--r-- | include/llvm/BasicBlock.h | 3 | ||||
-rw-r--r-- | include/llvm/Constant.h | 3 | ||||
-rw-r--r-- | include/llvm/Function.h | 3 | ||||
-rw-r--r-- | include/llvm/GlobalVariable.h | 3 | ||||
-rw-r--r-- | include/llvm/Instruction.h | 3 | ||||
-rw-r--r-- | include/llvm/Value.h | 4 | ||||
-rw-r--r-- | lib/VMCore/BasicBlock.cpp | 9 | ||||
-rw-r--r-- | lib/VMCore/Constants.cpp | 4 | ||||
-rw-r--r-- | lib/VMCore/Function.cpp | 17 | ||||
-rw-r--r-- | lib/VMCore/Globals.cpp | 8 | ||||
-rw-r--r-- | lib/VMCore/Instruction.cpp | 9 | ||||
-rw-r--r-- | lib/VMCore/Value.cpp | 31 |
13 files changed, 29 insertions, 71 deletions
diff --git a/include/llvm/Argument.h b/include/llvm/Argument.h index 51e53b17bd..3c38cdea03 100644 --- a/include/llvm/Argument.h +++ b/include/llvm/Argument.h @@ -39,9 +39,6 @@ public: /// Argument(const Type *Ty, const std::string &Name = "", Function *F = 0); - /// setName - Specialize setName to handle symbol table majik. - virtual void setName(const std::string &name); - inline const Function *getParent() const { return Parent; } inline Function *getParent() { return Parent; } diff --git a/include/llvm/BasicBlock.h b/include/llvm/BasicBlock.h index b48693f0dc..ad509bb2cc 100644 --- a/include/llvm/BasicBlock.h +++ b/include/llvm/BasicBlock.h @@ -76,9 +76,6 @@ public: BasicBlock *InsertBefore = 0); ~BasicBlock(); - // Specialize setName to take care of symbol table majik - virtual void setName(const std::string &name); - /// getParent - Return the enclosing method, or null if none /// const Function *getParent() const { return InstList.getParent(); } diff --git a/include/llvm/Constant.h b/include/llvm/Constant.h index 112cb4d2ab..43a736e49c 100644 --- a/include/llvm/Constant.h +++ b/include/llvm/Constant.h @@ -26,9 +26,6 @@ protected: void destroyConstantImpl(); public: - // setName - Specialize setName to handle symbol table majik. - virtual void setName(const std::string &name); - /// Static constructor to get a '0' constant of arbitrary type... /// static Constant *getNullValue(const Type *Ty); diff --git a/include/llvm/Function.h b/include/llvm/Function.h index 112958002c..05ac47ddd6 100644 --- a/include/llvm/Function.h +++ b/include/llvm/Function.h @@ -85,9 +85,6 @@ public: const std::string &N = "", Module *M = 0); ~Function(); - // Specialize setName to handle symbol table majik. - virtual void setName(const std::string &name); - const Type *getReturnType() const; // Return the type of the ret val const FunctionType *getFunctionType() const; // Return the FunctionType for me diff --git a/include/llvm/GlobalVariable.h b/include/llvm/GlobalVariable.h index 9f73911872..1faa095d05 100644 --- a/include/llvm/GlobalVariable.h +++ b/include/llvm/GlobalVariable.h @@ -51,9 +51,6 @@ public: Constant *Initializer = 0, const std::string &Name = "", Module *Parent = 0); - // Specialize setName to handle symbol table majik. - virtual void setName(const std::string &name); - /// isExternal - Is this global variable lacking an initializer? If so, the /// global variable is defined in some other translation unit, and is thus /// externally defined here. diff --git a/include/llvm/Instruction.h b/include/llvm/Instruction.h index ae8d5caf08..da0767d47f 100644 --- a/include/llvm/Instruction.h +++ b/include/llvm/Instruction.h @@ -54,9 +54,6 @@ public: assert(Parent == 0 && "Instruction still linked in the program!"); } - // Specialize setName to handle symbol table majik. - virtual void setName(const std::string &name); - /// mayWriteToMemory - Return true if this instruction may modify memory. /// virtual bool mayWriteToMemory() const { return false; } diff --git a/include/llvm/Value.h b/include/llvm/Value.h index f59e946128..164c7ee811 100644 --- a/include/llvm/Value.h +++ b/include/llvm/Value.h @@ -75,9 +75,7 @@ public: inline bool hasName() const { return !Name.empty(); } inline const std::string &getName() const { return Name; } - virtual void setName(const std::string &name) { - Name = name; - } + void setName(const std::string &name); /// replaceAllUsesWith - Go through the uses list for this definition and make /// each use point to "V" instead of "this". After this completes, 'this's diff --git a/lib/VMCore/BasicBlock.cpp b/lib/VMCore/BasicBlock.cpp index 232a4e3391..49bd8cf7be 100644 --- a/lib/VMCore/BasicBlock.cpp +++ b/lib/VMCore/BasicBlock.cpp @@ -16,7 +16,6 @@ #include "llvm/Instructions.h" #include "llvm/Type.h" #include "llvm/Support/CFG.h" -#include "llvm/SymbolTable.h" #include "llvm/Support/LeakDetector.h" #include "SymbolTableListTraitsImpl.h" #include <algorithm> @@ -95,14 +94,6 @@ void BasicBlock::setParent(Function *parent) { LeakDetector::removeGarbageObject(this); } -// Specialize setName to take care of symbol table majik -void BasicBlock::setName(const std::string &name) { - Function *P; - if ((P = getParent()) && hasName()) P->getSymbolTable().remove(this); - Value::setName(name); - if (P && hasName()) P->getSymbolTable().insert(this); -} - void BasicBlock::removeFromParent() { getParent()->getBasicBlockList().remove(this); } diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index 99a15eae70..dfba3508e0 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -31,10 +31,6 @@ ConstantBool *ConstantBool::False = new ConstantBool(false); // Constant Class //===----------------------------------------------------------------------===// -void Constant::setName(const std::string &Name) { - // Constants can't take names. -} - void Constant::destroyConstantImpl() { // When a Constant is destroyed, there may be lingering // references to the constant by other constants in the constant pool. These diff --git a/lib/VMCore/Function.cpp b/lib/VMCore/Function.cpp index 7cced301e6..df8d1f904f 100644 --- a/lib/VMCore/Function.cpp +++ b/lib/VMCore/Function.cpp @@ -62,15 +62,6 @@ Argument::Argument(const Type *Ty, const std::string &Name, Function *Par) Par->getArgumentList().push_back(this); } - -// Specialize setName to take care of symbol table majik -void Argument::setName(const std::string &name) { - Function *P; - if ((P = getParent()) && hasName()) P->getSymbolTable().remove(this); - Value::setName(name); - if (P && hasName()) P->getSymbolTable().insert(this); -} - void Argument::setParent(Function *parent) { if (getParent()) LeakDetector::addGarbageObject(this); @@ -118,14 +109,6 @@ Function::~Function() { delete SymTab; } -// Specialize setName to take care of symbol table majik -void Function::setName(const std::string &name) { - Module *P; - if ((P = getParent()) && hasName()) P->getSymbolTable().remove(this); - Value::setName(name); - if (P && hasName()) P->getSymbolTable().insert(this); -} - void Function::setParent(Module *parent) { if (getParent()) LeakDetector::addGarbageObject(this); diff --git a/lib/VMCore/Globals.cpp b/lib/VMCore/Globals.cpp index efa588bd56..c0264ae3c1 100644 --- a/lib/VMCore/Globals.cpp +++ b/lib/VMCore/Globals.cpp @@ -99,14 +99,6 @@ void GlobalVariable::setParent(Module *parent) { LeakDetector::removeGarbageObject(this); } -// Specialize setName to take care of symbol table majik -void GlobalVariable::setName(const std::string &name) { - Module *P; - if ((P = getParent()) && hasName()) P->getSymbolTable().remove(this); - Value::setName(name); - if (P && hasName()) P->getSymbolTable().insert(this); -} - void GlobalVariable::removeFromParent() { getParent()->getGlobalList().remove(this); } diff --git a/lib/VMCore/Instruction.cpp b/lib/VMCore/Instruction.cpp index eeba47b52e..4ccbd74dfd 100644 --- a/lib/VMCore/Instruction.cpp +++ b/lib/VMCore/Instruction.cpp @@ -57,15 +57,6 @@ void Instruction::setParent(BasicBlock *P) { Parent = P; } -// Specialize setName to take care of symbol table majik -void Instruction::setName(const std::string &name) { - BasicBlock *P = 0; Function *PP = 0; - if ((P = getParent()) && (PP = P->getParent()) && hasName()) - PP->getSymbolTable().remove(this); - Value::setName(name); - if (PP && hasName()) PP->getSymbolTable().insert(this); -} - void Instruction::removeFromParent() { getParent()->getInstList().remove(this); } diff --git a/lib/VMCore/Value.cpp b/lib/VMCore/Value.cpp index b3b133f779..cdde96b455 100644 --- a/lib/VMCore/Value.cpp +++ b/lib/VMCore/Value.cpp @@ -11,11 +11,11 @@ // //===----------------------------------------------------------------------===// +#include "llvm/Constant.h" +#include "llvm/DerivedTypes.h" #include "llvm/InstrTypes.h" +#include "llvm/Module.h" #include "llvm/SymbolTable.h" -#include "llvm/DerivedTypes.h" -#include "llvm/Constant.h" -#include "llvm/GlobalValue.h" #include "llvm/Support/LeakDetector.h" #include <algorithm> #include <iostream> @@ -93,6 +93,31 @@ unsigned Value::getNumUses() const { } +void Value::setName(const std::string &name) { + if (Name == name) return; // Name is already set. + + SymbolTable *ST = 0; + + if (Instruction *I = dyn_cast<Instruction>(this)) { + if (BasicBlock *P = I->getParent()) + if (Function *PP = P->getParent()) + ST = &PP->getSymbolTable(); + } else if (BasicBlock *BB = dyn_cast<BasicBlock>(this)) { + if (Function *P = BB->getParent()) ST = &P->getSymbolTable(); + } else if (GlobalValue *GV = dyn_cast<GlobalValue>(this)) { + if (Module *P = GV->getParent()) ST = &P->getSymbolTable(); + } else if (Argument *A = dyn_cast<Argument>(this)) { + if (Function *P = A->getParent()) ST = &P->getSymbolTable(); + } else { + assert(isa<Constant>(this) && "Unknown value type!"); + return; // no name is setable for this. + } + + if (ST && hasName()) ST->remove(this); + Name = name; + if (ST && hasName()) ST->insert(this); +} + // uncheckedReplaceAllUsesWith - This is exactly the same as replaceAllUsesWith, // except that it doesn't have all of the asserts. The asserts fail because we // are half-way done resolving types, which causes some types to exist as two |