Skip to content

Commit 26b2b5a

Browse files
authored
[flang][openacc] Relax type check for private recipe on acc.serial (#68814)
The check was already relax on `acc.parallel` but not on `acc.serial`. This patch makes is consistent.
1 parent 6d88ac1 commit 26b2b5a

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

flang/test/Lower/OpenACC/acc-private.f90

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,10 @@ subroutine acc_private_allocatable_array(a, n)
270270
do i = 1, n
271271
a(i) = i
272272
end do
273+
274+
!$acc serial private(a)
275+
a(i) = 1
276+
!$acc end serial
273277
end subroutine
274278

275279
! CHECK-LABEL: func.func @_QPacc_private_allocatable_array(
@@ -278,7 +282,8 @@ subroutine acc_private_allocatable_array(a, n)
278282
! HLFIR: %[[BOX:.*]] = fir.load %[[DECLA_A]]#1 : !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>
279283
! HLFIR: %[[BOX_ADDR:.*]] = fir.box_addr %[[BOX]] : (!fir.box<!fir.heap<!fir.array<?xi32>>>) -> !fir.heap<!fir.array<?xi32>>
280284
! HLFIR: %[[PRIVATE:.*]] = acc.private varPtr(%[[BOX_ADDR]] : !fir.heap<!fir.array<?xi32>>) bounds(%{{.*}}) -> !fir.heap<!fir.array<?xi32>> {name = "a"}
281-
! HLFIR: acc.parallel private(@privatization_box_heap_Uxi32 -> %[[PRIVATE]] : !fir.heap<!fir.array<?xi32>>) {
285+
! HLFIR: acc.parallel private(@privatization_box_heap_Uxi32 -> %[[PRIVATE]] : !fir.heap<!fir.array<?xi32>>)
286+
! HLFIR: acc.serial private(@privatization_box_heap_Uxi32 -> %{{.*}} : !fir.heap<!fir.array<?xi32>>)
282287

283288
subroutine acc_private_pointer_array(a, n)
284289
integer, pointer :: a(:)

mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,7 @@ Value ParallelOp::getDataOperand(unsigned i) {
620620
LogicalResult acc::ParallelOp::verify() {
621621
if (failed(checkSymOperandList<mlir::acc::PrivateRecipeOp>(
622622
*this, getPrivatizations(), getGangPrivateOperands(), "private",
623-
"privatizations", false)))
623+
"privatizations", /*checkOperandType=*/false)))
624624
return failure();
625625
if (failed(checkSymOperandList<mlir::acc::ReductionRecipeOp>(
626626
*this, getReductionRecipes(), getReductionOperands(), "reduction",
@@ -650,7 +650,7 @@ Value SerialOp::getDataOperand(unsigned i) {
650650
LogicalResult acc::SerialOp::verify() {
651651
if (failed(checkSymOperandList<mlir::acc::PrivateRecipeOp>(
652652
*this, getPrivatizations(), getGangPrivateOperands(), "private",
653-
"privatizations")))
653+
"privatizations", /*checkOperandType=*/false)))
654654
return failure();
655655
if (failed(checkSymOperandList<mlir::acc::ReductionRecipeOp>(
656656
*this, getReductionRecipes(), getReductionOperands(), "reduction",

0 commit comments

Comments
 (0)