Skip to content

Commit 7c36411

Browse files
authored
[flang][cuda] Do not lower PINNED variable in main program as global (#102996)
Similar to #102512. Do not lower PINNED variable descriptors in program unit as globals but keep them local.
1 parent 367e99e commit 7c36411

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

flang/include/flang/Evaluate/tools.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1247,7 +1247,6 @@ inline bool CanCUDASymbolHasSave(const Symbol &sym) {
12471247
if (const auto *details =
12481248
sym.GetUltimate().detailsIf<semantics::ObjectEntityDetails>()) {
12491249
if (details->cudaDataAttr() &&
1250-
*details->cudaDataAttr() != common::CUDADataAttr::Pinned &&
12511250
*details->cudaDataAttr() != common::CUDADataAttr::Unified) {
12521251
return false;
12531252
}

flang/test/Lower/CUDA/cuda-program-global.cuf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
program test
77
integer, device :: a(10)
88
integer, unified :: u(10)
9+
integer, allocatable, pinned :: p(:)
910
integer :: b(10)
1011
integer :: i
1112
print*,i
@@ -16,6 +17,7 @@ end
1617
! CHECK: fir.address_of(@_QFEb) : !fir.ref<!fir.array<10xi32>>
1718
! CHECK: %[[ALLOCA:.*]] = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFEi"}
1819
! CHECK: hlfir.declare %[[ALLOCA]] {uniq_name = "_QFEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
20+
! CHECK: cuf.alloc !fir.box<!fir.heap<!fir.array<?xi32>>> {bindc_name = "p", data_attr = #cuf.cuda<pinned>, uniq_name = "_QFEp"} -> !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>
1921

2022
! CHECK-NOT: fir.global internal @_QFEa {data_attr = #cuf.cuda<device>} : !fir.array<10xi32> {{{$}}
2123
! CHECK: fir.global internal @_QFEb : !fir.array<10xi32> {{{$}}

0 commit comments

Comments
 (0)