[PATCH] D157090: [Flang][Sema] Move directive sets to a shared location

2023-08-07 Thread Sergio Afonso via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGec70627dd177: [Flang][Sema] Move directive sets to a shared 
location (authored by skatrak).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157090/new/

https://reviews.llvm.org/D157090

Files:
  clang/docs/tools/clang-formatted-files.txt
  flang/include/flang/Semantics/openmp-directive-sets.h
  flang/lib/Semantics/check-omp-structure.cpp
  flang/lib/Semantics/check-omp-structure.h
  flang/lib/Semantics/resolve-directives.cpp

Index: flang/lib/Semantics/resolve-directives.cpp
===
--- flang/lib/Semantics/resolve-directives.cpp
+++ flang/lib/Semantics/resolve-directives.cpp
@@ -1362,7 +1362,7 @@
 if (targetIt == dirContext_.rend()) {
   return;
 }
-if (llvm::omp::parallelSet.test(targetIt->directive) ||
+if (llvm::omp::allParallelSet.test(targetIt->directive) ||
 llvm::omp::taskGeneratingSet.test(targetIt->directive)) {
   break;
 }
@@ -1463,7 +1463,7 @@
 return;
   }
   Symbol::Flag ivDSA;
-  if (!llvm::omp::simdSet.test(GetContext().directive)) {
+  if (!llvm::omp::allSimdSet.test(GetContext().directive)) {
 ivDSA = Symbol::Flag::OmpPrivate;
   } else if (level == 1) {
 ivDSA = Symbol::Flag::OmpLinear;
Index: flang/lib/Semantics/check-omp-structure.h
===
--- flang/lib/Semantics/check-omp-structure.h
+++ flang/lib/Semantics/check-omp-structure.h
@@ -17,12 +17,10 @@
 #include "check-directive-structure.h"
 #include "flang/Common/enum-set.h"
 #include "flang/Parser/parse-tree.h"
+#include "flang/Semantics/openmp-directive-sets.h"
 #include "flang/Semantics/semantics.h"
 #include "llvm/Frontend/OpenMP/OMPConstants.h"
 
-using OmpDirectiveSet = Fortran::common::EnumSet;
-
 using OmpClauseSet =
 Fortran::common::EnumSet;
 
@@ -31,74 +29,6 @@
 
 namespace llvm {
 namespace omp {
-static OmpDirectiveSet parallelSet{Directive::OMPD_distribute_parallel_do,
-Directive::OMPD_distribute_parallel_do_simd, Directive::OMPD_parallel,
-Directive::OMPD_parallel_do, Directive::OMPD_parallel_do_simd,
-Directive::OMPD_parallel_sections, Directive::OMPD_parallel_workshare,
-Directive::OMPD_target_parallel, Directive::OMPD_target_parallel_do,
-Directive::OMPD_target_parallel_do_simd,
-Directive::OMPD_target_teams_distribute_parallel_do,
-Directive::OMPD_target_teams_distribute_parallel_do_simd,
-Directive::OMPD_teams_distribute_parallel_do,
-Directive::OMPD_teams_distribute_parallel_do_simd};
-static OmpDirectiveSet doSet{Directive::OMPD_distribute_parallel_do,
-Directive::OMPD_distribute_parallel_do_simd, Directive::OMPD_parallel_do,
-Directive::OMPD_parallel_do_simd, Directive::OMPD_do,
-Directive::OMPD_do_simd, Directive::OMPD_target_parallel_do,
-Directive::OMPD_target_parallel_do_simd,
-Directive::OMPD_target_teams_distribute_parallel_do,
-Directive::OMPD_target_teams_distribute_parallel_do_simd,
-Directive::OMPD_teams_distribute_parallel_do,
-Directive::OMPD_teams_distribute_parallel_do_simd};
-static OmpDirectiveSet doSimdSet{Directive::OMPD_distribute_parallel_do_simd,
-Directive::OMPD_parallel_do_simd, Directive::OMPD_do_simd,
-Directive::OMPD_target_parallel_do_simd,
-Directive::OMPD_target_teams_distribute_parallel_do_simd,
-Directive::OMPD_teams_distribute_parallel_do_simd};
-static OmpDirectiveSet workShareSet{
-OmpDirectiveSet{Directive::OMPD_workshare,
-Directive::OMPD_parallel_workshare, Directive::OMPD_parallel_sections,
-Directive::OMPD_sections, Directive::OMPD_single} |
-doSet};
-static OmpDirectiveSet taskloopSet{
-Directive::OMPD_taskloop, Directive::OMPD_taskloop_simd};
-static OmpDirectiveSet targetSet{Directive::OMPD_target,
-Directive::OMPD_target_parallel, Directive::OMPD_target_parallel_do,
-Directive::OMPD_target_parallel_do_simd, Directive::OMPD_target_simd,
-Directive::OMPD_target_teams, Directive::OMPD_target_teams_distribute,
-Directive::OMPD_target_teams_distribute_parallel_do,
-Directive::OMPD_target_teams_distribute_parallel_do_simd,
-Directive::OMPD_target_teams_distribute_simd};
-static OmpDirectiveSet simdSet{Directive::OMPD_distribute_parallel_do_simd,
-Directive::OMPD_distribute_simd, Directive::OMPD_do_simd,
-Directive::OMPD_parallel_do_simd, Directive::OMPD_simd,
-Directive::OMPD_target_parallel_do_simd, Directive::OMPD_target_simd,
-Directive::OMPD_target_teams_distribute_parallel_do_simd,
-Directive::OMPD_target_teams_distribute_simd, Directive::OMPD_taskloop_simd,
-Directive::OMPD_teams_distribute_parallel_do_simd,
-Directive::OMPD_teams_distribute_simd};
-static OmpDirectiveSet teamSet{Directive::OMPD_teams,
-Directive::OMPD_teams_distribute,
-

[PATCH] D157090: [Flang][Sema] Move directive sets to a shared location

2023-08-07 Thread Kiran Chandramohan via Phabricator via cfe-commits
kiranchandramohan accepted this revision.
kiranchandramohan added a comment.
This revision is now accepted and ready to land.

Thanks. LG.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157090/new/

https://reviews.llvm.org/D157090

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D157090: [Flang][Sema] Move directive sets to a shared location

2023-08-07 Thread Sergio Afonso via Phabricator via cfe-commits
skatrak added a comment.

In D157090#4562088 , 
@kiranchandramohan wrote:

> This looks OK. The only concern is whether we will lose the ability to inline 
> the code for set membership. Can these sets be put in a header file with 
> `inline constexpr`?

Thank you for the suggestion. It's not possible to declare these as `constexpr` 
because `EnumSet::set`, called by the constructor, is not `constexpr` as well. 
But I have made them `const inline` and defined them in the header file. I hope 
that addresses your concerns.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157090/new/

https://reviews.llvm.org/D157090

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D157090: [Flang][Sema] Move directive sets to a shared location

2023-08-07 Thread Sergio Afonso via Phabricator via cfe-commits
skatrak updated this revision to Diff 547686.
skatrak added a comment.

Declare sets as `inline` inside of header file.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157090/new/

https://reviews.llvm.org/D157090

Files:
  clang/docs/tools/clang-formatted-files.txt
  flang/include/flang/Semantics/openmp-directive-sets.h
  flang/lib/Semantics/check-omp-structure.cpp
  flang/lib/Semantics/check-omp-structure.h
  flang/lib/Semantics/resolve-directives.cpp

Index: flang/lib/Semantics/resolve-directives.cpp
===
--- flang/lib/Semantics/resolve-directives.cpp
+++ flang/lib/Semantics/resolve-directives.cpp
@@ -1345,7 +1345,7 @@
 if (targetIt == dirContext_.rend()) {
   return;
 }
-if (llvm::omp::parallelSet.test(targetIt->directive) ||
+if (llvm::omp::allParallelSet.test(targetIt->directive) ||
 llvm::omp::taskGeneratingSet.test(targetIt->directive)) {
   break;
 }
@@ -1446,7 +1446,7 @@
 return;
   }
   Symbol::Flag ivDSA;
-  if (!llvm::omp::simdSet.test(GetContext().directive)) {
+  if (!llvm::omp::allSimdSet.test(GetContext().directive)) {
 ivDSA = Symbol::Flag::OmpPrivate;
   } else if (level == 1) {
 ivDSA = Symbol::Flag::OmpLinear;
Index: flang/lib/Semantics/check-omp-structure.h
===
--- flang/lib/Semantics/check-omp-structure.h
+++ flang/lib/Semantics/check-omp-structure.h
@@ -17,12 +17,10 @@
 #include "check-directive-structure.h"
 #include "flang/Common/enum-set.h"
 #include "flang/Parser/parse-tree.h"
+#include "flang/Semantics/openmp-directive-sets.h"
 #include "flang/Semantics/semantics.h"
 #include "llvm/Frontend/OpenMP/OMPConstants.h"
 
-using OmpDirectiveSet = Fortran::common::EnumSet;
-
 using OmpClauseSet =
 Fortran::common::EnumSet;
 
@@ -31,74 +29,6 @@
 
 namespace llvm {
 namespace omp {
-static OmpDirectiveSet parallelSet{Directive::OMPD_distribute_parallel_do,
-Directive::OMPD_distribute_parallel_do_simd, Directive::OMPD_parallel,
-Directive::OMPD_parallel_do, Directive::OMPD_parallel_do_simd,
-Directive::OMPD_parallel_sections, Directive::OMPD_parallel_workshare,
-Directive::OMPD_target_parallel, Directive::OMPD_target_parallel_do,
-Directive::OMPD_target_parallel_do_simd,
-Directive::OMPD_target_teams_distribute_parallel_do,
-Directive::OMPD_target_teams_distribute_parallel_do_simd,
-Directive::OMPD_teams_distribute_parallel_do,
-Directive::OMPD_teams_distribute_parallel_do_simd};
-static OmpDirectiveSet doSet{Directive::OMPD_distribute_parallel_do,
-Directive::OMPD_distribute_parallel_do_simd, Directive::OMPD_parallel_do,
-Directive::OMPD_parallel_do_simd, Directive::OMPD_do,
-Directive::OMPD_do_simd, Directive::OMPD_target_parallel_do,
-Directive::OMPD_target_parallel_do_simd,
-Directive::OMPD_target_teams_distribute_parallel_do,
-Directive::OMPD_target_teams_distribute_parallel_do_simd,
-Directive::OMPD_teams_distribute_parallel_do,
-Directive::OMPD_teams_distribute_parallel_do_simd};
-static OmpDirectiveSet doSimdSet{Directive::OMPD_distribute_parallel_do_simd,
-Directive::OMPD_parallel_do_simd, Directive::OMPD_do_simd,
-Directive::OMPD_target_parallel_do_simd,
-Directive::OMPD_target_teams_distribute_parallel_do_simd,
-Directive::OMPD_teams_distribute_parallel_do_simd};
-static OmpDirectiveSet workShareSet{
-OmpDirectiveSet{Directive::OMPD_workshare,
-Directive::OMPD_parallel_workshare, Directive::OMPD_parallel_sections,
-Directive::OMPD_sections, Directive::OMPD_single} |
-doSet};
-static OmpDirectiveSet taskloopSet{
-Directive::OMPD_taskloop, Directive::OMPD_taskloop_simd};
-static OmpDirectiveSet targetSet{Directive::OMPD_target,
-Directive::OMPD_target_parallel, Directive::OMPD_target_parallel_do,
-Directive::OMPD_target_parallel_do_simd, Directive::OMPD_target_simd,
-Directive::OMPD_target_teams, Directive::OMPD_target_teams_distribute,
-Directive::OMPD_target_teams_distribute_parallel_do,
-Directive::OMPD_target_teams_distribute_parallel_do_simd,
-Directive::OMPD_target_teams_distribute_simd};
-static OmpDirectiveSet simdSet{Directive::OMPD_distribute_parallel_do_simd,
-Directive::OMPD_distribute_simd, Directive::OMPD_do_simd,
-Directive::OMPD_parallel_do_simd, Directive::OMPD_simd,
-Directive::OMPD_target_parallel_do_simd, Directive::OMPD_target_simd,
-Directive::OMPD_target_teams_distribute_parallel_do_simd,
-Directive::OMPD_target_teams_distribute_simd, Directive::OMPD_taskloop_simd,
-Directive::OMPD_teams_distribute_parallel_do_simd,
-Directive::OMPD_teams_distribute_simd};
-static OmpDirectiveSet teamSet{Directive::OMPD_teams,
-Directive::OMPD_teams_distribute,
-Directive::OMPD_teams_distribute_parallel_do,
-Directive::OMPD_teams_distribute_parallel_do_simd,
-

[PATCH] D157090: [Flang][Sema] Move directive sets to a shared location

2023-08-04 Thread Kiran Chandramohan via Phabricator via cfe-commits
kiranchandramohan added a comment.

This looks OK. The only concern is whether we will lose the ability to inline 
the code for set membership. Can these sets be put in a header file with 
`inline constexpr`?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157090/new/

https://reviews.llvm.org/D157090

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D157090: [Flang][Sema] Move directive sets to a shared location

2023-08-04 Thread Sergio Afonso via Phabricator via cfe-commits
skatrak updated this revision to Diff 547181.
skatrak added a comment.

Add missing newline at end of file.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157090/new/

https://reviews.llvm.org/D157090

Files:
  clang/docs/tools/clang-formatted-files.txt
  flang/include/flang/Semantics/openmp-directive-sets.h
  flang/lib/Semantics/CMakeLists.txt
  flang/lib/Semantics/check-omp-structure.cpp
  flang/lib/Semantics/check-omp-structure.h
  flang/lib/Semantics/openmp-directive-sets.cpp
  flang/lib/Semantics/resolve-directives.cpp

Index: flang/lib/Semantics/resolve-directives.cpp
===
--- flang/lib/Semantics/resolve-directives.cpp
+++ flang/lib/Semantics/resolve-directives.cpp
@@ -1345,7 +1345,7 @@
 if (targetIt == dirContext_.rend()) {
   return;
 }
-if (llvm::omp::parallelSet.test(targetIt->directive) ||
+if (llvm::omp::allParallelSet.test(targetIt->directive) ||
 llvm::omp::taskGeneratingSet.test(targetIt->directive)) {
   break;
 }
@@ -1446,7 +1446,7 @@
 return;
   }
   Symbol::Flag ivDSA;
-  if (!llvm::omp::simdSet.test(GetContext().directive)) {
+  if (!llvm::omp::allSimdSet.test(GetContext().directive)) {
 ivDSA = Symbol::Flag::OmpPrivate;
   } else if (level == 1) {
 ivDSA = Symbol::Flag::OmpLinear;
Index: flang/lib/Semantics/openmp-directive-sets.cpp
===
--- /dev/null
+++ flang/lib/Semantics/openmp-directive-sets.cpp
@@ -0,0 +1,270 @@
+//===-- lib/Semantics/openmp-directive-sets.cpp ---===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+
+#include "flang/Semantics/openmp-directive-sets.h"
+
+//===--===//
+// Single directives
+//===--===//
+
+OmpDirectiveSet llvm::omp::topParallelSet{
+Directive::OMPD_parallel,
+Directive::OMPD_parallel_do,
+Directive::OMPD_parallel_do_simd,
+Directive::OMPD_parallel_sections,
+Directive::OMPD_parallel_workshare,
+};
+
+OmpDirectiveSet llvm::omp::allParallelSet{
+Directive::OMPD_distribute_parallel_do,
+Directive::OMPD_distribute_parallel_do_simd,
+Directive::OMPD_parallel,
+Directive::OMPD_parallel_do,
+Directive::OMPD_parallel_do_simd,
+Directive::OMPD_parallel_sections,
+Directive::OMPD_parallel_workshare,
+Directive::OMPD_target_parallel,
+Directive::OMPD_target_parallel_do,
+Directive::OMPD_target_parallel_do_simd,
+Directive::OMPD_target_teams_distribute_parallel_do,
+Directive::OMPD_target_teams_distribute_parallel_do_simd,
+Directive::OMPD_teams_distribute_parallel_do,
+Directive::OMPD_teams_distribute_parallel_do_simd,
+};
+
+OmpDirectiveSet llvm::omp::topDoSet{
+Directive::OMPD_do,
+Directive::OMPD_do_simd,
+};
+
+OmpDirectiveSet llvm::omp::allDoSet{
+Directive::OMPD_distribute_parallel_do,
+Directive::OMPD_distribute_parallel_do_simd,
+Directive::OMPD_parallel_do,
+Directive::OMPD_parallel_do_simd,
+Directive::OMPD_do,
+Directive::OMPD_do_simd,
+Directive::OMPD_target_parallel_do,
+Directive::OMPD_target_parallel_do_simd,
+Directive::OMPD_target_teams_distribute_parallel_do,
+Directive::OMPD_target_teams_distribute_parallel_do_simd,
+Directive::OMPD_teams_distribute_parallel_do,
+Directive::OMPD_teams_distribute_parallel_do_simd,
+};
+
+OmpDirectiveSet llvm::omp::topTaskloopSet{
+Directive::OMPD_taskloop,
+Directive::OMPD_taskloop_simd,
+};
+
+OmpDirectiveSet llvm::omp::allTaskloopSet = llvm::omp::topTaskloopSet;
+
+OmpDirectiveSet llvm::omp::topTargetSet{
+Directive::OMPD_target,
+Directive::OMPD_target_parallel,
+Directive::OMPD_target_parallel_do,
+Directive::OMPD_target_parallel_do_simd,
+Directive::OMPD_target_simd,
+Directive::OMPD_target_teams,
+Directive::OMPD_target_teams_distribute,
+Directive::OMPD_target_teams_distribute_parallel_do,
+Directive::OMPD_target_teams_distribute_parallel_do_simd,
+Directive::OMPD_target_teams_distribute_simd,
+};
+
+OmpDirectiveSet llvm::omp::allTargetSet = llvm::omp::topTargetSet;
+
+OmpDirectiveSet llvm::omp::topSimdSet{
+Directive::OMPD_simd,
+};
+
+OmpDirectiveSet llvm::omp::allSimdSet{
+Directive::OMPD_distribute_parallel_do_simd,
+Directive::OMPD_distribute_simd,
+Directive::OMPD_do_simd,
+Directive::OMPD_parallel_do_simd,
+Directive::OMPD_simd,
+Directive::OMPD_target_parallel_do_simd,
+Directive::OMPD_target_simd,
+Directive::OMPD_target_teams_distribute_parallel_do_simd,
+

[PATCH] D157090: [Flang][Sema] Move directive sets to a shared location

2023-08-04 Thread Sergio Afonso via Phabricator via cfe-commits
skatrak created this revision.
skatrak added reviewers: kiranchandramohan, jsjodin, domada, agozillon, 
TIFitis, raghavendhra.
Herald added a reviewer: sscalpone.
Herald added projects: Flang, All.
skatrak requested review of this revision.
Herald added a reviewer: jdoerfert.
Herald added subscribers: cfe-commits, jplehr, sstefan1, jdoerfert.
Herald added a project: clang.

This patch moves directive sets defined internally in Semantics to a header 
accessible by other stages of the compiler to enable reuse. Some sets are 
renamed/rearranged and others are lifted from local definitions to provide a 
single source of truth.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D157090

Files:
  clang/docs/tools/clang-formatted-files.txt
  flang/include/flang/Semantics/openmp-directive-sets.h
  flang/lib/Semantics/CMakeLists.txt
  flang/lib/Semantics/check-omp-structure.cpp
  flang/lib/Semantics/check-omp-structure.h
  flang/lib/Semantics/openmp-directive-sets.cpp
  flang/lib/Semantics/resolve-directives.cpp

Index: flang/lib/Semantics/resolve-directives.cpp
===
--- flang/lib/Semantics/resolve-directives.cpp
+++ flang/lib/Semantics/resolve-directives.cpp
@@ -1345,7 +1345,7 @@
 if (targetIt == dirContext_.rend()) {
   return;
 }
-if (llvm::omp::parallelSet.test(targetIt->directive) ||
+if (llvm::omp::allParallelSet.test(targetIt->directive) ||
 llvm::omp::taskGeneratingSet.test(targetIt->directive)) {
   break;
 }
@@ -1446,7 +1446,7 @@
 return;
   }
   Symbol::Flag ivDSA;
-  if (!llvm::omp::simdSet.test(GetContext().directive)) {
+  if (!llvm::omp::allSimdSet.test(GetContext().directive)) {
 ivDSA = Symbol::Flag::OmpPrivate;
   } else if (level == 1) {
 ivDSA = Symbol::Flag::OmpLinear;
Index: flang/lib/Semantics/openmp-directive-sets.cpp
===
--- /dev/null
+++ flang/lib/Semantics/openmp-directive-sets.cpp
@@ -0,0 +1,270 @@
+//===-- lib/Semantics/openmp-directive-sets.cpp ---===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+
+#include "flang/Semantics/openmp-directive-sets.h"
+
+//===--===//
+// Single directives
+//===--===//
+
+OmpDirectiveSet llvm::omp::topParallelSet{
+Directive::OMPD_parallel,
+Directive::OMPD_parallel_do,
+Directive::OMPD_parallel_do_simd,
+Directive::OMPD_parallel_sections,
+Directive::OMPD_parallel_workshare,
+};
+
+OmpDirectiveSet llvm::omp::allParallelSet{
+Directive::OMPD_distribute_parallel_do,
+Directive::OMPD_distribute_parallel_do_simd,
+Directive::OMPD_parallel,
+Directive::OMPD_parallel_do,
+Directive::OMPD_parallel_do_simd,
+Directive::OMPD_parallel_sections,
+Directive::OMPD_parallel_workshare,
+Directive::OMPD_target_parallel,
+Directive::OMPD_target_parallel_do,
+Directive::OMPD_target_parallel_do_simd,
+Directive::OMPD_target_teams_distribute_parallel_do,
+Directive::OMPD_target_teams_distribute_parallel_do_simd,
+Directive::OMPD_teams_distribute_parallel_do,
+Directive::OMPD_teams_distribute_parallel_do_simd,
+};
+
+OmpDirectiveSet llvm::omp::topDoSet{
+Directive::OMPD_do,
+Directive::OMPD_do_simd,
+};
+
+OmpDirectiveSet llvm::omp::allDoSet{
+Directive::OMPD_distribute_parallel_do,
+Directive::OMPD_distribute_parallel_do_simd,
+Directive::OMPD_parallel_do,
+Directive::OMPD_parallel_do_simd,
+Directive::OMPD_do,
+Directive::OMPD_do_simd,
+Directive::OMPD_target_parallel_do,
+Directive::OMPD_target_parallel_do_simd,
+Directive::OMPD_target_teams_distribute_parallel_do,
+Directive::OMPD_target_teams_distribute_parallel_do_simd,
+Directive::OMPD_teams_distribute_parallel_do,
+Directive::OMPD_teams_distribute_parallel_do_simd,
+};
+
+OmpDirectiveSet llvm::omp::topTaskloopSet{
+Directive::OMPD_taskloop,
+Directive::OMPD_taskloop_simd,
+};
+
+OmpDirectiveSet llvm::omp::allTaskloopSet = llvm::omp::topTaskloopSet;
+
+OmpDirectiveSet llvm::omp::topTargetSet{
+Directive::OMPD_target,
+Directive::OMPD_target_parallel,
+Directive::OMPD_target_parallel_do,
+Directive::OMPD_target_parallel_do_simd,
+Directive::OMPD_target_simd,
+Directive::OMPD_target_teams,
+Directive::OMPD_target_teams_distribute,
+Directive::OMPD_target_teams_distribute_parallel_do,
+Directive::OMPD_target_teams_distribute_parallel_do_simd,
+Directive::OMPD_target_teams_distribute_simd,
+};
+
+OmpDirectiveSet llvm::omp::allTargetSet =