[flang-commits] [flang] c3a2251 - [flang][cuda] Fix managed address space mismatch on host side (#192304)
via flang-commits
flang-commits at lists.llvm.org
Wed Apr 15 11:27:21 PDT 2026
Author: Valentin Clement (バレンタイン クレメン)
Date: 2026-04-15T18:27:15Z
New Revision: c3a22516888b94a4ad9919d0c224540fe1eb771c
URL: https://github.com/llvm/llvm-project/commit/c3a22516888b94a4ad9919d0c224540fe1eb771c
DIFF: https://github.com/llvm/llvm-project/commit/c3a22516888b94a4ad9919d0c224540fe1eb771c.diff
LOG: [flang][cuda] Fix managed address space mismatch on host side (#192304)
Managed should not map to global
Added:
Modified:
flang/lib/Optimizer/CodeGen/CodeGen.cpp
flang/test/Fir/CUDA/cuda-code-gen.mlir
Removed:
################################################################################
diff --git a/flang/lib/Optimizer/CodeGen/CodeGen.cpp b/flang/lib/Optimizer/CodeGen/CodeGen.cpp
index e0193019d9b2d..3837bd8aaa648 100644
--- a/flang/lib/Optimizer/CodeGen/CodeGen.cpp
+++ b/flang/lib/Optimizer/CodeGen/CodeGen.cpp
@@ -205,8 +205,6 @@ static std::optional<unsigned> getCUFAddrSpace(fir::GlobalOp global) {
return static_cast<unsigned>(mlir::NVVM::NVVMMemorySpace::Constant);
if (*dataAttr == cuf::DataAttribute::Shared)
return static_cast<unsigned>(mlir::NVVM::NVVMMemorySpace::Shared);
- if (*dataAttr == cuf::DataAttribute::Managed)
- return static_cast<unsigned>(mlir::NVVM::NVVMMemorySpace::Global);
}
return std::nullopt;
}
diff --git a/flang/test/Fir/CUDA/cuda-code-gen.mlir b/flang/test/Fir/CUDA/cuda-code-gen.mlir
index 6d2efda67b50d..ec066fad724c6 100644
--- a/flang/test/Fir/CUDA/cuda-code-gen.mlir
+++ b/flang/test/Fir/CUDA/cuda-code-gen.mlir
@@ -385,20 +385,17 @@ func.func @_QQhost_shared() {
// Test that fir.address_of inside gpu.module referencing a managed fir.global
// produces an addressof with ptr<1> and an addrspacecast.
-module attributes {gpu.container_module} {
- gpu.module @cuda_device_mod {
- fir.global @_QMmodEmval {data_attr = #cuf.cuda<managed>} : i32 {
- %0 = fir.zero_bits i32
- fir.has_value %0 : i32
- }
- gpu.func @_QMkernelsPuse_managed() kernel {
- %0 = fir.address_of(@_QMmodEmval) : !fir.ref<i32>
- gpu.return
- }
+module {
+ func.func @_QMkernelsPuse_managed() {
+ %0 = fir.address_of(@_QMmodEmval) : !fir.ref<i32>
+ return
+ }
+ fir.global @_QMmodEmval {data_attr = #cuf.cuda<managed>} : i32 {
+ %0 = fir.zero_bits i32
+ fir.has_value %0 : i32
}
}
-// CHECK: llvm.mlir.global external @_QMmodEmval() {addr_space = 1 : i32, nvvm.managed} : i32
-// CHECK-LABEL: gpu.func @_QMkernelsPuse_managed()
-// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @_QMmodEmval : !llvm.ptr<1>
-// CHECK: %{{.*}} = llvm.addrspacecast %[[ADDR]] : !llvm.ptr<1> to !llvm.ptr
+// CHECK-LABEL: llvm.func @_QMkernelsPuse_managed()
+// CHECK: %{{.*}} = llvm.mlir.addressof @_QMmodEmval : !llvm.ptr
+// CHECK: llvm.mlir.global external @_QMmodEmval() {addr_space = 0 : i32} : i32
More information about the flang-commits
mailing list