<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Johannes,<div class=""><br class=""></div><div class="">I think I'm hitting a bit of a problem with this change. We seem to be missing a dependency between llvm-config and the (new?) libraries involved here:</div><div class=""><br class=""></div><div class="">cmake -G Ninja ../llvm -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_BUILD_TESTS=Off -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_TARGETS_TO_BUILD="X86"</div><div class="">ninja check-llvm-tools-llvm-config  # note, w/o building everything first</div><div class=""><br class=""></div><div class="">fails</div><div class=""><br class=""></div><div class=""><div class="">    LLVM :: tools/llvm-config/booleans.test</div><div class="">    LLVM :: tools/llvm-config/system-libs.test</div><div class=""><br class=""></div><div class="">with</div><div class=""><br class=""></div><div class=""><div class="">> ./bin/llvm-config --shared-mode</div><div class="">llvm-config: error: component libraries and shared library</div><div class=""><br class=""></div><div class="">llvm-config: error: missing: <...>t/build/lib/libLLVMFrontendOpenMP.a</div></div><div class=""><br class=""></div><div class="">I'm not sure how to fix this just yet, perhaps it has something to do with extending the approach introduced in</div><div class=""><br class=""></div><div class=""><pre class="c-mrkdwn__pre" data-stringify-type="pre" style="box-sizing: inherit; margin-top: 4px; margin-bottom: 4px; padding: 8px; --saf-0: rgba(var(--sk_foreground_low,29,28,29),0.13); line-height: 1.50001; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: normal; tab-size: 4; border: 1px solid var(--saf-0); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background: rgba(var(--sk_foreground_min,29,28,29),0.04); counter-reset: list-0 0 list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(29, 28, 29); orphans: 2; widows: 2; font-family: Monaco, Menlo, Consolas, "Courier New", monospace !important;">commit bb6d95fc3a74eab118b622e4c779d0b9edc53f54<br style="box-sizing: inherit;" class="">Author: Andrew Wilkins <<a target="_blank" class="c-link" href="mailto:axwalk@gmail.com" rel="noopener noreferrer" style="box-sizing: inherit; color: inherit; text-decoration: none;">axwalk@gmail.com</a>><br style="box-sizing: inherit;" class="">Date:   Sat Sep 5 01:27:33 2015<span class="c-mrkdwn__br" data-stringify-type="paragraph-break" style="box-sizing: inherit; display: block; height: unset;"></span>    [cmake] rework LLVM_LINK_LLVM_DYLIB option handling</pre><div class=""><br class=""></div></div><div>to the Frontend / OpenMP component.</div><div><br class=""></div><div>Note, if done</div><div><br class=""></div><div>ninja  # first</div><div>ninja check-llvm-tools-llvm-config  # and then this</div><div><br class=""></div><div>tests pass.</div><div><br class=""></div><div>Thanks,</div><div>Roman</div><div><br class=""><blockquote type="cite" class=""><div class="">On Dec 9, 2019, at 10:10 PM, Johannes Doerfert via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class="">Author: Johannes Doerfert<br class="">Date: 2019-12-10T00:10:09-06:00<br class="">New Revision: eb3e81f43f019cd90da87169aeff0eaddc4c9ecb<br class=""><br class="">URL: <a href="https://github.com/llvm/llvm-project/commit/eb3e81f43f019cd90da87169aeff0eaddc4c9ecb" class="">https://github.com/llvm/llvm-project/commit/eb3e81f43f019cd90da87169aeff0eaddc4c9ecb</a><br class="">DIFF: <a href="https://github.com/llvm/llvm-project/commit/eb3e81f43f019cd90da87169aeff0eaddc4c9ecb.diff" class="">https://github.com/llvm/llvm-project/commit/eb3e81f43f019cd90da87169aeff0eaddc4c9ecb.diff</a><br class=""><br class="">LOG: [OpenMP][NFCI] Introduce llvm/IR/OpenMPConstants.h<br class=""><br class="">Summary:<br class="">The new OpenMPConstants.h is a location for all OpenMP related constants<br class="">(and helpers) to live.<br class=""><br class="">This patch moves the directives there (the enum OpenMPDirectiveKind) and<br class="">rewires Clang to use the new location.<br class=""><br class="">Initially part of D69785.<br class=""><br class="">Reviewers: kiranchandramohan, ABataev, RaviNarayanaswamy, gtbercea, grokos, sdmitriev, JonChesterfield, hfinkel, fghanim<br class=""><br class="">Subscribers: jholewinski, ppenzin, penzn, llvm-commits, cfe-commits, jfb, guansong, bollu, hiraditya, mgorny<br class=""><br class="">Tags: #clang, #llvm<br class=""><br class="">Differential Revision: <a href="https://reviews.llvm.org/D69853" class="">https://reviews.llvm.org/D69853</a><br class=""><br class="">Added: <br class="">    llvm/include/llvm/Frontend/OpenMP/OMPConstants.h<br class="">    llvm/include/llvm/Frontend/OpenMP/OMPKinds.def<br class="">    llvm/lib/Frontend/CMakeLists.txt<br class="">    llvm/lib/Frontend/LLVMBuild.txt<br class="">    llvm/lib/Frontend/OpenMP/CMakeLists.txt<br class="">    llvm/lib/Frontend/OpenMP/LLVMBuild.txt<br class="">    llvm/lib/Frontend/OpenMP/OMPConstants.cpp<br class=""><br class="">Modified: <br class="">    clang/include/clang/AST/OpenMPClause.h<br class="">    clang/include/clang/AST/StmtOpenMP.h<br class="">    clang/include/clang/Basic/OpenMPKinds.def<br class="">    clang/include/clang/Basic/OpenMPKinds.h<br class="">    clang/lib/AST/CMakeLists.txt<br class="">    clang/lib/AST/OpenMPClause.cpp<br class="">    clang/lib/AST/StmtOpenMP.cpp<br class="">    clang/lib/Basic/OpenMPKinds.cpp<br class="">    clang/lib/CodeGen/CGOpenMPRuntime.cpp<br class="">    clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp<br class="">    clang/lib/CodeGen/CGStmtOpenMP.cpp<br class="">    clang/lib/CodeGen/CodeGenFunction.h<br class="">    clang/lib/Parse/CMakeLists.txt<br class="">    clang/lib/Parse/ParseOpenMP.cpp<br class="">    clang/lib/Sema/CMakeLists.txt<br class="">    clang/lib/Sema/SemaOpenMP.cpp<br class="">    clang/lib/Sema/SemaTemplateInstantiateDecl.cpp<br class="">    clang/lib/Sema/TreeTransform.h<br class="">    clang/lib/Serialization/ASTWriter.cpp<br class="">    clang/lib/Serialization/ASTWriterStmt.cpp<br class="">    llvm/lib/CMakeLists.txt<br class="">    llvm/lib/LLVMBuild.txt<br class=""><br class="">Removed: <br class=""><br class=""><br class=""><br class="">################################################################################<br class="">diff  --git a/clang/include/clang/AST/OpenMPClause.h b/clang/include/clang/AST/OpenMPClause.h<br class="">index b2a2035dcb3c..72c638bf6460 100644<br class="">--- a/clang/include/clang/AST/OpenMPClause.h<br class="">+++ b/clang/include/clang/AST/OpenMPClause.h<br class="">@@ -111,7 +111,7 @@ class OMPClauseWithPreInit {<br class="">   Stmt *PreInit = nullptr;<br class=""><br class="">   /// Region that captures the associated stmt.<br class="">-  OpenMPDirectiveKind CaptureRegion = OMPD_unknown;<br class="">+  OpenMPDirectiveKind CaptureRegion = llvm::omp::OMPD_unknown;<br class=""><br class=""> protected:<br class="">   OMPClauseWithPreInit(const OMPClause *This) {<br class="">@@ -119,7 +119,9 @@ class OMPClauseWithPreInit {<br class="">   }<br class=""><br class="">   /// Set pre-initialization statement for the clause.<br class="">-  void setPreInitStmt(Stmt *S, OpenMPDirectiveKind ThisRegion = OMPD_unknown) {<br class="">+  void<br class="">+  setPreInitStmt(Stmt *S,<br class="">+                 OpenMPDirectiveKind ThisRegion = llvm::omp::OMPD_unknown) {<br class="">     PreInit = S;<br class="">     CaptureRegion = ThisRegion;<br class="">   }<br class="">@@ -432,7 +434,7 @@ class OMPIfClause : public OMPClause, public OMPClauseWithPreInit {<br class="">   SourceLocation ColonLoc;<br class=""><br class="">   /// Directive name modifier for the clause.<br class="">-  OpenMPDirectiveKind NameModifier = OMPD_unknown;<br class="">+  OpenMPDirectiveKind NameModifier = llvm::omp::OMPD_unknown;<br class=""><br class="">   /// Name modifier location.<br class="">   SourceLocation NameModifierLoc;<br class=""><br class="">diff  --git a/clang/include/clang/AST/StmtOpenMP.h b/clang/include/clang/AST/StmtOpenMP.h<br class="">index cc10f9e4c48e..65f0afece224 100644<br class="">--- a/clang/include/clang/AST/StmtOpenMP.h<br class="">+++ b/clang/include/clang/AST/StmtOpenMP.h<br class="">@@ -366,8 +366,9 @@ class OMPParallelDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPParallelDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                        unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPParallelDirectiveClass, OMPD_parallel,<br class="">-                               StartLoc, EndLoc, NumClauses, 1),<br class="">+      : OMPExecutableDirective(this, OMPParallelDirectiveClass,<br class="">+                               llvm::omp::OMPD_parallel, StartLoc, EndLoc,<br class="">+                               NumClauses, 1),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -375,9 +376,9 @@ class OMPParallelDirective : public OMPExecutableDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPParallelDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPParallelDirectiveClass, OMPD_parallel,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               1),<br class="">+      : OMPExecutableDirective(this, OMPParallelDirectiveClass,<br class="">+                               llvm::omp::OMPD_parallel, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 1),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Set cancel state.<br class="">@@ -1201,8 +1202,8 @@ class OMPSimdDirective : public OMPLoopDirective {<br class="">   ///<br class="">   OMPSimdDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                    unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPSimdDirectiveClass, OMPD_simd, StartLoc,<br class="">-                         EndLoc, CollapsedNum, NumClauses) {}<br class="">+      : OMPLoopDirective(this, OMPSimdDirectiveClass, llvm::omp::OMPD_simd,<br class="">+                         StartLoc, EndLoc, CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -1210,7 +1211,7 @@ class OMPSimdDirective : public OMPLoopDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPSimdDirective(unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPSimdDirectiveClass, OMPD_simd,<br class="">+      : OMPLoopDirective(this, OMPSimdDirectiveClass, llvm::omp::OMPD_simd,<br class="">                          SourceLocation(), SourceLocation(), CollapsedNum,<br class="">                          NumClauses) {}<br class=""><br class="">@@ -1270,8 +1271,8 @@ class OMPForDirective : public OMPLoopDirective {<br class="">   ///<br class="">   OMPForDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                   unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPForDirectiveClass, OMPD_for, StartLoc, EndLoc,<br class="">-                         CollapsedNum, NumClauses),<br class="">+      : OMPLoopDirective(this, OMPForDirectiveClass, llvm::omp::OMPD_for,<br class="">+                         StartLoc, EndLoc, CollapsedNum, NumClauses),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -1280,8 +1281,9 @@ class OMPForDirective : public OMPLoopDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPForDirective(unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPForDirectiveClass, OMPD_for, SourceLocation(),<br class="">-                         SourceLocation(), CollapsedNum, NumClauses),<br class="">+      : OMPLoopDirective(this, OMPForDirectiveClass, llvm::omp::OMPD_for,<br class="">+                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">+                         NumClauses),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Set cancel state.<br class="">@@ -1343,8 +1345,9 @@ class OMPForSimdDirective : public OMPLoopDirective {<br class="">   ///<br class="">   OMPForSimdDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                       unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPForSimdDirectiveClass, OMPD_for_simd,<br class="">-                         StartLoc, EndLoc, CollapsedNum, NumClauses) {}<br class="">+      : OMPLoopDirective(this, OMPForSimdDirectiveClass,<br class="">+                         llvm::omp::OMPD_for_simd, StartLoc, EndLoc,<br class="">+                         CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -1352,9 +1355,9 @@ class OMPForSimdDirective : public OMPLoopDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPForSimdDirective(unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPForSimdDirectiveClass, OMPD_for_simd,<br class="">-                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">-                         NumClauses) {}<br class="">+      : OMPLoopDirective(this, OMPForSimdDirectiveClass,<br class="">+                         llvm::omp::OMPD_for_simd, SourceLocation(),<br class="">+                         SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -1411,8 +1414,9 @@ class OMPSectionsDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPSectionsDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                        unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPSectionsDirectiveClass, OMPD_sections,<br class="">-                               StartLoc, EndLoc, NumClauses, 1),<br class="">+      : OMPExecutableDirective(this, OMPSectionsDirectiveClass,<br class="">+                               llvm::omp::OMPD_sections, StartLoc, EndLoc,<br class="">+                               NumClauses, 1),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -1420,9 +1424,9 @@ class OMPSectionsDirective : public OMPExecutableDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPSectionsDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPSectionsDirectiveClass, OMPD_sections,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               1),<br class="">+      : OMPExecutableDirective(this, OMPSectionsDirectiveClass,<br class="">+                               llvm::omp::OMPD_sections, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 1),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Set cancel state.<br class="">@@ -1477,15 +1481,16 @@ class OMPSectionDirective : public OMPExecutableDirective {<br class="">   /// \param EndLoc Ending location of the directive.<br class="">   ///<br class="">   OMPSectionDirective(SourceLocation StartLoc, SourceLocation EndLoc)<br class="">-      : OMPExecutableDirective(this, OMPSectionDirectiveClass, OMPD_section,<br class="">-                               StartLoc, EndLoc, 0, 1),<br class="">+      : OMPExecutableDirective(this, OMPSectionDirectiveClass,<br class="">+                               llvm::omp::OMPD_section, StartLoc, EndLoc, 0, 1),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   explicit OMPSectionDirective()<br class="">-      : OMPExecutableDirective(this, OMPSectionDirectiveClass, OMPD_section,<br class="">-                               SourceLocation(), SourceLocation(), 0, 1),<br class="">+      : OMPExecutableDirective(this, OMPSectionDirectiveClass,<br class="">+                               llvm::omp::OMPD_section, SourceLocation(),<br class="">+                               SourceLocation(), 0, 1),<br class="">         HasCancel(false) {}<br class=""><br class=""> public:<br class="">@@ -1537,17 +1542,18 @@ class OMPSingleDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPSingleDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                      unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPSingleDirectiveClass, OMPD_single,<br class="">-                               StartLoc, EndLoc, NumClauses, 1) {}<br class="">+      : OMPExecutableDirective(this, OMPSingleDirectiveClass,<br class="">+                               llvm::omp::OMPD_single, StartLoc, EndLoc,<br class="">+                               NumClauses, 1) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPSingleDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPSingleDirectiveClass, OMPD_single,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               1) {}<br class="">+      : OMPExecutableDirective(this, OMPSingleDirectiveClass,<br class="">+                               llvm::omp::OMPD_single, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 1) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -1590,14 +1596,16 @@ class OMPMasterDirective : public OMPExecutableDirective {<br class="">   /// \param EndLoc Ending location of the directive.<br class="">   ///<br class="">   OMPMasterDirective(SourceLocation StartLoc, SourceLocation EndLoc)<br class="">-      : OMPExecutableDirective(this, OMPMasterDirectiveClass, OMPD_master,<br class="">-                               StartLoc, EndLoc, 0, 1) {}<br class="">+      : OMPExecutableDirective(this, OMPMasterDirectiveClass,<br class="">+                               llvm::omp::OMPD_master, StartLoc, EndLoc, 0, 1) {<br class="">+  }<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   explicit OMPMasterDirective()<br class="">-      : OMPExecutableDirective(this, OMPMasterDirectiveClass, OMPD_master,<br class="">-                               SourceLocation(), SourceLocation(), 0, 1) {}<br class="">+      : OMPExecutableDirective(this, OMPMasterDirectiveClass,<br class="">+                               llvm::omp::OMPD_master, SourceLocation(),<br class="">+                               SourceLocation(), 0, 1) {}<br class=""><br class=""> public:<br class="">   /// Creates directive.<br class="">@@ -1642,8 +1650,9 @@ class OMPCriticalDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPCriticalDirective(const DeclarationNameInfo &Name, SourceLocation StartLoc,<br class="">                        SourceLocation EndLoc, unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPCriticalDirectiveClass, OMPD_critical,<br class="">-                               StartLoc, EndLoc, NumClauses, 1),<br class="">+      : OMPExecutableDirective(this, OMPCriticalDirectiveClass,<br class="">+                               llvm::omp::OMPD_critical, StartLoc, EndLoc,<br class="">+                               NumClauses, 1),<br class="">         DirName(Name) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -1651,9 +1660,9 @@ class OMPCriticalDirective : public OMPExecutableDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPCriticalDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPCriticalDirectiveClass, OMPD_critical,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               1),<br class="">+      : OMPExecutableDirective(this, OMPCriticalDirectiveClass,<br class="">+                               llvm::omp::OMPD_critical, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 1),<br class="">         DirName() {}<br class=""><br class="">   /// Set name of the directive.<br class="">@@ -1718,8 +1727,9 @@ class OMPParallelForDirective : public OMPLoopDirective {<br class="">   ///<br class="">   OMPParallelForDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                           unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPParallelForDirectiveClass, OMPD_parallel_for,<br class="">-                         StartLoc, EndLoc, CollapsedNum, NumClauses),<br class="">+      : OMPLoopDirective(this, OMPParallelForDirectiveClass,<br class="">+                         llvm::omp::OMPD_parallel_for, StartLoc, EndLoc,<br class="">+                         CollapsedNum, NumClauses),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -1728,9 +1738,9 @@ class OMPParallelForDirective : public OMPLoopDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPParallelForDirective(unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPParallelForDirectiveClass, OMPD_parallel_for,<br class="">-                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">-                         NumClauses),<br class="">+      : OMPLoopDirective(this, OMPParallelForDirectiveClass,<br class="">+                         llvm::omp::OMPD_parallel_for, SourceLocation(),<br class="">+                         SourceLocation(), CollapsedNum, NumClauses),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Set cancel state.<br class="">@@ -1795,8 +1805,8 @@ class OMPParallelForSimdDirective : public OMPLoopDirective {<br class="">   OMPParallelForSimdDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                               unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPParallelForSimdDirectiveClass,<br class="">-                         OMPD_parallel_for_simd, StartLoc, EndLoc, CollapsedNum,<br class="">-                         NumClauses) {}<br class="">+                         llvm::omp::OMPD_parallel_for_simd, StartLoc, EndLoc,<br class="">+                         CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -1806,7 +1816,7 @@ class OMPParallelForSimdDirective : public OMPLoopDirective {<br class="">   explicit OMPParallelForSimdDirective(unsigned CollapsedNum,<br class="">                                        unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPParallelForSimdDirectiveClass,<br class="">-                         OMPD_parallel_for_simd, SourceLocation(),<br class="">+                         llvm::omp::OMPD_parallel_for_simd, SourceLocation(),<br class="">                          SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">@@ -1856,13 +1866,14 @@ class OMPParallelMasterDirective : public OMPExecutableDirective {<br class="">   OMPParallelMasterDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                              unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPParallelMasterDirectiveClass,<br class="">-                               OMPD_parallel_master, StartLoc, EndLoc,<br class="">-                               NumClauses, 1) {}<br class="">+                               llvm::omp::OMPD_parallel_master, StartLoc,<br class="">+                               EndLoc, NumClauses, 1) {}<br class=""><br class="">   explicit OMPParallelMasterDirective(unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPParallelMasterDirectiveClass,<br class="">-                               OMPD_parallel_master, SourceLocation(),<br class="">-                               SourceLocation(), NumClauses, 1) {}<br class="">+                               llvm::omp::OMPD_parallel_master,<br class="">+                               SourceLocation(), SourceLocation(), NumClauses,<br class="">+                               1) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -1915,8 +1926,8 @@ class OMPParallelSectionsDirective : public OMPExecutableDirective {<br class="">   OMPParallelSectionsDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                                unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPParallelSectionsDirectiveClass,<br class="">-                               OMPD_parallel_sections, StartLoc, EndLoc,<br class="">-                               NumClauses, 1),<br class="">+                               llvm::omp::OMPD_parallel_sections, StartLoc,<br class="">+                               EndLoc, NumClauses, 1),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -1925,8 +1936,9 @@ class OMPParallelSectionsDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   explicit OMPParallelSectionsDirective(unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPParallelSectionsDirectiveClass,<br class="">-                               OMPD_parallel_sections, SourceLocation(),<br class="">-                               SourceLocation(), NumClauses, 1),<br class="">+                               llvm::omp::OMPD_parallel_sections,<br class="">+                               SourceLocation(), SourceLocation(), NumClauses,<br class="">+                               1),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Set cancel state.<br class="">@@ -1984,8 +1996,9 @@ class OMPTaskDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPTaskDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                    unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPTaskDirectiveClass, OMPD_task, StartLoc,<br class="">-                               EndLoc, NumClauses, 1),<br class="">+      : OMPExecutableDirective(this, OMPTaskDirectiveClass,<br class="">+                               llvm::omp::OMPD_task, StartLoc, EndLoc,<br class="">+                               NumClauses, 1),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -1993,9 +2006,9 @@ class OMPTaskDirective : public OMPExecutableDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPTaskDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPTaskDirectiveClass, OMPD_task,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               1),<br class="">+      : OMPExecutableDirective(this, OMPTaskDirectiveClass,<br class="">+                               llvm::omp::OMPD_task, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 1),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Set cancel state.<br class="">@@ -2047,14 +2060,16 @@ class OMPTaskyieldDirective : public OMPExecutableDirective {<br class="">   /// \param EndLoc Ending location of the directive.<br class="">   ///<br class="">   OMPTaskyieldDirective(SourceLocation StartLoc, SourceLocation EndLoc)<br class="">-      : OMPExecutableDirective(this, OMPTaskyieldDirectiveClass, OMPD_taskyield,<br class="">-                               StartLoc, EndLoc, 0, 0) {}<br class="">+      : OMPExecutableDirective(this, OMPTaskyieldDirectiveClass,<br class="">+                               llvm::omp::OMPD_taskyield, StartLoc, EndLoc, 0,<br class="">+                               0) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   explicit OMPTaskyieldDirective()<br class="">-      : OMPExecutableDirective(this, OMPTaskyieldDirectiveClass, OMPD_taskyield,<br class="">-                               SourceLocation(), SourceLocation(), 0, 0) {}<br class="">+      : OMPExecutableDirective(this, OMPTaskyieldDirectiveClass,<br class="">+                               llvm::omp::OMPD_taskyield, SourceLocation(),<br class="">+                               SourceLocation(), 0, 0) {}<br class=""><br class=""> public:<br class="">   /// Creates directive.<br class="">@@ -2091,14 +2106,16 @@ class OMPBarrierDirective : public OMPExecutableDirective {<br class="">   /// \param EndLoc Ending location of the directive.<br class="">   ///<br class="">   OMPBarrierDirective(SourceLocation StartLoc, SourceLocation EndLoc)<br class="">-      : OMPExecutableDirective(this, OMPBarrierDirectiveClass, OMPD_barrier,<br class="">-                               StartLoc, EndLoc, 0, 0) {}<br class="">+      : OMPExecutableDirective(this, OMPBarrierDirectiveClass,<br class="">+                               llvm::omp::OMPD_barrier, StartLoc, EndLoc, 0,<br class="">+                               0) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   explicit OMPBarrierDirective()<br class="">-      : OMPExecutableDirective(this, OMPBarrierDirectiveClass, OMPD_barrier,<br class="">-                               SourceLocation(), SourceLocation(), 0, 0) {}<br class="">+      : OMPExecutableDirective(this, OMPBarrierDirectiveClass,<br class="">+                               llvm::omp::OMPD_barrier, SourceLocation(),<br class="">+                               SourceLocation(), 0, 0) {}<br class=""><br class=""> public:<br class="">   /// Creates directive.<br class="">@@ -2135,14 +2152,16 @@ class OMPTaskwaitDirective : public OMPExecutableDirective {<br class="">   /// \param EndLoc Ending location of the directive.<br class="">   ///<br class="">   OMPTaskwaitDirective(SourceLocation StartLoc, SourceLocation EndLoc)<br class="">-      : OMPExecutableDirective(this, OMPTaskwaitDirectiveClass, OMPD_taskwait,<br class="">-                               StartLoc, EndLoc, 0, 0) {}<br class="">+      : OMPExecutableDirective(this, OMPTaskwaitDirectiveClass,<br class="">+                               llvm::omp::OMPD_taskwait, StartLoc, EndLoc, 0,<br class="">+                               0) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   explicit OMPTaskwaitDirective()<br class="">-      : OMPExecutableDirective(this, OMPTaskwaitDirectiveClass, OMPD_taskwait,<br class="">-                               SourceLocation(), SourceLocation(), 0, 0) {}<br class="">+      : OMPExecutableDirective(this, OMPTaskwaitDirectiveClass,<br class="">+                               llvm::omp::OMPD_taskwait, SourceLocation(),<br class="">+                               SourceLocation(), 0, 0) {}<br class=""><br class=""> public:<br class="">   /// Creates directive.<br class="">@@ -2181,16 +2200,17 @@ class OMPTaskgroupDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPTaskgroupDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                         unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPTaskgroupDirectiveClass, OMPD_taskgroup,<br class="">-                               StartLoc, EndLoc, NumClauses, 2) {}<br class="">+      : OMPExecutableDirective(this, OMPTaskgroupDirectiveClass,<br class="">+                               llvm::omp::OMPD_taskgroup, StartLoc, EndLoc,<br class="">+                               NumClauses, 2) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPTaskgroupDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPTaskgroupDirectiveClass, OMPD_taskgroup,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               2) {}<br class="">+      : OMPExecutableDirective(this, OMPTaskgroupDirectiveClass,<br class="">+                               llvm::omp::OMPD_taskgroup, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 2) {}<br class=""><br class="">   /// Sets the task_reduction return variable.<br class="">   void setReductionRef(Expr *RR) {<br class="">@@ -2254,17 +2274,18 @@ class OMPFlushDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPFlushDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                     unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPFlushDirectiveClass, OMPD_flush,<br class="">-                               StartLoc, EndLoc, NumClauses, 0) {}<br class="">+      : OMPExecutableDirective(this, OMPFlushDirectiveClass,<br class="">+                               llvm::omp::OMPD_flush, StartLoc, EndLoc,<br class="">+                               NumClauses, 0) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPFlushDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPFlushDirectiveClass, OMPD_flush,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               0) {}<br class="">+      : OMPExecutableDirective(this, OMPFlushDirectiveClass,<br class="">+                               llvm::omp::OMPD_flush, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 0) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -2309,17 +2330,18 @@ class OMPOrderedDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPOrderedDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                       unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPOrderedDirectiveClass, OMPD_ordered,<br class="">-                               StartLoc, EndLoc, NumClauses, 1) {}<br class="">+      : OMPExecutableDirective(this, OMPOrderedDirectiveClass,<br class="">+                               llvm::omp::OMPD_ordered, StartLoc, EndLoc,<br class="">+                               NumClauses, 1) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPOrderedDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPOrderedDirectiveClass, OMPD_ordered,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               1) {}<br class="">+      : OMPExecutableDirective(this, OMPOrderedDirectiveClass,<br class="">+                               llvm::omp::OMPD_ordered, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 1) {}<br class=""><br class=""> public:<br class="">   /// Creates directive.<br class="">@@ -2384,8 +2406,9 @@ class OMPAtomicDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPAtomicDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                      unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPAtomicDirectiveClass, OMPD_atomic,<br class="">-                               StartLoc, EndLoc, NumClauses, 5),<br class="">+      : OMPExecutableDirective(this, OMPAtomicDirectiveClass,<br class="">+                               llvm::omp::OMPD_atomic, StartLoc, EndLoc,<br class="">+                               NumClauses, 5),<br class="">         IsXLHSInRHSPart(false), IsPostfixUpdate(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -2393,9 +2416,9 @@ class OMPAtomicDirective : public OMPExecutableDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPAtomicDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPAtomicDirectiveClass, OMPD_atomic,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               5),<br class="">+      : OMPExecutableDirective(this, OMPAtomicDirectiveClass,<br class="">+                               llvm::omp::OMPD_atomic, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 5),<br class="">         IsXLHSInRHSPart(false), IsPostfixUpdate(false) {}<br class=""><br class="">   /// Set 'x' part of the associated expression/statement.<br class="">@@ -2498,17 +2521,18 @@ class OMPTargetDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPTargetDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                      unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPTargetDirectiveClass, OMPD_target,<br class="">-                               StartLoc, EndLoc, NumClauses, 1) {}<br class="">+      : OMPExecutableDirective(this, OMPTargetDirectiveClass,<br class="">+                               llvm::omp::OMPD_target, StartLoc, EndLoc,<br class="">+                               NumClauses, 1) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPTargetDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPTargetDirectiveClass, OMPD_target,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               1) {}<br class="">+      : OMPExecutableDirective(this, OMPTargetDirectiveClass,<br class="">+                               llvm::omp::OMPD_target, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 1) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -2557,8 +2581,8 @@ class OMPTargetDataDirective : public OMPExecutableDirective {<br class="">   OMPTargetDataDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                          unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetDataDirectiveClass,<br class="">-                               OMPD_target_data, StartLoc, EndLoc, NumClauses,<br class="">-                               1) {}<br class="">+                               llvm::omp::OMPD_target_data, StartLoc, EndLoc,<br class="">+                               NumClauses, 1) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -2566,7 +2590,7 @@ class OMPTargetDataDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   explicit OMPTargetDataDirective(unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetDataDirectiveClass,<br class="">-                               OMPD_target_data, SourceLocation(),<br class="">+                               llvm::omp::OMPD_target_data, SourceLocation(),<br class="">                                SourceLocation(), NumClauses, 1) {}<br class=""><br class=""> public:<br class="">@@ -2615,8 +2639,8 @@ class OMPTargetEnterDataDirective : public OMPExecutableDirective {<br class="">   OMPTargetEnterDataDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                               unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetEnterDataDirectiveClass,<br class="">-                               OMPD_target_enter_data, StartLoc, EndLoc,<br class="">-                               NumClauses, /*NumChildren=*/1) {}<br class="">+                               llvm::omp::OMPD_target_enter_data, StartLoc,<br class="">+                               EndLoc, NumClauses, /*NumChildren=*/1) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -2624,8 +2648,8 @@ class OMPTargetEnterDataDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   explicit OMPTargetEnterDataDirective(unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetEnterDataDirectiveClass,<br class="">-                               OMPD_target_enter_data, SourceLocation(),<br class="">-                               SourceLocation(), NumClauses,<br class="">+                               llvm::omp::OMPD_target_enter_data,<br class="">+                               SourceLocation(), SourceLocation(), NumClauses,<br class="">                                /*NumChildren=*/1) {}<br class=""><br class=""> public:<br class="">@@ -2674,8 +2698,8 @@ class OMPTargetExitDataDirective : public OMPExecutableDirective {<br class="">   OMPTargetExitDataDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                              unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetExitDataDirectiveClass,<br class="">-                               OMPD_target_exit_data, StartLoc, EndLoc,<br class="">-                               NumClauses, /*NumChildren=*/1) {}<br class="">+                               llvm::omp::OMPD_target_exit_data, StartLoc,<br class="">+                               EndLoc, NumClauses, /*NumChildren=*/1) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -2683,8 +2707,8 @@ class OMPTargetExitDataDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   explicit OMPTargetExitDataDirective(unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetExitDataDirectiveClass,<br class="">-                               OMPD_target_exit_data, SourceLocation(),<br class="">-                               SourceLocation(), NumClauses,<br class="">+                               llvm::omp::OMPD_target_exit_data,<br class="">+                               SourceLocation(), SourceLocation(), NumClauses,<br class="">                                /*NumChildren=*/1) {}<br class=""><br class=""> public:<br class="">@@ -2732,8 +2756,8 @@ class OMPTargetParallelDirective : public OMPExecutableDirective {<br class="">   OMPTargetParallelDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                              unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetParallelDirectiveClass,<br class="">-                               OMPD_target_parallel, StartLoc, EndLoc,<br class="">-                               NumClauses, /*NumChildren=*/1) {}<br class="">+                               llvm::omp::OMPD_target_parallel, StartLoc,<br class="">+                               EndLoc, NumClauses, /*NumChildren=*/1) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -2741,8 +2765,8 @@ class OMPTargetParallelDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   explicit OMPTargetParallelDirective(unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetParallelDirectiveClass,<br class="">-                               OMPD_target_parallel, SourceLocation(),<br class="">-                               SourceLocation(), NumClauses,<br class="">+                               llvm::omp::OMPD_target_parallel,<br class="">+                               SourceLocation(), SourceLocation(), NumClauses,<br class="">                                /*NumChildren=*/1) {}<br class=""><br class=""> public:<br class="">@@ -2797,7 +2821,7 @@ class OMPTargetParallelForDirective : public OMPLoopDirective {<br class="">   OMPTargetParallelForDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                                 unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTargetParallelForDirectiveClass,<br class="">-                         OMPD_target_parallel_for, StartLoc, EndLoc,<br class="">+                         llvm::omp::OMPD_target_parallel_for, StartLoc, EndLoc,<br class="">                          CollapsedNum, NumClauses),<br class="">         HasCancel(false) {}<br class=""><br class="">@@ -2809,7 +2833,7 @@ class OMPTargetParallelForDirective : public OMPLoopDirective {<br class="">   explicit OMPTargetParallelForDirective(unsigned CollapsedNum,<br class="">                                          unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTargetParallelForDirectiveClass,<br class="">-                         OMPD_target_parallel_for, SourceLocation(),<br class="">+                         llvm::omp::OMPD_target_parallel_for, SourceLocation(),<br class="">                          SourceLocation(), CollapsedNum, NumClauses),<br class="">         HasCancel(false) {}<br class=""><br class="">@@ -2871,17 +2895,18 @@ class OMPTeamsDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPTeamsDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                     unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPTeamsDirectiveClass, OMPD_teams,<br class="">-                               StartLoc, EndLoc, NumClauses, 1) {}<br class="">+      : OMPExecutableDirective(this, OMPTeamsDirectiveClass,<br class="">+                               llvm::omp::OMPD_teams, StartLoc, EndLoc,<br class="">+                               NumClauses, 1) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPTeamsDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPTeamsDirectiveClass, OMPD_teams,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               1) {}<br class="">+      : OMPExecutableDirective(this, OMPTeamsDirectiveClass,<br class="">+                               llvm::omp::OMPD_teams, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 1) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -2928,16 +2953,17 @@ class OMPCancellationPointDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPCancellationPointDirective(SourceLocation StartLoc, SourceLocation EndLoc)<br class="">       : OMPExecutableDirective(this, OMPCancellationPointDirectiveClass,<br class="">-                               OMPD_cancellation_point, StartLoc, EndLoc, 0, 0),<br class="">-        CancelRegion(OMPD_unknown) {}<br class="">+                               llvm::omp::OMPD_cancellation_point, StartLoc,<br class="">+                               EndLoc, 0, 0),<br class="">+        CancelRegion(llvm::omp::OMPD_unknown) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   explicit OMPCancellationPointDirective()<br class="">       : OMPExecutableDirective(this, OMPCancellationPointDirectiveClass,<br class="">-                               OMPD_cancellation_point, SourceLocation(),<br class="">-                               SourceLocation(), 0, 0),<br class="">-        CancelRegion(OMPD_unknown) {}<br class="">+                               llvm::omp::OMPD_cancellation_point,<br class="">+                               SourceLocation(), SourceLocation(), 0, 0),<br class="">+        CancelRegion(llvm::omp::OMPD_unknown) {}<br class=""><br class="">   /// Set cancel region for current cancellation point.<br class="">   /// \param CR Cancellation region.<br class="">@@ -2987,18 +3013,19 @@ class OMPCancelDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   OMPCancelDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                      unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPCancelDirectiveClass, OMPD_cancel,<br class="">-                               StartLoc, EndLoc, NumClauses, 0),<br class="">-        CancelRegion(OMPD_unknown) {}<br class="">+      : OMPExecutableDirective(this, OMPCancelDirectiveClass,<br class="">+                               llvm::omp::OMPD_cancel, StartLoc, EndLoc,<br class="">+                               NumClauses, 0),<br class="">+        CancelRegion(llvm::omp::OMPD_unknown) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">   /// \param NumClauses Number of clauses.<br class="">   explicit OMPCancelDirective(unsigned NumClauses)<br class="">-      : OMPExecutableDirective(this, OMPCancelDirectiveClass, OMPD_cancel,<br class="">-                               SourceLocation(), SourceLocation(), NumClauses,<br class="">-                               0),<br class="">-        CancelRegion(OMPD_unknown) {}<br class="">+      : OMPExecutableDirective(this, OMPCancelDirectiveClass,<br class="">+                               llvm::omp::OMPD_cancel, SourceLocation(),<br class="">+                               SourceLocation(), NumClauses, 0),<br class="">+        CancelRegion(llvm::omp::OMPD_unknown) {}<br class=""><br class="">   /// Set cancel region for current cancellation point.<br class="">   /// \param CR Cancellation region.<br class="">@@ -3052,8 +3079,9 @@ class OMPTaskLoopDirective : public OMPLoopDirective {<br class="">   ///<br class="">   OMPTaskLoopDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                        unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPTaskLoopDirectiveClass, OMPD_taskloop,<br class="">-                         StartLoc, EndLoc, CollapsedNum, NumClauses) {}<br class="">+      : OMPLoopDirective(this, OMPTaskLoopDirectiveClass,<br class="">+                         llvm::omp::OMPD_taskloop, StartLoc, EndLoc,<br class="">+                         CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3061,9 +3089,9 @@ class OMPTaskLoopDirective : public OMPLoopDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPTaskLoopDirective(unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPTaskLoopDirectiveClass, OMPD_taskloop,<br class="">-                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">-                         NumClauses) {}<br class="">+      : OMPLoopDirective(this, OMPTaskLoopDirectiveClass,<br class="">+                         llvm::omp::OMPD_taskloop, SourceLocation(),<br class="">+                         SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -3118,8 +3146,8 @@ class OMPTaskLoopSimdDirective : public OMPLoopDirective {<br class="">   OMPTaskLoopSimdDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                            unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTaskLoopSimdDirectiveClass,<br class="">-                         OMPD_taskloop_simd, StartLoc, EndLoc, CollapsedNum,<br class="">-                         NumClauses) {}<br class="">+                         llvm::omp::OMPD_taskloop_simd, StartLoc, EndLoc,<br class="">+                         CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3128,8 +3156,8 @@ class OMPTaskLoopSimdDirective : public OMPLoopDirective {<br class="">   ///<br class="">   explicit OMPTaskLoopSimdDirective(unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTaskLoopSimdDirectiveClass,<br class="">-                         OMPD_taskloop_simd, SourceLocation(), SourceLocation(),<br class="">-                         CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_taskloop_simd, SourceLocation(),<br class="">+                         SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -3185,8 +3213,8 @@ class OMPMasterTaskLoopDirective : public OMPLoopDirective {<br class="">   OMPMasterTaskLoopDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                              unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPMasterTaskLoopDirectiveClass,<br class="">-                         OMPD_master_taskloop, StartLoc, EndLoc, CollapsedNum,<br class="">-                         NumClauses) {}<br class="">+                         llvm::omp::OMPD_master_taskloop, StartLoc, EndLoc,<br class="">+                         CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3196,7 +3224,7 @@ class OMPMasterTaskLoopDirective : public OMPLoopDirective {<br class="">   explicit OMPMasterTaskLoopDirective(unsigned CollapsedNum,<br class="">                                       unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPMasterTaskLoopDirectiveClass,<br class="">-                         OMPD_master_taskloop, SourceLocation(),<br class="">+                         llvm::omp::OMPD_master_taskloop, SourceLocation(),<br class="">                          SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">@@ -3253,7 +3281,7 @@ class OMPMasterTaskLoopSimdDirective : public OMPLoopDirective {<br class="">   OMPMasterTaskLoopSimdDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                                  unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPMasterTaskLoopSimdDirectiveClass,<br class="">-                         OMPD_master_taskloop_simd, StartLoc, EndLoc,<br class="">+                         llvm::omp::OMPD_master_taskloop_simd, StartLoc, EndLoc,<br class="">                          CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -3264,7 +3292,7 @@ class OMPMasterTaskLoopSimdDirective : public OMPLoopDirective {<br class="">   explicit OMPMasterTaskLoopSimdDirective(unsigned CollapsedNum,<br class="">                                           unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPMasterTaskLoopSimdDirectiveClass,<br class="">-                         OMPD_master_taskloop_simd, SourceLocation(),<br class="">+                         llvm::omp::OMPD_master_taskloop_simd, SourceLocation(),<br class="">                          SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">@@ -3322,8 +3350,8 @@ class OMPParallelMasterTaskLoopDirective : public OMPLoopDirective {<br class="">                                      SourceLocation EndLoc,<br class="">                                      unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPParallelMasterTaskLoopDirectiveClass,<br class="">-                         OMPD_parallel_master_taskloop, StartLoc, EndLoc,<br class="">-                         CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_parallel_master_taskloop, StartLoc,<br class="">+                         EndLoc, CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3333,8 +3361,9 @@ class OMPParallelMasterTaskLoopDirective : public OMPLoopDirective {<br class="">   explicit OMPParallelMasterTaskLoopDirective(unsigned CollapsedNum,<br class="">                                               unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPParallelMasterTaskLoopDirectiveClass,<br class="">-                         OMPD_parallel_master_taskloop, SourceLocation(),<br class="">-                         SourceLocation(), CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_parallel_master_taskloop,<br class="">+                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">+                         NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -3393,8 +3422,8 @@ class OMPParallelMasterTaskLoopSimdDirective : public OMPLoopDirective {<br class="">                                          unsigned CollapsedNum,<br class="">                                          unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPParallelMasterTaskLoopSimdDirectiveClass,<br class="">-                         OMPD_parallel_master_taskloop_simd, StartLoc, EndLoc,<br class="">-                         CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_parallel_master_taskloop_simd,<br class="">+                         StartLoc, EndLoc, CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3404,8 +3433,9 @@ class OMPParallelMasterTaskLoopSimdDirective : public OMPLoopDirective {<br class="">   explicit OMPParallelMasterTaskLoopSimdDirective(unsigned CollapsedNum,<br class="">                                                   unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPParallelMasterTaskLoopSimdDirectiveClass,<br class="">-                         OMPD_parallel_master_taskloop_simd, SourceLocation(),<br class="">-                         SourceLocation(), CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_parallel_master_taskloop_simd,<br class="">+                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">+                         NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \p Clauses.<br class="">@@ -3459,9 +3489,9 @@ class OMPDistributeDirective : public OMPLoopDirective {<br class="">   ///<br class="">   OMPDistributeDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                          unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPDistributeDirectiveClass, OMPD_distribute,<br class="">-                         StartLoc, EndLoc, CollapsedNum, NumClauses)<br class="">-        {}<br class="">+      : OMPLoopDirective(this, OMPDistributeDirectiveClass,<br class="">+                         llvm::omp::OMPD_distribute, StartLoc, EndLoc,<br class="">+                         CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3469,10 +3499,9 @@ class OMPDistributeDirective : public OMPLoopDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPDistributeDirective(unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPDistributeDirectiveClass, OMPD_distribute,<br class="">-                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">-                         NumClauses)<br class="">-        {}<br class="">+      : OMPLoopDirective(this, OMPDistributeDirectiveClass,<br class="">+                         llvm::omp::OMPD_distribute, SourceLocation(),<br class="">+                         SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -3526,8 +3555,8 @@ class OMPTargetUpdateDirective : public OMPExecutableDirective {<br class="">   OMPTargetUpdateDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                            unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetUpdateDirectiveClass,<br class="">-                               OMPD_target_update, StartLoc, EndLoc, NumClauses,<br class="">-                               1) {}<br class="">+                               llvm::omp::OMPD_target_update, StartLoc, EndLoc,<br class="">+                               NumClauses, 1) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3535,7 +3564,7 @@ class OMPTargetUpdateDirective : public OMPExecutableDirective {<br class="">   ///<br class="">   explicit OMPTargetUpdateDirective(unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetUpdateDirectiveClass,<br class="">-                               OMPD_target_update, SourceLocation(),<br class="">+                               llvm::omp::OMPD_target_update, SourceLocation(),<br class="">                                SourceLocation(), NumClauses, 1) {}<br class=""><br class=""> public:<br class="">@@ -3590,8 +3619,9 @@ class OMPDistributeParallelForDirective : public OMPLoopDirective {<br class="">                                     SourceLocation EndLoc,<br class="">                                     unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPDistributeParallelForDirectiveClass,<br class="">-                         OMPD_distribute_parallel_for, StartLoc, EndLoc,<br class="">-                         CollapsedNum, NumClauses), HasCancel(false) {}<br class="">+                         llvm::omp::OMPD_distribute_parallel_for, StartLoc,<br class="">+                         EndLoc, CollapsedNum, NumClauses),<br class="">+        HasCancel(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3601,8 +3631,9 @@ class OMPDistributeParallelForDirective : public OMPLoopDirective {<br class="">   explicit OMPDistributeParallelForDirective(unsigned CollapsedNum,<br class="">                                              unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPDistributeParallelForDirectiveClass,<br class="">-                         OMPD_distribute_parallel_for, SourceLocation(),<br class="">-                         SourceLocation(), CollapsedNum, NumClauses),<br class="">+                         llvm::omp::OMPD_distribute_parallel_for,<br class="">+                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">+                         NumClauses),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Set cancel state.<br class="">@@ -3669,7 +3700,7 @@ class OMPDistributeParallelForSimdDirective final : public OMPLoopDirective {<br class="">                                         unsigned CollapsedNum,<br class="">                                         unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPDistributeParallelForSimdDirectiveClass,<br class="">-                         OMPD_distribute_parallel_for_simd, StartLoc,<br class="">+                         llvm::omp::OMPD_distribute_parallel_for_simd, StartLoc,<br class="">                          EndLoc, CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -3680,7 +3711,7 @@ class OMPDistributeParallelForSimdDirective final : public OMPLoopDirective {<br class="">   explicit OMPDistributeParallelForSimdDirective(unsigned CollapsedNum,<br class="">                                                  unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPDistributeParallelForSimdDirectiveClass,<br class="">-                         OMPD_distribute_parallel_for_simd,<br class="">+                         llvm::omp::OMPD_distribute_parallel_for_simd,<br class="">                          SourceLocation(), SourceLocation(), CollapsedNum,<br class="">                          NumClauses) {}<br class=""><br class="">@@ -3736,8 +3767,8 @@ class OMPDistributeSimdDirective final : public OMPLoopDirective {<br class="">   OMPDistributeSimdDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                              unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPDistributeSimdDirectiveClass,<br class="">-                         OMPD_distribute_simd, StartLoc, EndLoc, CollapsedNum,<br class="">-                         NumClauses) {}<br class="">+                         llvm::omp::OMPD_distribute_simd, StartLoc, EndLoc,<br class="">+                         CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3747,7 +3778,7 @@ class OMPDistributeSimdDirective final : public OMPLoopDirective {<br class="">   explicit OMPDistributeSimdDirective(unsigned CollapsedNum,<br class="">                                       unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPDistributeSimdDirectiveClass,<br class="">-                         OMPD_distribute_simd, SourceLocation(),<br class="">+                         llvm::omp::OMPD_distribute_simd, SourceLocation(),<br class="">                          SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">@@ -3801,11 +3832,12 @@ class OMPTargetParallelForSimdDirective final : public OMPLoopDirective {<br class="">   /// \param CollapsedNum Number of collapsed nested loops.<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">-  OMPTargetParallelForSimdDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">-                                unsigned CollapsedNum, unsigned NumClauses)<br class="">+  OMPTargetParallelForSimdDirective(SourceLocation StartLoc,<br class="">+                                    SourceLocation EndLoc,<br class="">+                                    unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTargetParallelForSimdDirectiveClass,<br class="">-                         OMPD_target_parallel_for_simd, StartLoc, EndLoc,<br class="">-                         CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_target_parallel_for_simd, StartLoc,<br class="">+                         EndLoc, CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3815,8 +3847,9 @@ class OMPTargetParallelForSimdDirective final : public OMPLoopDirective {<br class="">   explicit OMPTargetParallelForSimdDirective(unsigned CollapsedNum,<br class="">                                              unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTargetParallelForSimdDirectiveClass,<br class="">-                         OMPD_target_parallel_for_simd, SourceLocation(),<br class="">-                         SourceLocation(), CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_target_parallel_for_simd,<br class="">+                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">+                         NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -3872,8 +3905,8 @@ class OMPTargetSimdDirective final : public OMPLoopDirective {<br class="">   OMPTargetSimdDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                          unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTargetSimdDirectiveClass,<br class="">-                         OMPD_target_simd, StartLoc, EndLoc, CollapsedNum,<br class="">-                         NumClauses) {}<br class="">+                         llvm::omp::OMPD_target_simd, StartLoc, EndLoc,<br class="">+                         CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -3881,9 +3914,9 @@ class OMPTargetSimdDirective final : public OMPLoopDirective {<br class="">   /// \param NumClauses Number of clauses.<br class="">   ///<br class="">   explicit OMPTargetSimdDirective(unsigned CollapsedNum, unsigned NumClauses)<br class="">-      : OMPLoopDirective(this, OMPTargetSimdDirectiveClass, OMPD_target_simd,<br class="">-                         SourceLocation(),SourceLocation(), CollapsedNum,<br class="">-                         NumClauses) {}<br class="">+      : OMPLoopDirective(this, OMPTargetSimdDirectiveClass,<br class="">+                         llvm::omp::OMPD_target_simd, SourceLocation(),<br class="">+                         SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -3938,7 +3971,7 @@ class OMPTeamsDistributeDirective final : public OMPLoopDirective {<br class="">   OMPTeamsDistributeDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                               unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTeamsDistributeDirectiveClass,<br class="">-                         OMPD_teams_distribute, StartLoc, EndLoc,<br class="">+                         llvm::omp::OMPD_teams_distribute, StartLoc, EndLoc,<br class="">                          CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -3949,7 +3982,7 @@ class OMPTeamsDistributeDirective final : public OMPLoopDirective {<br class="">   explicit OMPTeamsDistributeDirective(unsigned CollapsedNum,<br class="">                                        unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTeamsDistributeDirectiveClass,<br class="">-                         OMPD_teams_distribute, SourceLocation(),<br class="">+                         llvm::omp::OMPD_teams_distribute, SourceLocation(),<br class="">                          SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">@@ -4007,8 +4040,8 @@ class OMPTeamsDistributeSimdDirective final : public OMPLoopDirective {<br class="">                                   SourceLocation EndLoc, unsigned CollapsedNum,<br class="">                                   unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTeamsDistributeSimdDirectiveClass,<br class="">-                         OMPD_teams_distribute_simd, StartLoc, EndLoc,<br class="">-                         CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_teams_distribute_simd, StartLoc,<br class="">+                         EndLoc, CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -4018,8 +4051,9 @@ class OMPTeamsDistributeSimdDirective final : public OMPLoopDirective {<br class="">   explicit OMPTeamsDistributeSimdDirective(unsigned CollapsedNum,<br class="">                                            unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTeamsDistributeSimdDirectiveClass,<br class="">-                         OMPD_teams_distribute_simd, SourceLocation(),<br class="">-                         SourceLocation(), CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_teams_distribute_simd,<br class="">+                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">+                         NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -4079,8 +4113,8 @@ class OMPTeamsDistributeParallelForSimdDirective final<br class="">                                              unsigned CollapsedNum,<br class="">                                              unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTeamsDistributeParallelForSimdDirectiveClass,<br class="">-                         OMPD_teams_distribute_parallel_for_simd, StartLoc,<br class="">-                         EndLoc, CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_teams_distribute_parallel_for_simd,<br class="">+                         StartLoc, EndLoc, CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -4090,7 +4124,7 @@ class OMPTeamsDistributeParallelForSimdDirective final<br class="">   explicit OMPTeamsDistributeParallelForSimdDirective(unsigned CollapsedNum,<br class="">                                                       unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTeamsDistributeParallelForSimdDirectiveClass,<br class="">-                         OMPD_teams_distribute_parallel_for_simd,<br class="">+                         llvm::omp::OMPD_teams_distribute_parallel_for_simd,<br class="">                          SourceLocation(), SourceLocation(), CollapsedNum,<br class="">                          NumClauses) {}<br class=""><br class="">@@ -4151,8 +4185,9 @@ class OMPTeamsDistributeParallelForDirective final : public OMPLoopDirective {<br class="">                                          unsigned CollapsedNum,<br class="">                                          unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTeamsDistributeParallelForDirectiveClass,<br class="">-                         OMPD_teams_distribute_parallel_for, StartLoc, EndLoc,<br class="">-                         CollapsedNum, NumClauses), HasCancel(false) {}<br class="">+                         llvm::omp::OMPD_teams_distribute_parallel_for,<br class="">+                         StartLoc, EndLoc, CollapsedNum, NumClauses),<br class="">+        HasCancel(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -4162,8 +4197,9 @@ class OMPTeamsDistributeParallelForDirective final : public OMPLoopDirective {<br class="">   explicit OMPTeamsDistributeParallelForDirective(unsigned CollapsedNum,<br class="">                                                   unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTeamsDistributeParallelForDirectiveClass,<br class="">-                         OMPD_teams_distribute_parallel_for, SourceLocation(),<br class="">-                         SourceLocation(), CollapsedNum, NumClauses),<br class="">+                         llvm::omp::OMPD_teams_distribute_parallel_for,<br class="">+                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">+                         NumClauses),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Set cancel state.<br class="">@@ -4223,8 +4259,8 @@ class OMPTargetTeamsDirective final : public OMPExecutableDirective {<br class="">   OMPTargetTeamsDirective(SourceLocation StartLoc, SourceLocation EndLoc,<br class="">                           unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetTeamsDirectiveClass,<br class="">-                               OMPD_target_teams, StartLoc, EndLoc, NumClauses,<br class="">-                               1) {}<br class="">+                               llvm::omp::OMPD_target_teams, StartLoc, EndLoc,<br class="">+                               NumClauses, 1) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -4232,7 +4268,7 @@ class OMPTargetTeamsDirective final : public OMPExecutableDirective {<br class="">   ///<br class="">   explicit OMPTargetTeamsDirective(unsigned NumClauses)<br class="">       : OMPExecutableDirective(this, OMPTargetTeamsDirectiveClass,<br class="">-                               OMPD_target_teams, SourceLocation(),<br class="">+                               llvm::omp::OMPD_target_teams, SourceLocation(),<br class="">                                SourceLocation(), NumClauses, 1) {}<br class=""><br class=""> public:<br class="">@@ -4285,8 +4321,8 @@ class OMPTargetTeamsDistributeDirective final : public OMPLoopDirective {<br class="">                                     SourceLocation EndLoc,<br class="">                                     unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTargetTeamsDistributeDirectiveClass,<br class="">-                         OMPD_target_teams_distribute, StartLoc, EndLoc,<br class="">-                         CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_target_teams_distribute, StartLoc,<br class="">+                         EndLoc, CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -4296,8 +4332,9 @@ class OMPTargetTeamsDistributeDirective final : public OMPLoopDirective {<br class="">   explicit OMPTargetTeamsDistributeDirective(unsigned CollapsedNum,<br class="">                                              unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTargetTeamsDistributeDirectiveClass,<br class="">-                         OMPD_target_teams_distribute, SourceLocation(),<br class="">-                         SourceLocation(), CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_target_teams_distribute,<br class="">+                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">+                         NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -4358,8 +4395,8 @@ class OMPTargetTeamsDistributeParallelForDirective final<br class="">                                                unsigned NumClauses)<br class="">       : OMPLoopDirective(this,<br class="">                          OMPTargetTeamsDistributeParallelForDirectiveClass,<br class="">-                         OMPD_target_teams_distribute_parallel_for, StartLoc,<br class="">-                         EndLoc, CollapsedNum, NumClauses),<br class="">+                         llvm::omp::OMPD_target_teams_distribute_parallel_for,<br class="">+                         StartLoc, EndLoc, CollapsedNum, NumClauses),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Build an empty directive.<br class="">@@ -4371,8 +4408,8 @@ class OMPTargetTeamsDistributeParallelForDirective final<br class="">                                                         unsigned NumClauses)<br class="">       : OMPLoopDirective(<br class="">             this, OMPTargetTeamsDistributeParallelForDirectiveClass,<br class="">-            OMPD_target_teams_distribute_parallel_for, SourceLocation(),<br class="">-            SourceLocation(), CollapsedNum, NumClauses),<br class="">+            llvm::omp::OMPD_target_teams_distribute_parallel_for,<br class="">+            SourceLocation(), SourceLocation(), CollapsedNum, NumClauses),<br class="">         HasCancel(false) {}<br class=""><br class="">   /// Set cancel state.<br class="">@@ -4438,10 +4475,10 @@ class OMPTargetTeamsDistributeParallelForSimdDirective final<br class="">                                                    SourceLocation EndLoc,<br class="">                                                    unsigned CollapsedNum,<br class="">                                                    unsigned NumClauses)<br class="">-      : OMPLoopDirective(this,<br class="">-                         OMPTargetTeamsDistributeParallelForSimdDirectiveClass,<br class="">-                         OMPD_target_teams_distribute_parallel_for_simd,<br class="">-                         StartLoc, EndLoc, CollapsedNum, NumClauses) {}<br class="">+      : OMPLoopDirective(<br class="">+            this, OMPTargetTeamsDistributeParallelForSimdDirectiveClass,<br class="">+            llvm::omp::OMPD_target_teams_distribute_parallel_for_simd, StartLoc,<br class="">+            EndLoc, CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -4452,8 +4489,8 @@ class OMPTargetTeamsDistributeParallelForSimdDirective final<br class="">       unsigned CollapsedNum, unsigned NumClauses)<br class="">       : OMPLoopDirective(<br class="">             this, OMPTargetTeamsDistributeParallelForSimdDirectiveClass,<br class="">-            OMPD_target_teams_distribute_parallel_for_simd, SourceLocation(),<br class="">-            SourceLocation(), CollapsedNum, NumClauses) {}<br class="">+            llvm::omp::OMPD_target_teams_distribute_parallel_for_simd,<br class="">+            SourceLocation(), SourceLocation(), CollapsedNum, NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class="">@@ -4511,8 +4548,8 @@ class OMPTargetTeamsDistributeSimdDirective final : public OMPLoopDirective {<br class="">                                         unsigned CollapsedNum,<br class="">                                         unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTargetTeamsDistributeSimdDirectiveClass,<br class="">-                         OMPD_target_teams_distribute_simd, StartLoc, EndLoc,<br class="">-                         CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_target_teams_distribute_simd, StartLoc,<br class="">+                         EndLoc, CollapsedNum, NumClauses) {}<br class=""><br class="">   /// Build an empty directive.<br class="">   ///<br class="">@@ -4522,8 +4559,9 @@ class OMPTargetTeamsDistributeSimdDirective final : public OMPLoopDirective {<br class="">   explicit OMPTargetTeamsDistributeSimdDirective(unsigned CollapsedNum,<br class="">                                                  unsigned NumClauses)<br class="">       : OMPLoopDirective(this, OMPTargetTeamsDistributeSimdDirectiveClass,<br class="">-                         OMPD_target_teams_distribute_simd, SourceLocation(),<br class="">-                         SourceLocation(), CollapsedNum, NumClauses) {}<br class="">+                         llvm::omp::OMPD_target_teams_distribute_simd,<br class="">+                         SourceLocation(), SourceLocation(), CollapsedNum,<br class="">+                         NumClauses) {}<br class=""><br class=""> public:<br class="">   /// Creates directive with a list of \a Clauses.<br class=""><br class="">diff  --git a/clang/include/clang/Basic/OpenMPKinds.def b/clang/include/clang/Basic/OpenMPKinds.def<br class="">index 6ab35cafc7ed..7333d94e2cfc 100644<br class="">--- a/clang/include/clang/Basic/OpenMPKinds.def<br class="">+++ b/clang/include/clang/Basic/OpenMPKinds.def<br class="">@@ -11,12 +11,6 @@<br class=""> ///<br class=""> //===----------------------------------------------------------------------===//<br class=""><br class="">-#ifndef OPENMP_DIRECTIVE<br class="">-#  define OPENMP_DIRECTIVE(Name)<br class="">-#endif<br class="">-#ifndef OPENMP_DIRECTIVE_EXT<br class="">-#define OPENMP_DIRECTIVE_EXT(Name, Str)<br class="">-#endif<br class=""> #ifndef OPENMP_CLAUSE<br class=""> #  define OPENMP_CLAUSE(Name, Class)<br class=""> #endif<br class="">@@ -230,69 +224,6 @@ OPENMP_CONTEXT_SELECTOR_SET(device)<br class=""> OPENMP_CONTEXT_SELECTOR(vendor)<br class=""> OPENMP_CONTEXT_SELECTOR(kind)<br class=""><br class="">-// OpenMP directives.<br class="">-OPENMP_DIRECTIVE(threadprivate)<br class="">-OPENMP_DIRECTIVE(parallel)<br class="">-OPENMP_DIRECTIVE(task)<br class="">-OPENMP_DIRECTIVE(simd)<br class="">-OPENMP_DIRECTIVE(for)<br class="">-OPENMP_DIRECTIVE(sections)<br class="">-OPENMP_DIRECTIVE(section)<br class="">-OPENMP_DIRECTIVE(single)<br class="">-OPENMP_DIRECTIVE(master)<br class="">-OPENMP_DIRECTIVE(critical)<br class="">-OPENMP_DIRECTIVE(taskyield)<br class="">-OPENMP_DIRECTIVE(barrier)<br class="">-OPENMP_DIRECTIVE(taskwait)<br class="">-OPENMP_DIRECTIVE(taskgroup)<br class="">-OPENMP_DIRECTIVE(flush)<br class="">-OPENMP_DIRECTIVE(ordered)<br class="">-OPENMP_DIRECTIVE(atomic)<br class="">-OPENMP_DIRECTIVE(target)<br class="">-OPENMP_DIRECTIVE(teams)<br class="">-OPENMP_DIRECTIVE(cancel)<br class="">-OPENMP_DIRECTIVE(requires)<br class="">-OPENMP_DIRECTIVE_EXT(target_data, "target data")<br class="">-OPENMP_DIRECTIVE_EXT(target_enter_data, "target enter data")<br class="">-OPENMP_DIRECTIVE_EXT(target_exit_data, "target exit data")<br class="">-OPENMP_DIRECTIVE_EXT(target_parallel, "target parallel")<br class="">-OPENMP_DIRECTIVE_EXT(target_parallel_for, "target parallel for")<br class="">-OPENMP_DIRECTIVE_EXT(target_update, "target update")<br class="">-OPENMP_DIRECTIVE_EXT(parallel_for, "parallel for")<br class="">-OPENMP_DIRECTIVE_EXT(parallel_for_simd, "parallel for simd")<br class="">-OPENMP_DIRECTIVE_EXT(parallel_master, "parallel master")<br class="">-OPENMP_DIRECTIVE_EXT(parallel_sections, "parallel sections")<br class="">-OPENMP_DIRECTIVE_EXT(for_simd, "for simd")<br class="">-OPENMP_DIRECTIVE_EXT(cancellation_point, "cancellation point")<br class="">-OPENMP_DIRECTIVE_EXT(declare_reduction, "declare reduction")<br class="">-OPENMP_DIRECTIVE_EXT(declare_mapper, "declare mapper")<br class="">-OPENMP_DIRECTIVE_EXT(declare_simd, "declare simd")<br class="">-OPENMP_DIRECTIVE(taskloop)<br class="">-OPENMP_DIRECTIVE_EXT(taskloop_simd, "taskloop simd")<br class="">-OPENMP_DIRECTIVE(distribute)<br class="">-OPENMP_DIRECTIVE_EXT(declare_target, "declare target")<br class="">-OPENMP_DIRECTIVE_EXT(end_declare_target, "end declare target")<br class="">-OPENMP_DIRECTIVE_EXT(distribute_parallel_for, "distribute parallel for")<br class="">-OPENMP_DIRECTIVE_EXT(distribute_parallel_for_simd, "distribute parallel for simd")<br class="">-OPENMP_DIRECTIVE_EXT(distribute_simd, "distribute simd")<br class="">-OPENMP_DIRECTIVE_EXT(target_parallel_for_simd, "target parallel for simd")<br class="">-OPENMP_DIRECTIVE_EXT(target_simd, "target simd")<br class="">-OPENMP_DIRECTIVE_EXT(teams_distribute, "teams distribute")<br class="">-OPENMP_DIRECTIVE_EXT(teams_distribute_simd, "teams distribute simd")<br class="">-OPENMP_DIRECTIVE_EXT(teams_distribute_parallel_for_simd, "teams distribute parallel for simd")<br class="">-OPENMP_DIRECTIVE_EXT(teams_distribute_parallel_for, "teams distribute parallel for")<br class="">-OPENMP_DIRECTIVE_EXT(target_teams, "target teams")<br class="">-OPENMP_DIRECTIVE_EXT(target_teams_distribute, "target teams distribute")<br class="">-OPENMP_DIRECTIVE_EXT(target_teams_distribute_parallel_for, "target teams distribute parallel for")<br class="">-OPENMP_DIRECTIVE_EXT(target_teams_distribute_parallel_for_simd, "target teams distribute parallel for simd")<br class="">-OPENMP_DIRECTIVE_EXT(target_teams_distribute_simd, "target teams distribute simd")<br class="">-OPENMP_DIRECTIVE(allocate)<br class="">-OPENMP_DIRECTIVE_EXT(declare_variant, "declare variant")<br class="">-OPENMP_DIRECTIVE_EXT(master_taskloop, "master taskloop")<br class="">-OPENMP_DIRECTIVE_EXT(parallel_master_taskloop, "parallel master taskloop")<br class="">-OPENMP_DIRECTIVE_EXT(master_taskloop_simd, "master taskloop simd")<br class="">-OPENMP_DIRECTIVE_EXT(parallel_master_taskloop_simd, "parallel master taskloop simd")<br class="">-<br class=""> // OpenMP clauses.<br class=""> OPENMP_CLAUSE(allocator, OMPAllocatorClause)<br class=""> OPENMP_CLAUSE(if, OMPIfClause)<br class="">@@ -1137,8 +1068,6 @@ OPENMP_MATCH_KIND(implementation)<br class=""> #undef OPENMP_SCHEDULE_KIND<br class=""> #undef OPENMP_PROC_BIND_KIND<br class=""> #undef OPENMP_DEFAULT_KIND<br class="">-#undef OPENMP_DIRECTIVE<br class="">-#undef OPENMP_DIRECTIVE_EXT<br class=""> #undef OPENMP_CLAUSE<br class=""> #undef OPENMP_CRITICAL_CLAUSE<br class=""> #undef OPENMP_ORDERED_CLAUSE<br class=""><br class="">diff  --git a/clang/include/clang/Basic/OpenMPKinds.h b/clang/include/clang/Basic/OpenMPKinds.h<br class="">index 2621afe7afbb..543c1cd14907 100644<br class="">--- a/clang/include/clang/Basic/OpenMPKinds.h<br class="">+++ b/clang/include/clang/Basic/OpenMPKinds.h<br class="">@@ -15,6 +15,7 @@<br class=""> #define LLVM_CLANG_BASIC_OPENMPKINDS_H<br class=""><br class=""> #include "llvm/ADT/StringRef.h"<br class="">+#include "llvm/Frontend/OpenMP/OMPConstants.h"<br class=""><br class=""> namespace clang {<br class=""><br class="">@@ -58,14 +59,7 @@ template <typename VectorType, typename ScoreT> struct OpenMPCtxSelectorData {<br class=""> };<br class=""><br class=""> /// OpenMP directives.<br class="">-enum OpenMPDirectiveKind {<br class="">-#define OPENMP_DIRECTIVE(Name) \<br class="">-  OMPD_##Name,<br class="">-#define OPENMP_DIRECTIVE_EXT(Name, Str) \<br class="">-  OMPD_##Name,<br class="">-#include "clang/Basic/OpenMPKinds.def"<br class="">-  OMPD_unknown<br class="">-};<br class="">+using OpenMPDirectiveKind = llvm::omp::Directive;<br class=""><br class=""> /// OpenMP clauses.<br class=""> enum OpenMPClauseKind {<br class="">@@ -208,9 +202,6 @@ struct OpenMPScheduleTy final {<br class="">   OpenMPScheduleClauseModifier M2 = OMPC_SCHEDULE_MODIFIER_unknown;<br class=""> };<br class=""><br class="">-OpenMPDirectiveKind getOpenMPDirectiveKind(llvm::StringRef Str);<br class="">-const char *getOpenMPDirectiveName(OpenMPDirectiveKind Kind);<br class="">-<br class=""> OpenMPClauseKind getOpenMPClauseKind(llvm::StringRef Str);<br class=""> const char *getOpenMPClauseName(OpenMPClauseKind Kind);<br class=""><br class=""><br class="">diff  --git a/clang/lib/AST/CMakeLists.txt b/clang/lib/AST/CMakeLists.txt<br class="">index 1ede58cc9ed6..bd9b0934591c 100644<br class="">--- a/clang/lib/AST/CMakeLists.txt<br class="">+++ b/clang/lib/AST/CMakeLists.txt<br class="">@@ -1,6 +1,7 @@<br class=""> set(LLVM_LINK_COMPONENTS<br class="">   BinaryFormat<br class="">   Core<br class="">+  FrontendOpenMP<br class="">   Support<br class="">   )<br class=""><br class=""><br class="">diff  --git a/clang/lib/AST/OpenMPClause.cpp b/clang/lib/AST/OpenMPClause.cpp<br class="">index fe1334469d48..7315d7c3cdbf 100644<br class="">--- a/clang/lib/AST/OpenMPClause.cpp<br class="">+++ b/clang/lib/AST/OpenMPClause.cpp<br class="">@@ -1161,7 +1161,7 @@ OMPIsDevicePtrClause::CreateEmpty(const ASTContext &C,<br class=""><br class=""> void OMPClausePrinter::VisitOMPIfClause(OMPIfClause *Node) {<br class="">   OS << "if(";<br class="">-  if (Node->getNameModifier() != OMPD_unknown)<br class="">+  if (Node->getNameModifier() != llvm::omp::OMPD_unknown)<br class="">     OS << getOpenMPDirectiveName(Node->getNameModifier()) << ": ";<br class="">   Node->getCondition()->printPretty(OS, nullptr, Policy, 0);<br class="">   OS << ")";<br class=""><br class="">diff  --git a/clang/lib/AST/StmtOpenMP.cpp b/clang/lib/AST/StmtOpenMP.cpp<br class="">index 5b61e05aae87..da6d308ad15b 100644<br class="">--- a/clang/lib/AST/StmtOpenMP.cpp<br class="">+++ b/clang/lib/AST/StmtOpenMP.cpp<br class="">@@ -15,6 +15,7 @@<br class=""> #include "clang/AST/ASTContext.h"<br class=""><br class=""> using namespace clang;<br class="">+using namespace llvm::omp;<br class=""><br class=""> void OMPExecutableDirective::setClauses(ArrayRef<OMPClause *> Clauses) {<br class="">   assert(Clauses.size() == getNumClauses() &&<br class=""><br class="">diff  --git a/clang/lib/Basic/OpenMPKinds.cpp b/clang/lib/Basic/OpenMPKinds.cpp<br class="">index c075deb01a18..51fe587de999 100644<br class="">--- a/clang/lib/Basic/OpenMPKinds.cpp<br class="">+++ b/clang/lib/Basic/OpenMPKinds.cpp<br class="">@@ -18,6 +18,7 @@<br class=""> #include <cassert><br class=""><br class=""> using namespace clang;<br class="">+using namespace llvm::omp;<br class=""><br class=""> OpenMPContextSelectorSetKind<br class=""> clang::getOpenMPContextSelectorSet(llvm::StringRef Str) {<br class="">@@ -62,31 +63,6 @@ clang::getOpenMPContextSelectorName(OpenMPContextSelectorKind Kind) {<br class="">   llvm_unreachable("Invalid OpenMP context selector kind");<br class=""> }<br class=""><br class="">-OpenMPDirectiveKind clang::getOpenMPDirectiveKind(StringRef Str) {<br class="">-  return llvm::StringSwitch<OpenMPDirectiveKind>(Str)<br class="">-#define OPENMP_DIRECTIVE(Name) .Case(#Name, OMPD_##Name)<br class="">-#define OPENMP_DIRECTIVE_EXT(Name, Str) .Case(Str, OMPD_##Name)<br class="">-#include "clang/Basic/OpenMPKinds.def"<br class="">-      .Default(OMPD_unknown);<br class="">-}<br class="">-<br class="">-const char *clang::getOpenMPDirectiveName(OpenMPDirectiveKind Kind) {<br class="">-  assert(Kind <= OMPD_unknown);<br class="">-  switch (Kind) {<br class="">-  case OMPD_unknown:<br class="">-    return "unknown";<br class="">-#define OPENMP_DIRECTIVE(Name)                                                 \<br class="">-  case OMPD_##Name:                                                            \<br class="">-    return #Name;<br class="">-#define OPENMP_DIRECTIVE_EXT(Name, Str)                                        \<br class="">-  case OMPD_##Name:                                                            \<br class="">-    return Str;<br class="">-#include "clang/Basic/OpenMPKinds.def"<br class="">-    break;<br class="">-  }<br class="">-  llvm_unreachable("Invalid OpenMP directive kind");<br class="">-}<br class="">-<br class=""> OpenMPClauseKind clang::getOpenMPClauseKind(StringRef Str) {<br class="">   // 'flush' clause cannot be specified explicitly, because this is an implicit<br class="">   // clause for 'flush' directive. If the 'flush' clause is explicitly specified<br class="">@@ -449,7 +425,7 @@ const char *clang::getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind,<br class=""> bool clang::isAllowedClauseForDirective(OpenMPDirectiveKind DKind,<br class="">                                         OpenMPClauseKind CKind,<br class="">                                         unsigned OpenMPVersion) {<br class="">-  assert(DKind <= OMPD_unknown);<br class="">+  assert(unsigned(DKind) <= unsigned(OMPD_unknown));<br class="">   assert(CKind <= OMPC_unknown);<br class="">   switch (DKind) {<br class="">   case OMPD_parallel:<br class=""><br class="">diff  --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp b/clang/lib/CodeGen/CGOpenMPRuntime.cpp<br class="">index a53808782039..fda8dbe14db6 100644<br class="">--- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp<br class="">+++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp<br class="">@@ -32,6 +32,7 @@<br class=""><br class=""> using namespace clang;<br class=""> using namespace CodeGen;<br class="">+using namespace llvm::omp;<br class=""><br class=""> namespace {<br class=""> /// Base class for handling code generation inside OpenMP regions.<br class=""><br class="">diff  --git a/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp<br class="">index 800940b9ef30..b98e6dee5f75 100644<br class="">--- a/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp<br class="">+++ b/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp<br class="">@@ -22,6 +22,7 @@<br class=""><br class=""> using namespace clang;<br class=""> using namespace CodeGen;<br class="">+using namespace llvm::omp;<br class=""><br class=""> namespace {<br class=""> enum OpenMPRTLFunctionNVPTX {<br class=""><br class="">diff  --git a/clang/lib/CodeGen/CGStmtOpenMP.cpp b/clang/lib/CodeGen/CGStmtOpenMP.cpp<br class="">index 8369fc236df4..e23abdd385fe 100644<br class="">--- a/clang/lib/CodeGen/CGStmtOpenMP.cpp<br class="">+++ b/clang/lib/CodeGen/CGStmtOpenMP.cpp<br class="">@@ -23,6 +23,7 @@<br class=""> #include "clang/Basic/PrettyStackTrace.h"<br class=""> using namespace clang;<br class=""> using namespace CodeGen;<br class="">+using namespace llvm::omp;<br class=""><br class=""> namespace {<br class=""> /// Lexical scope for OpenMP executable constructs, that handles correct codegen<br class=""><br class="">diff  --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h<br class="">index a46a25248bdd..0aff6667840d 100644<br class="">--- a/clang/lib/CodeGen/CodeGenFunction.h<br class="">+++ b/clang/lib/CodeGen/CodeGenFunction.h<br class="">@@ -1276,7 +1276,7 @@ class CodeGenFunction : public CodeGenTypeCache {<br class="">       CancelExit(OpenMPDirectiveKind Kind, JumpDest ExitBlock,<br class="">                  JumpDest ContBlock)<br class="">           : Kind(Kind), ExitBlock(ExitBlock), ContBlock(ContBlock) {}<br class="">-      OpenMPDirectiveKind Kind = OMPD_unknown;<br class="">+      OpenMPDirectiveKind Kind = llvm::omp::OMPD_unknown;<br class="">       /// true if the exit block has been emitted already by the special<br class="">       /// emitExit() call, false if the default codegen is used.<br class="">       bool HasBeenEmitted = false;<br class=""><br class="">diff  --git a/clang/lib/Parse/CMakeLists.txt b/clang/lib/Parse/CMakeLists.txt<br class="">index b868696eb6bb..3f7ab2a74af2 100644<br class="">--- a/clang/lib/Parse/CMakeLists.txt<br class="">+++ b/clang/lib/Parse/CMakeLists.txt<br class="">@@ -1,4 +1,5 @@<br class=""> set(LLVM_LINK_COMPONENTS<br class="">+  FrontendOpenMP<br class="">   MC<br class="">   MCParser<br class="">   Support<br class=""><br class="">diff  --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp<br class="">index d25058e17ff5..89f7f909b379 100644<br class="">--- a/clang/lib/Parse/ParseOpenMP.cpp<br class="">+++ b/clang/lib/Parse/ParseOpenMP.cpp<br class="">@@ -20,6 +20,7 @@<br class=""> #include "llvm/ADT/UniqueVector.h"<br class=""><br class=""> using namespace clang;<br class="">+using namespace llvm::omp;<br class=""><br class=""> //===----------------------------------------------------------------------===//<br class=""> // OpenMP declarative directives.<br class="">@@ -27,7 +28,7 @@ using namespace clang;<br class=""><br class=""> namespace {<br class=""> enum OpenMPDirectiveKindEx {<br class="">-  OMPD_cancellation = OMPD_unknown + 1,<br class="">+  OMPD_cancellation = unsigned(OMPD_unknown) + 1,<br class="">   OMPD_data,<br class="">   OMPD_declare,<br class="">   OMPD_end,<br class="">@@ -46,6 +47,20 @@ enum OpenMPDirectiveKindEx {<br class="">   OMPD_variant,<br class=""> };<br class=""><br class="">+// Helper to unify the enum class OpenMPDirectiveKind with its extension<br class="">+// the OpenMPDirectiveKindEx enum which allows to use them together as if they<br class="">+// are unsigned values.<br class="">+struct OpenMPDirectiveKindExWrapper {<br class="">+  OpenMPDirectiveKindExWrapper(unsigned Value) : Value(Value) {}<br class="">+  OpenMPDirectiveKindExWrapper(OpenMPDirectiveKind DK) : Value(unsigned(DK)) {}<br class="">+  bool operator==(OpenMPDirectiveKind V) const { return Value == unsigned(V); }<br class="">+  bool operator!=(OpenMPDirectiveKind V) const { return Value != unsigned(V); }<br class="">+  bool operator<(OpenMPDirectiveKind V) const { return Value < unsigned(V); }<br class="">+  operator unsigned() const { return Value; }<br class="">+  operator OpenMPDirectiveKind() const { return OpenMPDirectiveKind(Value); }<br class="">+  unsigned Value;<br class="">+};<br class="">+<br class=""> class DeclDirectiveListParserHelper final {<br class="">   SmallVector<Expr *, 4> Identifiers;<br class="">   Parser *P;<br class="">@@ -67,11 +82,11 @@ class DeclDirectiveListParserHelper final {<br class=""> // Map token string to extended OMP token kind that are<br class=""> // OpenMPDirectiveKind + OpenMPDirectiveKindEx.<br class=""> static unsigned getOpenMPDirectiveKindEx(StringRef S) {<br class="">-  auto DKind = getOpenMPDirectiveKind(S);<br class="">+  OpenMPDirectiveKindExWrapper DKind = getOpenMPDirectiveKind(S);<br class="">   if (DKind != OMPD_unknown)<br class="">     return DKind;<br class=""><br class="">-  return llvm::StringSwitch<unsigned>(S)<br class="">+  return llvm::StringSwitch<OpenMPDirectiveKindExWrapper>(S)<br class="">       .Case("cancellation", OMPD_cancellation)<br class="">       .Case("data", OMPD_data)<br class="">       .Case("declare", OMPD_declare)<br class="">@@ -86,11 +101,11 @@ static unsigned getOpenMPDirectiveKindEx(StringRef S) {<br class="">       .Default(OMPD_unknown);<br class=""> }<br class=""><br class="">-static OpenMPDirectiveKind parseOpenMPDirectiveKind(Parser &P) {<br class="">+static OpenMPDirectiveKindExWrapper parseOpenMPDirectiveKind(Parser &P) {<br class="">   // Array of foldings: F[i][0] F[i][1] ===> F[i][2].<br class="">   // E.g.: OMPD_for OMPD_simd ===> OMPD_for_simd<br class="">   // TODO: add other combined directives in topological order.<br class="">-  static const unsigned F[][3] = {<br class="">+  static const OpenMPDirectiveKindExWrapper F[][3] = {<br class="">       {OMPD_cancellation, OMPD_point, OMPD_cancellation_point},<br class="">       {OMPD_declare, OMPD_reduction, OMPD_declare_reduction},<br class="">       {OMPD_declare, OMPD_mapper, OMPD_declare_mapper},<br class="">@@ -144,7 +159,7 @@ static OpenMPDirectiveKind parseOpenMPDirectiveKind(Parser &P) {<br class="">        OMPD_parallel_master_taskloop_simd}};<br class="">   enum { CancellationPoint = 0, DeclareReduction = 1, TargetData = 2 };<br class="">   Token Tok = P.getCurToken();<br class="">-  unsigned DKind =<br class="">+  OpenMPDirectiveKindExWrapper DKind =<br class="">       Tok.isAnnotation()<br class="">           ? static_cast<unsigned>(OMPD_unknown)<br class="">           : getOpenMPDirectiveKindEx(P.getPreprocessor().getSpelling(Tok));<br class="">@@ -156,7 +171,7 @@ static OpenMPDirectiveKind parseOpenMPDirectiveKind(Parser &P) {<br class="">       continue;<br class=""><br class="">     Tok = P.getPreprocessor().LookAhead(0);<br class="">-    unsigned SDKind =<br class="">+    OpenMPDirectiveKindExWrapper SDKind =<br class="">         Tok.isAnnotation()<br class="">             ? static_cast<unsigned>(OMPD_unknown)<br class="">             : getOpenMPDirectiveKindEx(P.getPreprocessor().getSpelling(Tok));<br class="">@@ -238,8 +253,9 @@ Parser::DeclGroupPtrTy<br class=""> Parser::ParseOpenMPDeclareReductionDirective(AccessSpecifier AS) {<br class="">   // Parse '('.<br class="">   BalancedDelimiterTracker T(*this, tok::l_paren, tok::annot_pragma_openmp_end);<br class="">-  if (T.expectAndConsume(diag::err_expected_lparen_after,<br class="">-                         getOpenMPDirectiveName(OMPD_declare_reduction))) {<br class="">+  if (T.expectAndConsume(<br class="">+          diag::err_expected_lparen_after,<br class="">+          getOpenMPDirectiveName(OMPD_declare_reduction).data())) {<br class="">     SkipUntil(tok::annot_pragma_openmp_end, StopBeforeMatch);<br class="">     return DeclGroupPtrTy();<br class="">   }<br class="">@@ -491,7 +507,7 @@ Parser::ParseOpenMPDeclareMapperDirective(AccessSpecifier AS) {<br class="">   // Parse '('<br class="">   BalancedDelimiterTracker T(*this, tok::l_paren, tok::annot_pragma_openmp_end);<br class="">   if (T.expectAndConsume(diag::err_expected_lparen_after,<br class="">-                         getOpenMPDirectiveName(OMPD_declare_mapper))) {<br class="">+                         getOpenMPDirectiveName(OMPD_declare_mapper).data())) {<br class="">     SkipUntil(tok::annot_pragma_openmp_end, StopBeforeMatch);<br class="">     return DeclGroupPtrTy();<br class="">   }<br class="">@@ -1956,7 +1972,7 @@ bool Parser::ParseOpenMPSimpleVarList(<br class="">   // Parse '('.<br class="">   BalancedDelimiterTracker T(*this, tok::l_paren, tok::annot_pragma_openmp_end);<br class="">   if (T.expectAndConsume(diag::err_expected_lparen_after,<br class="">-                         getOpenMPDirectiveName(Kind)))<br class="">+                         getOpenMPDirectiveName(Kind).data()))<br class="">     return true;<br class="">   bool IsCorrect = true;<br class="">   bool NoIdentIsFound = true;<br class="">@@ -2428,15 +2444,16 @@ OMPClause *Parser::ParseOpenMPSingleExprWithArgClause(OpenMPClauseKind Kind,<br class="">     assert(Kind == OMPC_if);<br class="">     KLoc.push_back(Tok.getLocation());<br class="">     TentativeParsingAction TPA(*this);<br class="">-    Arg.push_back(parseOpenMPDirectiveKind(*this));<br class="">-    if (Arg.back() != OMPD_unknown) {<br class="">+    auto DK = parseOpenMPDirectiveKind(*this);<br class="">+    Arg.push_back(DK);<br class="">+    if (DK != OMPD_unknown) {<br class="">       ConsumeToken();<br class="">       if (<a href="http://Tok.is" class="">Tok.is</a>(tok::colon) && getLangOpts().OpenMP > 40) {<br class="">         TPA.Commit();<br class="">         DelimLoc = ConsumeToken();<br class="">       } else {<br class="">         TPA.Revert();<br class="">-        Arg.back() = OMPD_unknown;<br class="">+        Arg.back() = unsigned(OMPD_unknown);<br class="">       }<br class="">     } else {<br class="">       TPA.Revert();<br class=""><br class="">diff  --git a/clang/lib/Sema/CMakeLists.txt b/clang/lib/Sema/CMakeLists.txt<br class="">index 89c3f6c47b49..844abc7ce598 100644<br class="">--- a/clang/lib/Sema/CMakeLists.txt<br class="">+++ b/clang/lib/Sema/CMakeLists.txt<br class="">@@ -1,4 +1,5 @@<br class=""> set(LLVM_LINK_COMPONENTS<br class="">+  FrontendOpenMP<br class="">   Support<br class="">   )<br class=""><br class=""><br class="">diff  --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp<br class="">index baf2db810dcd..0783bb713592 100644<br class="">--- a/clang/lib/Sema/SemaOpenMP.cpp<br class="">+++ b/clang/lib/Sema/SemaOpenMP.cpp<br class="">@@ -28,8 +28,11 @@<br class=""> #include "clang/Sema/Scope.h"<br class=""> #include "clang/Sema/ScopeInfo.h"<br class=""> #include "clang/Sema/SemaInternal.h"<br class="">+#include "llvm/ADT/IndexedMap.h"<br class=""> #include "llvm/ADT/PointerEmbeddedInt.h"<br class="">+#include "llvm/Frontend/OpenMP/OMPConstants.h"<br class=""> using namespace clang;<br class="">+using namespace llvm::omp;<br class=""><br class=""> //===----------------------------------------------------------------------===//<br class=""> // Stack of data-sharing attributes for variables<br class="">@@ -4152,13 +4155,17 @@ static bool checkNestingOfRegions(Sema &SemaRef, const DSAStackTy *Stack,<br class="">   return false;<br class=""> }<br class=""><br class="">+struct Kind2Unsigned {<br class="">+  using argument_type = OpenMPDirectiveKind;<br class="">+  unsigned operator()(argument_type DK) { return unsigned(DK); }<br class="">+};<br class=""> static bool checkIfClauses(Sema &S, OpenMPDirectiveKind Kind,<br class="">                            ArrayRef<OMPClause *> Clauses,<br class="">                            ArrayRef<OpenMPDirectiveKind> AllowedNameModifiers) {<br class="">   bool ErrorFound = false;<br class="">   unsigned NamedModifiersNumber = 0;<br class="">-  SmallVector<const OMPIfClause *, OMPC_unknown + 1> FoundNameModifiers(<br class="">-      OMPD_unknown + 1);<br class="">+  llvm::IndexedMap<const OMPIfClause *, Kind2Unsigned> FoundNameModifiers;<br class="">+  FoundNameModifiers.resize(unsigned(OMPD_unknown) + 1);<br class="">   SmallVector<SourceLocation, 4> NameModifierLoc;<br class="">   for (const OMPClause *C : Clauses) {<br class="">     if (const auto *IC = dyn_cast_or_null<OMPIfClause>(C)) {<br class=""><br class="">diff  --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp<br class="">index fb19579cca1b..e9456ebda581 100644<br class="">--- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp<br class="">+++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp<br class="">@@ -3188,7 +3188,8 @@ TemplateDeclInstantiator::VisitOMPDeclareMapperDecl(OMPDeclareMapperDecl *D) {<br class="">   } else {<br class="">     // Instantiate the mapper variable.<br class="">     DeclarationNameInfo DirName;<br class="">-    SemaRef.StartOpenMPDSABlock(OMPD_declare_mapper, DirName, /*S=*/nullptr,<br class="">+    SemaRef.StartOpenMPDSABlock(llvm::omp::OMPD_declare_mapper, DirName,<br class="">+                                /*S=*/nullptr,<br class="">                                 (*D->clauselist_begin())->getBeginLoc());<br class="">     SemaRef.ActOnOpenMPDeclareMapperDirectiveVarDecl(<br class="">         NewDMD, /*S=*/nullptr, SubstMapperTy, D->getLocation(), VN);<br class=""><br class="">diff  --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h<br class="">index c22b44a7b91d..ade0e6a0c4ce 100644<br class="">--- a/clang/lib/Sema/TreeTransform.h<br class="">+++ b/clang/lib/Sema/TreeTransform.h<br class="">@@ -37,6 +37,8 @@<br class=""> #include "llvm/Support/ErrorHandling.h"<br class=""> #include <algorithm><br class=""><br class="">+using namespace llvm::omp;<br class="">+<br class=""> namespace clang {<br class=""> using namespace sema;<br class=""><br class=""><br class="">diff  --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp<br class="">index 4c186629b59b..e3458c48b14d 100644<br class="">--- a/clang/lib/Serialization/ASTWriter.cpp<br class="">+++ b/clang/lib/Serialization/ASTWriter.cpp<br class="">@@ -6622,7 +6622,7 @@ void OMPClauseWriter::writeClause(OMPClause *C) {<br class=""> }<br class=""><br class=""> void OMPClauseWriter::VisitOMPClauseWithPreInit(OMPClauseWithPreInit *C) {<br class="">-  Record.push_back(C->getCaptureRegion());<br class="">+  Record.push_back(uint64_t(C->getCaptureRegion()));<br class="">   Record.AddStmt(C->getPreInitStmt());<br class=""> }<br class=""><br class="">@@ -6633,7 +6633,7 @@ void OMPClauseWriter::VisitOMPClauseWithPostUpdate(OMPClauseWithPostUpdate *C) {<br class=""><br class=""> void OMPClauseWriter::VisitOMPIfClause(OMPIfClause *C) {<br class="">   VisitOMPClauseWithPreInit(C);<br class="">-  Record.push_back(C->getNameModifier());<br class="">+  Record.push_back(uint64_t(C->getNameModifier()));<br class="">   Record.AddSourceLocation(C->getNameModifierLoc());<br class="">   Record.AddSourceLocation(C->getColonLoc());<br class="">   Record.AddStmt(C->getCondition());<br class=""><br class="">diff  --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp<br class="">index 1e801d02afc3..a5e90359103e 100644<br class="">--- a/clang/lib/Serialization/ASTWriterStmt.cpp<br class="">+++ b/clang/lib/Serialization/ASTWriterStmt.cpp<br class="">@@ -2255,7 +2255,7 @@ void ASTStmtWriter::VisitOMPCancellationPointDirective(<br class="">     OMPCancellationPointDirective *D) {<br class="">   VisitStmt(D);<br class="">   VisitOMPExecutableDirective(D);<br class="">-  Record.push_back(D->getCancelRegion());<br class="">+  Record.push_back(uint64_t(D->getCancelRegion()));<br class="">   Code = serialization::STMT_OMP_CANCELLATION_POINT_DIRECTIVE;<br class=""> }<br class=""><br class="">@@ -2263,7 +2263,7 @@ void ASTStmtWriter::VisitOMPCancelDirective(OMPCancelDirective *D) {<br class="">   VisitStmt(D);<br class="">   Record.push_back(D->getNumClauses());<br class="">   VisitOMPExecutableDirective(D);<br class="">-  Record.push_back(D->getCancelRegion());<br class="">+  Record.push_back(uint64_t(D->getCancelRegion()));<br class="">   Code = serialization::STMT_OMP_CANCEL_DIRECTIVE;<br class=""> }<br class=""><br class=""><br class="">diff  --git a/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h b/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h<br class="">new file mode 100644<br class="">index 000000000000..42b19091c14d<br class="">--- /dev/null<br class="">+++ b/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h<br class="">@@ -0,0 +1,46 @@<br class="">+//===- OMPConstants.h - OpenMP related constants and helpers ------ C++ -*-===//<br class="">+//<br class="">+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.<br class="">+// See <a href="https://llvm.org/LICENSE.txt" class="">https://llvm.org/LICENSE.txt</a> for license information.<br class="">+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+/// \file<br class="">+///<br class="">+/// This file defines constans and helpers used when dealing with OpenMP.<br class="">+///<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_OPENMP_CONSTANTS_H<br class="">+#define LLVM_OPENMP_CONSTANTS_H<br class="">+<br class="">+#include "llvm/ADT/StringRef.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+namespace omp {<br class="">+<br class="">+/// IDs for all OpenMP directives.<br class="">+enum class Directive {<br class="">+#define OMP_DIRECTIVE(Enum, ...) Enum,<br class="">+#include "llvm/Frontend/OpenMP/OMPKinds.def"<br class="">+};<br class="">+<br class="">+/// Make the enum values available in the llvm::omp namespace. This allows us to<br class="">+/// write something like OMPD_parallel if we have a `using namespace omp`. At<br class="">+/// the same time we do not loose the strong type guarantees of the enum class,<br class="">+/// that is we cannot pass an unsigned as Directive without an explicit cast.<br class="">+#define OMP_DIRECTIVE(Enum, ...) constexpr auto Enum = omp::Directive::Enum;<br class="">+#include "llvm/Frontend/OpenMP/OMPKinds.def"<br class="">+<br class="">+/// Parse \p Str and return the directive it matches or OMPD_unknown if none.<br class="">+Directive getOpenMPDirectiveKind(StringRef Str);<br class="">+<br class="">+/// Return a textual representation of the directive \p D.<br class="">+StringRef getOpenMPDirectiveName(Directive D);<br class="">+<br class="">+} // end namespace omp<br class="">+<br class="">+} // end namespace llvm<br class="">+<br class="">+#endif // LLVM_OPENMP_CONSTANTS_H<br class=""><br class="">diff  --git a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def<br class="">new file mode 100644<br class="">index 000000000000..fc84ffb578c5<br class="">--- /dev/null<br class="">+++ b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def<br class="">@@ -0,0 +1,102 @@<br class="">+//===--- OMPKinds.def - OpenMP directives, clauses, rt-calls -*- C++ -*-===//<br class="">+//<br class="">+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.<br class="">+// See <a href="https://llvm.org/LICENSE.txt" class="">https://llvm.org/LICENSE.txt</a> for license information.<br class="">+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+/// \file<br class="">+///<br class="">+/// This file defines the list of supported OpenMP directives, clauses, runtime<br class="">+/// calls, and other things that need to be listed in enums.<br class="">+///<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+/// OpenMP Directives and combined directives<br class="">+///<br class="">+///{<br class="">+<br class="">+#ifndef OMP_DIRECTIVE<br class="">+#define OMP_DIRECTIVE(Enum, Str)<br class="">+#endif<br class="">+<br class="">+#define __OMP_DIRECTIVE_EXT(Name, Str) OMP_DIRECTIVE(OMPD_##Name, Str)<br class="">+#define __OMP_DIRECTIVE(Name) __OMP_DIRECTIVE_EXT(Name, #Name)<br class="">+<br class="">+__OMP_DIRECTIVE(threadprivate)<br class="">+__OMP_DIRECTIVE(parallel)<br class="">+__OMP_DIRECTIVE(task)<br class="">+__OMP_DIRECTIVE(simd)<br class="">+__OMP_DIRECTIVE(for)<br class="">+__OMP_DIRECTIVE(sections)<br class="">+__OMP_DIRECTIVE(section)<br class="">+__OMP_DIRECTIVE(single)<br class="">+__OMP_DIRECTIVE(master)<br class="">+__OMP_DIRECTIVE(critical)<br class="">+__OMP_DIRECTIVE(taskyield)<br class="">+__OMP_DIRECTIVE(barrier)<br class="">+__OMP_DIRECTIVE(taskwait)<br class="">+__OMP_DIRECTIVE(taskgroup)<br class="">+__OMP_DIRECTIVE(flush)<br class="">+__OMP_DIRECTIVE(ordered)<br class="">+__OMP_DIRECTIVE(atomic)<br class="">+__OMP_DIRECTIVE(target)<br class="">+__OMP_DIRECTIVE(teams)<br class="">+__OMP_DIRECTIVE(cancel)<br class="">+__OMP_DIRECTIVE(requires)<br class="">+__OMP_DIRECTIVE_EXT(target_data, "target data")<br class="">+__OMP_DIRECTIVE_EXT(target_enter_data, "target enter data")<br class="">+__OMP_DIRECTIVE_EXT(target_exit_data, "target exit data")<br class="">+__OMP_DIRECTIVE_EXT(target_parallel, "target parallel")<br class="">+__OMP_DIRECTIVE_EXT(target_parallel_for, "target parallel for")<br class="">+__OMP_DIRECTIVE_EXT(target_update, "target update")<br class="">+__OMP_DIRECTIVE_EXT(parallel_for, "parallel for")<br class="">+__OMP_DIRECTIVE_EXT(parallel_for_simd, "parallel for simd")<br class="">+__OMP_DIRECTIVE_EXT(parallel_master, "parallel master")<br class="">+__OMP_DIRECTIVE_EXT(parallel_sections, "parallel sections")<br class="">+__OMP_DIRECTIVE_EXT(for_simd, "for simd")<br class="">+__OMP_DIRECTIVE_EXT(cancellation_point, "cancellation point")<br class="">+__OMP_DIRECTIVE_EXT(declare_reduction, "declare reduction")<br class="">+__OMP_DIRECTIVE_EXT(declare_mapper, "declare mapper")<br class="">+__OMP_DIRECTIVE_EXT(declare_simd, "declare simd")<br class="">+__OMP_DIRECTIVE(taskloop)<br class="">+__OMP_DIRECTIVE_EXT(taskloop_simd, "taskloop simd")<br class="">+__OMP_DIRECTIVE(distribute)<br class="">+__OMP_DIRECTIVE_EXT(declare_target, "declare target")<br class="">+__OMP_DIRECTIVE_EXT(end_declare_target, "end declare target")<br class="">+__OMP_DIRECTIVE_EXT(distribute_parallel_for, "distribute parallel for")<br class="">+__OMP_DIRECTIVE_EXT(distribute_parallel_for_simd,<br class="">+                    "distribute parallel for simd")<br class="">+__OMP_DIRECTIVE_EXT(distribute_simd, "distribute simd")<br class="">+__OMP_DIRECTIVE_EXT(target_parallel_for_simd, "target parallel for simd")<br class="">+__OMP_DIRECTIVE_EXT(target_simd, "target simd")<br class="">+__OMP_DIRECTIVE_EXT(teams_distribute, "teams distribute")<br class="">+__OMP_DIRECTIVE_EXT(teams_distribute_simd, "teams distribute simd")<br class="">+__OMP_DIRECTIVE_EXT(teams_distribute_parallel_for_simd,<br class="">+                    "teams distribute parallel for simd")<br class="">+__OMP_DIRECTIVE_EXT(teams_distribute_parallel_for,<br class="">+                    "teams distribute parallel for")<br class="">+__OMP_DIRECTIVE_EXT(target_teams, "target teams")<br class="">+__OMP_DIRECTIVE_EXT(target_teams_distribute, "target teams distribute")<br class="">+__OMP_DIRECTIVE_EXT(target_teams_distribute_parallel_for,<br class="">+                    "target teams distribute parallel for")<br class="">+__OMP_DIRECTIVE_EXT(target_teams_distribute_parallel_for_simd,<br class="">+                    "target teams distribute parallel for simd")<br class="">+__OMP_DIRECTIVE_EXT(target_teams_distribute_simd,<br class="">+                    "target teams distribute simd")<br class="">+__OMP_DIRECTIVE(allocate)<br class="">+__OMP_DIRECTIVE_EXT(declare_variant, "declare variant")<br class="">+__OMP_DIRECTIVE_EXT(master_taskloop, "master taskloop")<br class="">+__OMP_DIRECTIVE_EXT(parallel_master_taskloop, "parallel master taskloop")<br class="">+__OMP_DIRECTIVE_EXT(master_taskloop_simd, "master taskloop simd")<br class="">+__OMP_DIRECTIVE_EXT(parallel_master_taskloop_simd,<br class="">+                    "parallel master taskloop simd")<br class="">+<br class="">+// Has to be the last because Clang implicitly expects it to be.<br class="">+__OMP_DIRECTIVE(unknown)<br class="">+<br class="">+#undef __OMP_DIRECTIVE_EXT<br class="">+#undef __OMP_DIRECTIVE<br class="">+#undef OMP_DIRECTIVE<br class="">+<br class="">+///}<br class=""><br class="">diff  --git a/llvm/lib/CMakeLists.txt b/llvm/lib/CMakeLists.txt<br class="">index 5a41d65b0cf3..f7e08a68e673 100644<br class="">--- a/llvm/lib/CMakeLists.txt<br class="">+++ b/llvm/lib/CMakeLists.txt<br class="">@@ -8,6 +8,7 @@ add_subdirectory(CodeGen)<br class=""> add_subdirectory(BinaryFormat)<br class=""> add_subdirectory(Bitcode)<br class=""> add_subdirectory(Bitstream)<br class="">+add_subdirectory(Frontend)<br class=""> add_subdirectory(Transforms)<br class=""> add_subdirectory(Linker)<br class=""> add_subdirectory(Analysis)<br class=""><br class="">diff  --git a/llvm/lib/Frontend/CMakeLists.txt b/llvm/lib/Frontend/CMakeLists.txt<br class="">new file mode 100644<br class="">index 000000000000..9730c8414edf<br class="">--- /dev/null<br class="">+++ b/llvm/lib/Frontend/CMakeLists.txt<br class="">@@ -0,0 +1 @@<br class="">+add_subdirectory(OpenMP)<br class=""><br class="">diff  --git a/llvm/lib/Frontend/LLVMBuild.txt b/llvm/lib/Frontend/LLVMBuild.txt<br class="">new file mode 100644<br class="">index 000000000000..78ec6ae5186c<br class="">--- /dev/null<br class="">+++ b/llvm/lib/Frontend/LLVMBuild.txt<br class="">@@ -0,0 +1,23 @@<br class="">+;===- ./lib/Frontend/LLVMBuild.txt -----------------------------*- Conf -*--===;<br class="">+;<br class="">+; Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.<br class="">+; See <a href="https://llvm.org/LICENSE.txt" class="">https://llvm.org/LICENSE.txt</a> for license information.<br class="">+; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception<br class="">+;<br class="">+;===------------------------------------------------------------------------===;<br class="">+;<br class="">+; This is an LLVMBuild description file for the components in this subdirectory.<br class="">+;<br class="">+; For more information on the LLVMBuild system, please see:<br class="">+;<br class="">+;   <a href="http://llvm.org/docs/LLVMBuild.html" class="">http://llvm.org/docs/LLVMBuild.html</a><br class="">+;<br class="">+;===------------------------------------------------------------------------===;<br class="">+<br class="">+[common]<br class="">+subdirectories = OpenMP<br class="">+<br class="">+[component_0]<br class="">+type = Group<br class="">+name = Frontend<br class="">+parent = Libraries<br class=""><br class="">diff  --git a/llvm/lib/Frontend/OpenMP/CMakeLists.txt b/llvm/lib/Frontend/OpenMP/CMakeLists.txt<br class="">new file mode 100644<br class="">index 000000000000..5d74bcf3b9fc<br class="">--- /dev/null<br class="">+++ b/llvm/lib/Frontend/OpenMP/CMakeLists.txt<br class="">@@ -0,0 +1,10 @@<br class="">+add_llvm_component_library(LLVMFrontendOpenMP<br class="">+  OMPConstants.cpp<br class="">+<br class="">+  ADDITIONAL_HEADER_DIRS<br class="">+  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Frontend<br class="">+  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Frontend/OpenMP<br class="">+<br class="">+  DEPENDS<br class="">+  intrinsics_gen<br class="">+  )<br class=""><br class="">diff  --git a/llvm/lib/Frontend/OpenMP/LLVMBuild.txt b/llvm/lib/Frontend/OpenMP/LLVMBuild.txt<br class="">new file mode 100644<br class="">index 000000000000..dfabe72fcd2f<br class="">--- /dev/null<br class="">+++ b/llvm/lib/Frontend/OpenMP/LLVMBuild.txt<br class="">@@ -0,0 +1,21 @@<br class="">+;===- ./lib/Frontend/OpenMP/LLVMBuild.txt ----------------------*- Conf -*--===;<br class="">+;<br class="">+; Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.<br class="">+; See <a href="https://llvm.org/LICENSE.txt" class="">https://llvm.org/LICENSE.txt</a> for license information.<br class="">+; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception<br class="">+;<br class="">+;===------------------------------------------------------------------------===;<br class="">+;<br class="">+; This is an LLVMBuild description file for the components in this subdirectory.<br class="">+;<br class="">+; For more information on the LLVMBuild system, please see:<br class="">+;<br class="">+;   <a href="http://llvm.org/docs/LLVMBuild.html" class="">http://llvm.org/docs/LLVMBuild.html</a><br class="">+;<br class="">+;===------------------------------------------------------------------------===;<br class="">+<br class="">+[component_0]<br class="">+type = Library<br class="">+name = FrontendOpenMP<br class="">+parent = Frontend<br class="">+required_libraries = Core Support TransformUtils<br class=""><br class="">diff  --git a/llvm/lib/Frontend/OpenMP/OMPConstants.cpp b/llvm/lib/Frontend/OpenMP/OMPConstants.cpp<br class="">new file mode 100644<br class="">index 000000000000..994fb4e2fa84<br class="">--- /dev/null<br class="">+++ b/llvm/lib/Frontend/OpenMP/OMPConstants.cpp<br class="">@@ -0,0 +1,34 @@<br class="">+//===- OMPConstants.cpp - Helpers related to OpenMP code generation ---===//<br class="">+//<br class="">+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.<br class="">+// See <a href="https://llvm.org/LICENSE.txt" class="">https://llvm.org/LICENSE.txt</a> for license information.<br class="">+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#include "llvm/Frontend/OpenMP/OMPConstants.h"<br class="">+<br class="">+#include "llvm/ADT/StringRef.h"<br class="">+#include "llvm/ADT/StringSwitch.h"<br class="">+<br class="">+using namespace llvm;<br class="">+using namespace omp;<br class="">+<br class="">+Directive llvm::omp::getOpenMPDirectiveKind(StringRef Str) {<br class="">+  return llvm::StringSwitch<Directive>(Str)<br class="">+#define OMP_DIRECTIVE(Enum, Str) .Case(Str, Enum)<br class="">+#include "llvm/Frontend/OpenMP/OMPKinds.def"<br class="">+      .Default(OMPD_unknown);<br class="">+}<br class="">+<br class="">+StringRef llvm::omp::getOpenMPDirectiveName(Directive Kind) {<br class="">+  switch (Kind) {<br class="">+#define OMP_DIRECTIVE(Enum, Str)                                               \<br class="">+  case Enum:                                                                   \<br class="">+    return Str;<br class="">+#include "llvm/Frontend/OpenMP/OMPKinds.def"<br class="">+  }<br class="">+  llvm_unreachable("Invalid OpenMP directive kind");<br class="">+}<br class=""><br class="">diff  --git a/llvm/lib/LLVMBuild.txt b/llvm/lib/LLVMBuild.txt<br class="">index 4c039176267c..3f5383d9b1f1 100644<br class="">--- a/llvm/lib/LLVMBuild.txt<br class="">+++ b/llvm/lib/LLVMBuild.txt<br class="">@@ -24,6 +24,7 @@ subdirectories =<br class="">  DebugInfo<br class="">  Demangle<br class="">  ExecutionEngine<br class="">+ Frontend<br class="">  FuzzMutate<br class="">  LineEditor<br class="">  Linker<br class=""><br class=""><br class=""><br class="">_______________________________________________<br class="">llvm-commits mailing list<br class=""><a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a><br class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits<br class=""></div></div></blockquote></div><br class=""></div></body></html>