[PATCH] D82255: [flang][OpenMP] Enhance parser support for taskwait construct to OpenMP 5.0

Kiran Kumar T P via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 20 02:05:10 PDT 2020


kiranktp created this revision.
kiranktp added reviewers: tskeith, klausler, kiranchandramohan, DavidTruby, richard.barton.arm, anchu-rajendran, jdoerfert.
kiranktp added projects: Flang, LLVM.
Herald added subscribers: sstefan1, guansong, yaxunl.

This patch enhances parser support for taskwait construct to OpenMP 5.0.

2.18.5 taskwait Construct
	!$omp taskwait [clause[ [,] clause] ... ]

  		where clause is one of the following:
  		depend([depend-modifier,]dependence-type : locator-list)
  		nowait

The patch includes code changes and testcase modifications.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D82255

Files:
  flang/lib/Semantics/check-omp-structure.cpp
  flang/test/Semantics/omp-clause-validity01.f90


Index: flang/test/Semantics/omp-clause-validity01.f90
===================================================================
--- flang/test/Semantics/omp-clause-validity01.f90
+++ flang/test/Semantics/omp-clause-validity01.f90
@@ -396,6 +396,11 @@
   !$omp taskyield
   !$omp barrier
   !$omp taskwait
+  !$omp taskwait nowait
+  !$omp taskwait depend(source)
+  !$omp taskwait depend(source) nowait
+  !ERROR: Internal: no symbol found for 'i'
+  !$omp taskwait depend(sink:i-1)
   ! !$omp target enter data map(to:arrayA) map(alloc:arrayB)
   ! !$omp target update from(arrayA) to(arrayB)
   ! !$omp target exit data map(from:arrayA) map(delete:arrayB)
Index: flang/lib/Semantics/check-omp-structure.cpp
===================================================================
--- flang/lib/Semantics/check-omp-structure.cpp
+++ flang/lib/Semantics/check-omp-structure.cpp
@@ -668,6 +668,8 @@
   case parser::OmpSimpleStandaloneDirective::Directive::Taskwait: {
     // 2.13.4 taskwait
     PushContext(dir.source, OmpDirective::TASKWAIT);
+    OmpClauseSet allowed{OmpClause::DEPEND, OmpClause::NOWAIT};
+    SetContextAllowed(allowed);
   } break;
   case parser::OmpSimpleStandaloneDirective::Directive::Taskyield: {
     // 2.9.4 taskyield


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82255.272244.patch
Type: text/x-patch
Size: 1238 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200620/1593e12f/attachment-0001.bin>


More information about the llvm-commits mailing list