[PATCH] D92447: [flang][openacc] Add clause validity tests for the update directive
Valentin Clement via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 1 19:03:23 PST 2020
clementval created this revision.
clementval added reviewers: sscalpone, kiranktp, SouraVX, kiranchandramohan, sameeranjoshi.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
clementval requested review of this revision.
Add couple of clause validity tests for the update directive and check for
the restriction where at least self, host or device clause must appear on the directive.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D92447
Files:
flang/lib/Semantics/check-acc-structure.cpp
flang/test/Semantics/acc-clause-validity.f90
Index: flang/test/Semantics/acc-clause-validity.f90
===================================================================
--- flang/test/Semantics/acc-clause-validity.f90
+++ flang/test/Semantics/acc-clause-validity.f90
@@ -138,9 +138,37 @@
!ERROR: Unmatched PARALLEL directive
!$acc end parallel
+ !ERROR: At least one of DEVICE, HOST, SELF clause must appear on the UPDATE directive
+ !$acc update
+
!$acc update self(a, f) host(g) device(h)
- !$acc update device(i) device_type(*) async
+ !$acc update host(aa) async(1)
+
+ !$acc update device(bb) async(async1)
+
+ !ERROR: At most one ASYNC clause can appear on the UPDATE directive
+ !$acc update host(aa, bb) async(1) async(2)
+
+ !$acc update self(bb, cc(:)) wait(1)
+
+ !$acc update device(aa, bb, cc) wait(wait1)
+
+ !$acc update host(aa) host(bb) device(cc) wait(1,2)
+
+ !$acc update device(aa, cc) wait(wait1, wait2)
+
+ !$acc update device(aa) device_type(*) async
+
+ !$acc update host(bb) device_type(*) wait
+
+ !$acc update self(cc) device_type(1,2) async device_type(3) wait
+
+ !ERROR: At most one IF clause can appear on the UPDATE directive
+ !$acc update device(aa) if(.true.) if(ifCondition)
+
+ !ERROR: At most one IF_PRESENT clause can appear on the UPDATE directive
+ !$acc update device(bb) if_present if_present
!ERROR: Clause IF is not allowed after clause DEVICE_TYPE on the UPDATE directive
!$acc update device(i) device_type(*) if(.TRUE.)
Index: flang/lib/Semantics/check-acc-structure.cpp
===================================================================
--- flang/lib/Semantics/check-acc-structure.cpp
+++ flang/lib/Semantics/check-acc-structure.cpp
@@ -201,6 +201,8 @@
CheckRequireAtLeastOneOf();
break;
case llvm::acc::Directive::ACCD_update:
+ // Restriction - line 2636
+ CheckRequireAtLeastOneOf();
// Restriction - 2301
CheckOnlyAllowedAfter(llvm::acc::Clause::ACCC_device_type,
updateOnlyAllowedAfterDeviceTypeClauses);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D92447.308840.patch
Type: text/x-patch
Size: 1988 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201202/9b103ea3/attachment.bin>
More information about the llvm-commits
mailing list