[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