[flang-commits] [flang] [flang][cuda][openacc] use the ultimate symbol to set the implicit device attribute (PR #192553)

via flang-commits flang-commits at lists.llvm.org
Thu Apr 16 14:46:01 PDT 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-fir-hlfir

@llvm/pr-subscribers-flang-semantics

Author: Valentin Clement (バレンタイン クレメン) (clementval)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/192553.diff


2 Files Affected:

- (modified) flang/lib/Semantics/resolve-names.cpp (+1-1) 
- (modified) flang/test/Lower/OpenACC/acc-host-data-cuda-device.f90 (+11) 


``````````diff
diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp
index a554174b7d30a..9ef8b183dd061 100644
--- a/flang/lib/Semantics/resolve-names.cpp
+++ b/flang/lib/Semantics/resolve-names.cpp
@@ -1513,7 +1513,7 @@ void AccVisitor::CopySymbolWithDevice(const parser::Name *name) {
       name && name->symbol) {
     if (Symbol * copy{currScope().CopySymbol(*name->symbol)}) {
       name->symbol = copy;
-      if (auto *object{copy->detailsIf<ObjectEntityDetails>()}) {
+      if (auto *object{copy->GetUltimate().detailsIf<ObjectEntityDetails>()}) {
         object->set_cudaDataAttr(common::CUDADataAttr::Device);
       }
     }
diff --git a/flang/test/Lower/OpenACC/acc-host-data-cuda-device.f90 b/flang/test/Lower/OpenACC/acc-host-data-cuda-device.f90
index cc301617444ac..0fb3f924f337e 100644
--- a/flang/test/Lower/OpenACC/acc-host-data-cuda-device.f90
+++ b/flang/test/Lower/OpenACC/acc-host-data-cuda-device.f90
@@ -3,6 +3,8 @@
 
 module m
 
+real, allocatable, pinned :: pinned_real(:,:,:)
+
 interface doit
 subroutine __device_sub(a)
     real(4), device, intent(in) :: a(:,:,:)
@@ -78,3 +80,12 @@ program testex1
 ! CHECK: fir.call @_QP__host_sub
 ! CHECK: fir.call @_QP__device_sub
 ! CHECK: fir.call @_QP__device_sub
+
+subroutine test_use_details()
+  use m
+  !$acc host_data use_device(pinned_real)
+  call doit(pinned_real)
+  !$acc end host_data
+end subroutine
+
+! CHECK: fir.address_of(@_QP__device_sub)

``````````

</details>


https://github.com/llvm/llvm-project/pull/192553


More information about the flang-commits mailing list