forked from OSchip/llvm-project
Add a flag to Module::getGlobalVariable to allow it to return vars with
internal linkage. Patch provided by Evan Jones, thanks! llvm-svn: 24604
This commit is contained in:
parent
ca18d19210
commit
7d4d93c52c
|
@ -137,13 +137,14 @@ public:
|
|||
//
|
||||
|
||||
/// getGlobalVariable - Look up the specified global variable in the module
|
||||
/// symbol table. If it does not exist, return null. Note that this only
|
||||
/// returns a global variable if it does not have internal linkage. The type
|
||||
/// argument should be the underlying type of the global, i.e., it should not
|
||||
/// have the top-level PointerType, which represents the address of the
|
||||
/// global.
|
||||
/// symbol table. If it does not exist, return null. The type argument
|
||||
/// should be the underlying type of the global, i.e., it should not have
|
||||
/// the top-level PointerType, which represents the address of the global.
|
||||
/// If AllowInternal is set to true, this function will return types that
|
||||
/// have InternalLinkage. By default, these types are not returned.
|
||||
///
|
||||
GlobalVariable *getGlobalVariable(const std::string &Name, const Type *Ty);
|
||||
GlobalVariable *getGlobalVariable(const std::string &Name, const Type *Ty,
|
||||
bool AllowInternal = false);
|
||||
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
|
|
|
@ -206,17 +206,17 @@ Function *Module::getNamedFunction(const std::string &Name) {
|
|||
//
|
||||
|
||||
/// getGlobalVariable - Look up the specified global variable in the module
|
||||
/// symbol table. If it does not exist, return null. Note that this only
|
||||
/// returns a global variable if it does not have internal linkage. The type
|
||||
/// argument should be the underlying type of the global, ie, it should not
|
||||
/// have the top-level PointerType, which represents the address of the
|
||||
/// global.
|
||||
/// symbol table. If it does not exist, return null. The type argument
|
||||
/// should be the underlying type of the global, i.e., it should not have
|
||||
/// the top-level PointerType, which represents the address of the global.
|
||||
/// If AllowInternal is set to true, this function will return types that
|
||||
/// have InternalLinkage. By default, these types are not returned.
|
||||
///
|
||||
GlobalVariable *Module::getGlobalVariable(const std::string &Name,
|
||||
const Type *Ty) {
|
||||
const Type *Ty, bool AllowInternal) {
|
||||
if (Value *V = getSymbolTable().lookup(PointerType::get(Ty), Name)) {
|
||||
GlobalVariable *Result = cast<GlobalVariable>(V);
|
||||
if (!Result->hasInternalLinkage())
|
||||
if (AllowInternal || !Result->hasInternalLinkage())
|
||||
return Result;
|
||||
}
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue