[PATCH] D69361: [IRMover] Set Address Space for moved global values

Ehud Katz via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 29 00:21:34 PDT 2019


ekatz updated this revision to Diff 226845.
ekatz edited the summary of this revision.
ekatz added a comment.

Added `alias` testing, and moved the NFC part into https://reviews.llvm.org/D69550.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69361/new/

https://reviews.llvm.org/D69361

Files:
  llvm/lib/Linker/IRMover.cpp
  llvm/test/Linker/addrspace.ll


Index: llvm/test/Linker/addrspace.ll
===================================================================
--- /dev/null
+++ llvm/test/Linker/addrspace.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-link %s -S | FileCheck %s
+
+ at G = addrspace(2) global i32 256 
+; CHECK: @G = addrspace(2) global i32
+
+ at 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
+}
Index: llvm/lib/Linker/IRMover.cpp
===================================================================
--- llvm/lib/Linker/IRMover.cpp
+++ llvm/lib/Linker/IRMover.cpp
@@ -654,9 +654,9 @@
 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 @@
     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()),


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D69361.226845.patch
Type: text/x-patch
Size: 1769 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191029/57a0ea5e/attachment.bin>


More information about the llvm-commits mailing list