forked from OSchip/llvm-project
[IRMover] Set Address Space for moved global values
Summary: Set Address Space when creating a new function (from another). Fix PR41154. Patch by Ehud Katz <ehudkatz@gmail.com> Reviewers: tejohnson, chandlerc Reviewed By: tejohnson Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D69361
This commit is contained in:
parent
e0dd8f36ce
commit
b36e3a8bac
|
@ -654,9 +654,9 @@ AttributeList IRLinker::mapAttributeTypes(LLVMContext &C, AttributeList Attrs) {
|
|||
Function *IRLinker::copyFunctionProto(const Function *SF) {
|
||||
// If there is no linkage to be performed or we are linking from the source,
|
||||
// bring SF over.
|
||||
auto *F =
|
||||
Function::Create(TypeMap.get(SF->getFunctionType()),
|
||||
GlobalValue::ExternalLinkage, SF->getName(), &DstM);
|
||||
auto *F = Function::Create(TypeMap.get(SF->getFunctionType()),
|
||||
GlobalValue::ExternalLinkage,
|
||||
SF->getAddressSpace(), SF->getName(), &DstM);
|
||||
F->copyAttributesFrom(SF);
|
||||
F->setAttributes(mapAttributeTypes(F->getContext(), F->getAttributes()));
|
||||
return F;
|
||||
|
@ -695,7 +695,8 @@ GlobalValue *IRLinker::copyGlobalValueProto(const GlobalValue *SGV,
|
|||
else if (SGV->getValueType()->isFunctionTy())
|
||||
NewGV =
|
||||
Function::Create(cast<FunctionType>(TypeMap.get(SGV->getValueType())),
|
||||
GlobalValue::ExternalLinkage, SGV->getName(), &DstM);
|
||||
GlobalValue::ExternalLinkage, SGV->getAddressSpace(),
|
||||
SGV->getName(), &DstM);
|
||||
else
|
||||
NewGV =
|
||||
new GlobalVariable(DstM, TypeMap.get(SGV->getValueType()),
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
; RUN: llvm-link %s -S | FileCheck %s
|
||||
|
||||
@G = addrspace(2) global i32 256
|
||||
; CHECK: @G = addrspace(2) global i32
|
||||
|
||||
@GA = alias i32, i32 addrspace(2)* @G
|
||||
; CHECK: @GA = alias i32, i32 addrspace(2)* @G
|
||||
|
||||
define void @foo() addrspace(3) {
|
||||
; CHECK: define void @foo() addrspace(3)
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue