diff --git a/flang/include/flang/Evaluate/tools.h b/flang/include/flang/Evaluate/tools.h index de4d415eda6fd..3675d9f924876 100644 --- a/flang/include/flang/Evaluate/tools.h +++ b/flang/include/flang/Evaluate/tools.h @@ -1247,7 +1247,6 @@ inline bool CanCUDASymbolHasSave(const Symbol &sym) { if (const auto *details = sym.GetUltimate().detailsIf()) { if (details->cudaDataAttr() && - *details->cudaDataAttr() != common::CUDADataAttr::Pinned && *details->cudaDataAttr() != common::CUDADataAttr::Unified) { return false; } diff --git a/flang/test/Lower/CUDA/cuda-program-global.cuf b/flang/test/Lower/CUDA/cuda-program-global.cuf index a3c9e1ba8d253..90b401c9ba6a5 100644 --- a/flang/test/Lower/CUDA/cuda-program-global.cuf +++ b/flang/test/Lower/CUDA/cuda-program-global.cuf @@ -6,6 +6,7 @@ program test integer, device :: a(10) integer, unified :: u(10) + integer, allocatable, pinned :: p(:) integer :: b(10) integer :: i print*,i @@ -16,6 +17,7 @@ end ! CHECK: fir.address_of(@_QFEb) : !fir.ref> ! CHECK: %[[ALLOCA:.*]] = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFEi"} ! CHECK: hlfir.declare %[[ALLOCA]] {uniq_name = "_QFEi"} : (!fir.ref) -> (!fir.ref, !fir.ref) +! CHECK: cuf.alloc !fir.box>> {bindc_name = "p", data_attr = #cuf.cuda, uniq_name = "_QFEp"} -> !fir.ref>>> ! CHECK-NOT: fir.global internal @_QFEa {data_attr = #cuf.cuda} : !fir.array<10xi32> {{{$}} ! CHECK: fir.global internal @_QFEb : !fir.array<10xi32> {{{$}}