diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-03-06 22:04:43 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-03-06 22:04:43 +0000 |
commit | f56ec6423cc8116136cfef314b9f3a519e37d3f9 (patch) | |
tree | 751ab43bd47b0e4ef4dc835ec6f30b124720a87e | |
parent | 3a56d146413ee344b10bbcb2b7d8dffaadc9fade (diff) | |
download | external_llvm-f56ec6423cc8116136cfef314b9f3a519e37d3f9.zip external_llvm-f56ec6423cc8116136cfef314b9f3a519e37d3f9.tar.gz external_llvm-f56ec6423cc8116136cfef314b9f3a519e37d3f9.tar.bz2 |
Add Module::getNamedValue; use to normalize access to Module symbol
table.
- No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66289 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Module.h | 10 | ||||
-rw-r--r-- | lib/VMCore/Module.cpp | 40 |
2 files changed, 31 insertions, 19 deletions
diff --git a/include/llvm/Module.h b/include/llvm/Module.h index 2bbf01a..92f5869 100644 --- a/include/llvm/Module.h +++ b/include/llvm/Module.h @@ -183,6 +183,16 @@ public: } /// @} +/// @name Generic Value Accessors +/// @{ + + /// getNamedValue - Return the first global value in the module with + /// the specified name, of arbitrary type. This method returns null + /// if a global with the specified name is not found. + GlobalValue *getNamedValue(const std::string &Name) const; + GlobalValue *getNamedValue(const char *Name) const; + +/// @} /// @name Function Accessors /// @{ public: diff --git a/lib/VMCore/Module.cpp b/lib/VMCore/Module.cpp index 896245d..47233ae 100644 --- a/lib/VMCore/Module.cpp +++ b/lib/VMCore/Module.cpp @@ -127,6 +127,18 @@ Module::PointerSize Module::getPointerSize() const { return ret; } +/// getNamedValue - Return the first global value in the module with +/// the specified name, of arbitrary type. This method returns null +/// if a global with the specified name is not found. +GlobalValue *Module::getNamedValue(const std::string &Name) const { + return cast_or_null<GlobalValue>(getValueSymbolTable().lookup(Name)); +} + +GlobalValue *Module::getNamedValue(const char *Name) const { + llvm::Value *V = getValueSymbolTable().lookup(Name, Name+strlen(Name)); + return cast_or_null<GlobalValue>(V); +} + //===----------------------------------------------------------------------===// // Methods for easy access to the functions in the module. // @@ -139,10 +151,8 @@ Module::PointerSize Module::getPointerSize() const { Constant *Module::getOrInsertFunction(const std::string &Name, const FunctionType *Ty, AttrListPtr AttributeList) { - ValueSymbolTable &SymTab = getValueSymbolTable(); - // See if we have a definition for the specified function already. - GlobalValue *F = dyn_cast_or_null<GlobalValue>(SymTab.lookup(Name)); + GlobalValue *F = getNamedValue(Name); if (F == 0) { // Nope, add it Function *New = Function::Create(Ty, GlobalVariable::ExternalLinkage, Name); @@ -174,10 +184,8 @@ Constant *Module::getOrInsertFunction(const std::string &Name, Constant *Module::getOrInsertTargetIntrinsic(const std::string &Name, const FunctionType *Ty, AttrListPtr AttributeList) { - ValueSymbolTable &SymTab = getValueSymbolTable(); - // See if we have a definition for the specified function already. - GlobalValue *F = dyn_cast_or_null<GlobalValue>(SymTab.lookup(Name)); + GlobalValue *F = getNamedValue(Name); if (F == 0) { // Nope, add it Function *New = Function::Create(Ty, GlobalVariable::ExternalLinkage, Name); @@ -240,13 +248,11 @@ Constant *Module::getOrInsertFunction(const std::string &Name, // If it does not exist, return null. // Function *Module::getFunction(const std::string &Name) const { - const ValueSymbolTable &SymTab = getValueSymbolTable(); - return dyn_cast_or_null<Function>(SymTab.lookup(Name)); + return dyn_cast_or_null<Function>(getNamedValue(Name)); } Function *Module::getFunction(const char *Name) const { - const ValueSymbolTable &SymTab = getValueSymbolTable(); - return dyn_cast_or_null<Function>(SymTab.lookup(Name, Name+strlen(Name))); + return dyn_cast_or_null<Function>(getNamedValue(Name)); } //===----------------------------------------------------------------------===// @@ -262,11 +268,10 @@ Function *Module::getFunction(const char *Name) const { /// GlobalVariable *Module::getGlobalVariable(const std::string &Name, bool AllowLocal) const { - if (Value *V = ValSymTab->lookup(Name)) { - GlobalVariable *Result = dyn_cast<GlobalVariable>(V); - if (Result && (AllowLocal || !Result->hasLocalLinkage())) + if (GlobalVariable *Result = + dyn_cast_or_null<GlobalVariable>(getNamedValue(Name))) + if (AllowLocal || !Result->hasLocalLinkage()) return Result; - } return 0; } @@ -277,10 +282,8 @@ GlobalVariable *Module::getGlobalVariable(const std::string &Name, /// 3. Finally, if the existing global is the correct delclaration, return the /// existing global. Constant *Module::getOrInsertGlobal(const std::string &Name, const Type *Ty) { - ValueSymbolTable &SymTab = getValueSymbolTable(); - // See if we have a definition for the specified global already. - GlobalVariable *GV = dyn_cast_or_null<GlobalVariable>(SymTab.lookup(Name)); + GlobalVariable *GV = dyn_cast_or_null<GlobalVariable>(getNamedValue(Name)); if (GV == 0) { // Nope, add it GlobalVariable *New = @@ -306,8 +309,7 @@ Constant *Module::getOrInsertGlobal(const std::string &Name, const Type *Ty) { // If it does not exist, return null. // GlobalAlias *Module::getNamedAlias(const std::string &Name) const { - const ValueSymbolTable &SymTab = getValueSymbolTable(); - return dyn_cast_or_null<GlobalAlias>(SymTab.lookup(Name)); + return dyn_cast_or_null<GlobalAlias>(getNamedValue(Name)); } //===----------------------------------------------------------------------===// |