diff --git a/flang/lib/Semantics/check-omp-structure.cpp b/flang/lib/Semantics/check-omp-structure.cpp index 76dfd40c6a62c..f9d645dc2e78a 100644 --- a/flang/lib/Semantics/check-omp-structure.cpp +++ b/flang/lib/Semantics/check-omp-structure.cpp @@ -4420,6 +4420,13 @@ void OmpStructureChecker::Enter(const parser::OmpClause::Depend &x) { CheckDoacross(*doaDep); CheckDependenceType(doaDep->GetDepType()); } else { + using Modifier = parser::OmpDependClause::TaskDep::Modifier; + auto &modifiers{std::get>>(taskDep->t)}; + if (!modifiers) { + context_.Say(GetContext().clauseSource, + "A DEPEND clause on a TASK construct must have a valid task dependence type"_err_en_US); + return; + } CheckTaskDependenceType(taskDep->GetTaskDepType()); } diff --git a/flang/test/Semantics/OpenMP/task-depend.f90 b/flang/test/Semantics/OpenMP/task-depend.f90 new file mode 100644 index 0000000000000..69a37e014bde3 --- /dev/null +++ b/flang/test/Semantics/OpenMP/task-depend.f90 @@ -0,0 +1,8 @@ +! RUN: %python %S/../test_errors.py %s %flang -fopenmp + +program test +! ERROR: A DEPEND clause on a TASK construct must have a valid task dependence type +!$omp task depend(ii) +!$omp end task +end +