diff --git a/flang/test/Lower/OpenACC/acc-init.f90 b/flang/test/Lower/OpenACC/acc-init.f90 index 2fbb9550548a9..cc1abc4b294c7 100644 --- a/flang/test/Lower/OpenACC/acc-init.f90 +++ b/flang/test/Lower/OpenACC/acc-init.f90 @@ -35,4 +35,7 @@ subroutine acc_init !$acc init device_type(nvidia) !CHECK: acc.init attributes {device_types = [#acc.device_type]} + !$acc init device_type(host) device_type(multicore) +!CHECK: acc.init attributes {device_types = [#acc.device_type, #acc.device_type]} + end subroutine acc_init diff --git a/flang/test/Lower/OpenACC/acc-shutdown.f90 b/flang/test/Lower/OpenACC/acc-shutdown.f90 index 6c080b932f92e..304dd4fae6db5 100644 --- a/flang/test/Lower/OpenACC/acc-shutdown.f90 +++ b/flang/test/Lower/OpenACC/acc-shutdown.f90 @@ -25,4 +25,7 @@ subroutine acc_shutdown !CHECK: [[DEVNUM:%.*]] = arith.constant 1 : i32 !CHECK: acc.shutdown device_num([[DEVNUM]] : i32) attributes {device_types = [#acc.device_type, #acc.device_type]} + !$acc shutdown device_type(default) device_type(nvidia) +!CHECK: acc.shutdown attributes {device_types = [#acc.device_type, #acc.device_type]} + end subroutine acc_shutdown diff --git a/flang/test/Semantics/OpenACC/acc-init-validity.f90 b/flang/test/Semantics/OpenACC/acc-init-validity.f90 index 3b594a25217c0..083a2415a5d77 100644 --- a/flang/test/Semantics/OpenACC/acc-init-validity.f90 +++ b/flang/test/Semantics/OpenACC/acc-init-validity.f90 @@ -93,7 +93,7 @@ program openacc_init_validity !ERROR: At most one DEVICE_NUM clause can appear on the INIT directive !$acc init device_num(1) device_num(i) - !ERROR: At most one DEVICE_TYPE clause can appear on the INIT directive + ! OK !$acc init device_type(nvidia) device_type(default, *) !ERROR: Must have LOGICAL or INTEGER type diff --git a/flang/test/Semantics/OpenACC/acc-shutdown-validity.f90 b/flang/test/Semantics/OpenACC/acc-shutdown-validity.f90 index 43aed4fc98f42..163130d41bdcc 100644 --- a/flang/test/Semantics/OpenACC/acc-shutdown-validity.f90 +++ b/flang/test/Semantics/OpenACC/acc-shutdown-validity.f90 @@ -90,7 +90,7 @@ program openacc_shutdown_validity !ERROR: At most one DEVICE_NUM clause can appear on the SHUTDOWN directive !$acc shutdown device_num(1) device_num(i) - !ERROR: At most one DEVICE_TYPE clause can appear on the SHUTDOWN directive + ! OK !$acc shutdown device_type(*) device_type(host, default) end program openacc_shutdown_validity diff --git a/llvm/include/llvm/Frontend/OpenACC/ACC.td b/llvm/include/llvm/Frontend/OpenACC/ACC.td index f3eefb52fc46d..8729d4505205b 100644 --- a/llvm/include/llvm/Frontend/OpenACC/ACC.td +++ b/llvm/include/llvm/Frontend/OpenACC/ACC.td @@ -432,11 +432,9 @@ def ACC_Cache : Directive<"cache"> { // 2.14.1 def ACC_Init : Directive<"init"> { - let allowedOnceClauses = [ - VersionedClause, - VersionedClause, - VersionedClause - ]; + let allowedOnceClauses = [VersionedClause, + VersionedClause]; + let allowedClauses = [VersionedClause]; let association = AS_None; let category = CA_Executable; } @@ -480,11 +478,9 @@ def ACC_Set : Directive<"set"> { // 2.14.2 def ACC_Shutdown : Directive<"shutdown"> { - let allowedOnceClauses = [ - VersionedClause, - VersionedClause, - VersionedClause - ]; + let allowedOnceClauses = [VersionedClause, + VersionedClause]; + let allowedClauses = [VersionedClause]; let association = AS_None; let category = CA_Executable; }