diff options
| author | David Blaikie <dblaikie@gmail.com> | 2015-04-29 21:22:39 +0000 |
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2015-04-29 21:22:39 +0000 |
| commit | f64246be723d3acae52227e7ed612595c6a84d46 (patch) | |
| tree | 72875d5a5a0a942f599df1cc831240ce89bcccfa /llvm/lib/IR | |
| parent | 6e0ebaea1fe18543bf5a371bba769a86f37d688d (diff) | |
| download | bcm5719-llvm-f64246be723d3acae52227e7ed612595c6a84d46.tar.gz bcm5719-llvm-f64246be723d3acae52227e7ed612595c6a84d46.zip | |
[opaque pointer type] Pass GlobalAlias the actual pointer type rather than decomposing it into pointee type + address space
Many of the callers already have the pointer type anyway, and for the
couple of callers that don't it's pretty easy to call PointerType::get
on the pointee type and address space.
This avoids LLParser from using PointerType::getElementType when parsing
GlobalAliases from IR.
llvm-svn: 236160
Diffstat (limited to 'llvm/lib/IR')
| -rw-r--r-- | llvm/lib/IR/Core.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/IR/Globals.cpp | 33 |
2 files changed, 15 insertions, 21 deletions
diff --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp index 0c1023c7348..9557cda5a9c 100644 --- a/llvm/lib/IR/Core.cpp +++ b/llvm/lib/IR/Core.cpp @@ -1634,8 +1634,7 @@ void LLVMSetExternallyInitialized(LLVMValueRef GlobalVar, LLVMBool IsExtInit) { LLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, const char *Name) { auto *PTy = cast<PointerType>(unwrap(Ty)); - return wrap(GlobalAlias::create(PTy->getElementType(), PTy->getAddressSpace(), - GlobalValue::ExternalLinkage, Name, + return wrap(GlobalAlias::create(PTy, GlobalValue::ExternalLinkage, Name, unwrap<Constant>(Aliasee), unwrap(M))); } diff --git a/llvm/lib/IR/Globals.cpp b/llvm/lib/IR/Globals.cpp index 5a6adb3f304..31f864d2115 100644 --- a/llvm/lib/IR/Globals.cpp +++ b/llvm/lib/IR/Globals.cpp @@ -241,40 +241,35 @@ void GlobalVariable::copyAttributesFrom(const GlobalValue *Src) { // GlobalAlias Implementation //===----------------------------------------------------------------------===// -GlobalAlias::GlobalAlias(Type *Ty, unsigned AddressSpace, LinkageTypes Link, - const Twine &Name, Constant *Aliasee, - Module *ParentModule) - : GlobalValue(PointerType::get(Ty, AddressSpace), Value::GlobalAliasVal, - &Op<0>(), 1, Link, Name) { +GlobalAlias::GlobalAlias(PointerType *Ty, LinkageTypes Link, const Twine &Name, + Constant *Aliasee, Module *ParentModule) + : GlobalValue(Ty, Value::GlobalAliasVal, &Op<0>(), 1, Link, Name) { Op<0>() = Aliasee; if (ParentModule) ParentModule->getAliasList().push_back(this); } -GlobalAlias *GlobalAlias::create(Type *Ty, unsigned AddressSpace, - LinkageTypes Link, const Twine &Name, - Constant *Aliasee, Module *ParentModule) { - return new GlobalAlias(Ty, AddressSpace, Link, Name, Aliasee, ParentModule); +GlobalAlias *GlobalAlias::create(PointerType *Ty, LinkageTypes Link, + const Twine &Name, Constant *Aliasee, + Module *ParentModule) { + return new GlobalAlias(Ty, Link, Name, Aliasee, ParentModule); } -GlobalAlias *GlobalAlias::create(Type *Ty, unsigned AddressSpace, - LinkageTypes Linkage, const Twine &Name, - Module *Parent) { - return create(Ty, AddressSpace, Linkage, Name, nullptr, Parent); +GlobalAlias *GlobalAlias::create(PointerType *Ty, LinkageTypes Linkage, + const Twine &Name, Module *Parent) { + return create(Ty, Linkage, Name, nullptr, Parent); } -GlobalAlias *GlobalAlias::create(Type *Ty, unsigned AddressSpace, - LinkageTypes Linkage, const Twine &Name, - GlobalValue *Aliasee) { - return create(Ty, AddressSpace, Linkage, Name, Aliasee, Aliasee->getParent()); +GlobalAlias *GlobalAlias::create(PointerType *Ty, LinkageTypes Linkage, + const Twine &Name, GlobalValue *Aliasee) { + return create(Ty, Linkage, Name, Aliasee, Aliasee->getParent()); } GlobalAlias *GlobalAlias::create(LinkageTypes Link, const Twine &Name, GlobalValue *Aliasee) { PointerType *PTy = Aliasee->getType(); - return create(PTy->getElementType(), PTy->getAddressSpace(), Link, Name, - Aliasee); + return create(PTy, Link, Name, Aliasee); } GlobalAlias *GlobalAlias::create(const Twine &Name, GlobalValue *Aliasee) { |

