[llvm] 3fe6f93 - [NVPTX][AsmPrinter] Emit .attribute(.managed) for global variable declarations

Kristina Bessonova via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 25 00:21:59 PST 2022


Author: Kristina Bessonova
Date: 2022-02-25T10:21:31+02:00
New Revision: 3fe6f9388fd3ef61d47b1f8b573596fc44b2f144

URL: https://github.com/llvm/llvm-project/commit/3fe6f9388fd3ef61d47b1f8b573596fc44b2f144
DIFF: https://github.com/llvm/llvm-project/commit/3fe6f9388fd3ef61d47b1f8b573596fc44b2f144.diff

LOG: [NVPTX][AsmPrinter] Emit .attribute(.managed) for global variable declarations

Declaration and definition attributes must match,
otherwise it may cause issues on linking.

Reviewed By: tra

Differential Revision: https://reviews.llvm.org/D120493

Added: 
    

Modified: 
    llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
    llvm/test/CodeGen/NVPTX/managed.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
index 558ca6879cdb..4e9f254872e4 100644
--- a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
@@ -1290,6 +1290,8 @@ void NVPTXAsmPrinter::emitPTXGlobalVariable(const GlobalVariable *GVar,
 
   O << ".";
   emitPTXAddressSpace(GVar->getType()->getAddressSpace(), O);
+  if (isManaged(*GVar))
+    O << " .attribute(.managed)";
   if (MaybeAlign A = GVar->getAlign())
     O << " .align " << A->value();
   else

diff  --git a/llvm/test/CodeGen/NVPTX/managed.ll b/llvm/test/CodeGen/NVPTX/managed.ll
index d3f1604dbd36..6943782c2e6e 100644
--- a/llvm/test/CodeGen/NVPTX/managed.ll
+++ b/llvm/test/CodeGen/NVPTX/managed.ll
@@ -6,6 +6,11 @@
 ; CHECK: .visible .global .attribute(.managed) .align 4 .u32 managed_g;
 @managed_g = addrspace(1) global i32 zeroinitializer
 
+; CHECK: .extern .global .align 4 .u32 decl_g;
+ at decl_g = external addrspace(1) global i32, align 4
+; CHECK: .extern .global .attribute(.managed) .align 8 .b32 managed_decl_g;
+ at managed_decl_g = external addrspace(1) global i32*, align 8
 
-!nvvm.annotations = !{!0}
+!nvvm.annotations = !{!0, !1}
 !0 = !{i32 addrspace(1)* @managed_g, !"managed", i32 1}
+!1 = !{i32* addrspace(1)* @managed_decl_g, !"managed", i32 1}


        


More information about the llvm-commits mailing list