[flang-commits] [flang] [flang][cuda] Fix managed address space mismatch on host side (PR #192304)
Valentin Clement バレンタイン クレメン via flang-commits
flang-commits at lists.llvm.org
Wed Apr 15 11:13:34 PDT 2026
https://github.com/clementval created https://github.com/llvm/llvm-project/pull/192304
Managed should not map to global
>From cf91e4f0bc60a120c2e1114dff7efa36435d806c Mon Sep 17 00:00:00 2001
From: Valentin Clement <clementval at gmail.com>
Date: Wed, 15 Apr 2026 11:12:37 -0700
Subject: [PATCH] [flang][cuda] Fix managed address space mismatch on host side
---
flang/lib/Optimizer/CodeGen/CodeGen.cpp | 2 --
flang/test/Fir/CUDA/cuda-code-gen.mlir | 25 +++++++++++--------------
2 files changed, 11 insertions(+), 16 deletions(-)
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