Skip to content

Commit a366188

Browse files
committed
[flang][openacc] Add clause validaty tests for data construct + fix default restriction
Add clause validity tests for the data construct. The default clause can appear only once and this was not enforce in the ACC.td. Reviewed By: sameeranjoshi Differential Revision: https://reviews.llvm.org/D91888
1 parent 88c21f8 commit a366188

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

flang/test/Semantics/acc-clause-validity.f90

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,42 @@ program openacc_clause_validity
131131
!$acc data
132132
!$acc end data
133133

134-
!$acc data copyin(i)
134+
!$acc data copy(aa) if(.true.)
135+
!$acc end data
136+
137+
!$acc data copy(aa) if(ifCondition)
138+
!$acc end data
139+
140+
!$acc data copy(aa, bb, cc)
141+
!$acc end data
142+
143+
!$acc data copyin(aa) copyin(readonly: bb) copyout(cc)
144+
!$acc end data
145+
146+
!$acc data copyin(readonly: aa, bb) copyout(zero: cc)
147+
!$acc end data
148+
149+
!$acc data create(aa, bb(:,:)) create(zero: cc(:,:))
150+
!$acc end data
151+
152+
!$acc data no_create(aa) present(bb, cc)
153+
!$acc end data
154+
155+
!$acc data deviceptr(aa) attach(bb, cc)
156+
!$acc end data
157+
158+
!$acc data copy(aa, bb) default(none)
159+
!$acc end data
160+
161+
!$acc data copy(aa, bb) default(present)
162+
!$acc end data
163+
164+
!ERROR: At most one DEFAULT clause can appear on the DATA directive
165+
!$acc data copy(aa, bb) default(none) default(present)
166+
!$acc end data
167+
168+
!ERROR: At most one IF clause can appear on the DATA directive
169+
!$acc data copy(aa) if(.true.) if(ifCondition)
135170
!$acc end data
136171

137172
!$acc data copyin(i)

llvm/include/llvm/Frontend/OpenACC/ACC.td

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,8 @@ def ACC_Atomic : Directive<"atomic"> {}
257257
// 2.6.5
258258
def ACC_Data : Directive<"data"> {
259259
let allowedOnceClauses = [
260-
VersionedClause<ACCC_If>
260+
VersionedClause<ACCC_If>,
261+
VersionedClause<ACCC_Default>
261262
];
262263
let requiredClauses = [
263264
VersionedClause<ACCC_Attach>,

0 commit comments

Comments
 (0)