diff --git a/flang/test/Semantics/OpenACC/acc-data.f90 b/flang/test/Semantics/OpenACC/acc-data.f90 --- a/flang/test/Semantics/OpenACC/acc-data.f90 +++ b/flang/test/Semantics/OpenACC/acc-data.f90 @@ -178,4 +178,13 @@ !ERROR: Unmatched PARALLEL directive !$acc end parallel + !$acc data copy(aa) async + !$acc end data + + !$acc data copy(aa) wait + !$acc end data + + !$acc data copy(aa) device_type(1) wait + !$acc end data + end program openacc_data_validity diff --git a/llvm/include/llvm/Frontend/OpenACC/ACC.td b/llvm/include/llvm/Frontend/OpenACC/ACC.td --- a/llvm/include/llvm/Frontend/OpenACC/ACC.td +++ b/llvm/include/llvm/Frontend/OpenACC/ACC.td @@ -270,9 +270,14 @@ // 2.6.5 def ACC_Data : Directive<"data"> { let allowedOnceClauses = [ + VersionedClause, VersionedClause, VersionedClause ]; + let allowedClauses = [ + VersionedClause, + VersionedClause + ]; let requiredClauses = [ VersionedClause, VersionedClause,