[PATCH] D105874: [flang][OpenMP] Add semantic check for reduction clause in taskloop simd construct
Peixin Qiao via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 13 00:55:41 PDT 2021
peixin updated this revision to Diff 358184.
peixin added a comment.
Add `! REQUIRES: shell` in `omp-taskloop-simd01.f90`.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D105874/new/
https://reviews.llvm.org/D105874
Files:
flang/lib/Semantics/check-omp-structure.cpp
flang/test/Semantics/omp-clause-validity01.f90
flang/test/Semantics/omp-taskloop-simd01.f90
Index: flang/test/Semantics/omp-taskloop-simd01.f90
===================================================================
--- flang/test/Semantics/omp-taskloop-simd01.f90
+++ flang/test/Semantics/omp-taskloop-simd01.f90
@@ -1,5 +1,5 @@
! RUN: %S/test_errors.sh %s %t %flang -fopenmp
-! XFAIL: *
+! REQUIRES: shell
! OpenMP Version 4.5
! 2.9.3 taskloop simd Construct
Index: flang/test/Semantics/omp-clause-validity01.f90
===================================================================
--- flang/test/Semantics/omp-clause-validity01.f90
+++ flang/test/Semantics/omp-clause-validity01.f90
@@ -7,8 +7,6 @@
! 2.7.1 Loop construct
! ...
-! TODO: all the internal errors
-
integer :: b = 128
integer :: z, c = 32
integer, parameter :: num = 16
@@ -87,7 +85,7 @@
do i = 1, N
z = 2
enddo
- !$omp end target data
+ !$omp end target data
!ERROR: SCHEDULE clause is not allowed on the PARALLEL directive
!$omp parallel schedule(static)
@@ -177,7 +175,7 @@
exit outofparallel
end do inner
end do outer
- !$end omp do
+ !$omp end do
!$omp end parallel
end do outofparallel
@@ -545,6 +543,7 @@
enddo
!$omp end taskloop simd
+ !ERROR: Unexpected clause specified for !$OMP taskloop simd
!$omp taskloop simd reduction(+:a)
do i = 1, N
a = a + 3.14
Index: flang/lib/Semantics/check-omp-structure.cpp
===================================================================
--- flang/lib/Semantics/check-omp-structure.cpp
+++ flang/lib/Semantics/check-omp-structure.cpp
@@ -931,7 +931,7 @@
// 3. Checks on clauses which are not in 'struct OmpClause' from parse-tree.h.
void OmpStructureChecker::Leave(const parser::OmpClauseList &) {
- // 2.7 Loop Construct Restriction
+ // 2.7.1 Loop Construct Restriction
if (llvm::omp::doSet.test(GetContext().directive)) {
if (auto *clause{FindClause(llvm::omp::Clause::OMPC_schedule)}) {
// only one schedule clause is allowed
@@ -1028,6 +1028,14 @@
llvm::omp::Clause::OMPC_copyprivate, {llvm::omp::Clause::OMPC_nowait});
}
+ // 2.9.3 Taskloop Simd Construct Restriction
+ if (GetContext().directive == llvm::omp::Directive::OMPD_taskloop_simd) {
+ if (auto *clause{FindClause(llvm::omp::Clause::OMPC_reduction)}) {
+ context_.Say(clause->source,
+ "Unexpected clause specified for !$OMP taskloop simd"_err_en_US);
+ }
+ }
+
CheckRequireAtLeastOneOf();
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D105874.358184.patch
Type: text/x-patch
Size: 2430 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210713/ce7de7f9/attachment.bin>
More information about the llvm-commits
mailing list