[PATCH] D127454: [OpenMP] Initial parsing and sema for 'parallel masked' construct

2022-06-16 Thread Jennifer Yu via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGbb83f8e70bd1: [OpenMP] Initial parsing and sema for 
parallel masked construct (authored by jyu2).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D127454

Files:
  clang/bindings/python/clang/cindex.py
  clang/include/clang-c/Index.h
  clang/include/clang/AST/RecursiveASTVisitor.h
  clang/include/clang/AST/StmtOpenMP.h
  clang/include/clang/Basic/StmtNodes.td
  clang/include/clang/Sema/Sema.h
  clang/include/clang/Serialization/ASTBitCodes.h
  clang/lib/AST/StmtOpenMP.cpp
  clang/lib/AST/StmtPrinter.cpp
  clang/lib/AST/StmtProfile.cpp
  clang/lib/Basic/OpenMPKinds.cpp
  clang/lib/CodeGen/CGStmt.cpp
  clang/lib/Parse/ParseOpenMP.cpp
  clang/lib/Sema/SemaExceptionSpec.cpp
  clang/lib/Sema/SemaOpenMP.cpp
  clang/lib/Sema/TreeTransform.h
  clang/lib/Serialization/ASTReaderStmt.cpp
  clang/lib/Serialization/ASTWriterStmt.cpp
  clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
  clang/test/Analysis/cfg-openmp.cpp
  clang/test/OpenMP/nesting_of_regions.cpp
  clang/test/OpenMP/parallel_masked_ast_print.cpp
  clang/test/OpenMP/parallel_masked_copyin_messages.cpp
  clang/test/OpenMP/parallel_masked_default_messages.cpp
  clang/test/OpenMP/parallel_masked_firstprivate_messages.cpp
  clang/test/OpenMP/parallel_masked_if_messages.cpp
  clang/test/OpenMP/parallel_masked_message.cpp
  clang/test/OpenMP/parallel_masked_num_threads_messages.cpp
  clang/test/OpenMP/parallel_masked_private_messages.cpp
  clang/test/OpenMP/parallel_masked_proc_bind_messages.cpp
  clang/test/OpenMP/parallel_masked_reduction_messages.cpp
  clang/test/OpenMP/parallel_masked_shared_messages.cpp
  clang/tools/libclang/CIndex.cpp
  clang/tools/libclang/CXCursor.cpp
  llvm/include/llvm/Frontend/OpenMP/OMP.td

Index: llvm/include/llvm/Frontend/OpenMP/OMP.td
===
--- llvm/include/llvm/Frontend/OpenMP/OMP.td
+++ llvm/include/llvm/Frontend/OpenMP/OMP.td
@@ -862,6 +862,21 @@
 VersionedClause
   ];
 }
+def OMP_ParallelMasked : Directive<"parallel masked"> {
+  let allowedClauses = [
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause
+  ];
+}
 def OMP_ParallelSections : Directive<"parallel sections"> {
   let allowedClauses = [
 VersionedClause,
Index: clang/tools/libclang/CXCursor.cpp
===
--- clang/tools/libclang/CXCursor.cpp
+++ clang/tools/libclang/CXCursor.cpp
@@ -694,6 +694,9 @@
   case Stmt::OMPParallelMasterDirectiveClass:
 K = CXCursor_OMPParallelMasterDirective;
 break;
+  case Stmt::OMPParallelMaskedDirectiveClass:
+K = CXCursor_OMPParallelMaskedDirective;
+break;
   case Stmt::OMPParallelSectionsDirectiveClass:
 K = CXCursor_OMPParallelSectionsDirective;
 break;
Index: clang/tools/libclang/CIndex.cpp
===
--- clang/tools/libclang/CIndex.cpp
+++ clang/tools/libclang/CIndex.cpp
@@ -2152,6 +2152,7 @@
   void VisitOMPParallelForDirective(const OMPParallelForDirective *D);
   void VisitOMPParallelForSimdDirective(const OMPParallelForSimdDirective *D);
   void VisitOMPParallelMasterDirective(const OMPParallelMasterDirective *D);
+  void VisitOMPParallelMaskedDirective(const OMPParallelMaskedDirective *D);
   void VisitOMPParallelSectionsDirective(const OMPParallelSectionsDirective *D);
   void VisitOMPTaskDirective(const OMPTaskDirective *D);
   void VisitOMPTaskyieldDirective(const OMPTaskyieldDirective *D);
@@ -3073,6 +3074,11 @@
   VisitOMPExecutableDirective(D);
 }
 
+void EnqueueVisitor::VisitOMPParallelMaskedDirective(
+const OMPParallelMaskedDirective *D) {
+  VisitOMPExecutableDirective(D);
+}
+
 void EnqueueVisitor::VisitOMPParallelSectionsDirective(
 const OMPParallelSectionsDirective *D) {
   VisitOMPExecutableDirective(D);
@@ -5766,6 +5772,8 @@
 return cxstring::createRef("OMPParallelForSimdDirective");
   case CXCursor_OMPParallelMasterDirective:
 return cxstring::createRef("OMPParallelMasterDirective");
+  case CXCursor_OMPParallelMaskedDirective:
+return cxstring::createRef("OMPParallelMaskedDirective");
   case CXCursor_OMPParallelSectionsDirective:
 return cxstring::createRef("OMPParallelSectionsDirective");
   case CXCursor_OMPTaskDirective:
Index: clang/test/OpenMP/parallel_masked_shared_messages.cpp
===
--- /dev/null
+++ clang/test/OpenMP/parallel_masked_shared_messages.cpp
@@ -0,0 +1,120 @@
+// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s -Wuninitialized
+
+// RUN: %clang_cc1 -verify -fopenmp-simd 

[PATCH] D127454: [OpenMP] Initial parsing and sema for 'parallel masked' construct

2022-06-15 Thread Alexey Bataev via Phabricator via cfe-commits
ABataev accepted this revision.
ABataev added a comment.
This revision is now accepted and ready to land.

LG


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D127454

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


[PATCH] D127454: [OpenMP] Initial parsing and sema for 'parallel masked' construct

2022-06-14 Thread Fazlay Rabbi via Phabricator via cfe-commits
mdfazlay added inline comments.



Comment at: clang/include/clang-c/Index.h:2641
*/
-  CXCursor_TranslationUnit = 300,
+  CXCursor_TranslationUnit = 350,
 

ABataev wrote:
> Does this change affect anything else in the compiler?
We had to add and keep the CXCursor_OMPParallelMaskedDirective with other 
OpenMP directives. I believe it doesn't affect anything else in the compiler. 
We have made necessary changes in "clang/bindings/python/clang/cindex.py" to 
reflect the new value of CXCursor_TranslationUnit.



Comment at: clang/include/clang/AST/StmtOpenMP.h:2315
+///
+class OMPParallelMaskedDirective : public OMPExecutableDirective {
+  friend class ASTStmtReader;

ABataev wrote:
> `final`
Added in the new diff.



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D127454

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


[PATCH] D127454: [OpenMP] Initial parsing and sema for 'parallel masked' construct

2022-06-14 Thread Fazlay Rabbi via Phabricator via cfe-commits
mdfazlay updated this revision to Diff 436994.

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D127454

Files:
  clang/bindings/python/clang/cindex.py
  clang/include/clang-c/Index.h
  clang/include/clang/AST/RecursiveASTVisitor.h
  clang/include/clang/AST/StmtOpenMP.h
  clang/include/clang/Basic/StmtNodes.td
  clang/include/clang/Sema/Sema.h
  clang/include/clang/Serialization/ASTBitCodes.h
  clang/lib/AST/StmtOpenMP.cpp
  clang/lib/AST/StmtPrinter.cpp
  clang/lib/AST/StmtProfile.cpp
  clang/lib/Basic/OpenMPKinds.cpp
  clang/lib/CodeGen/CGStmt.cpp
  clang/lib/Parse/ParseOpenMP.cpp
  clang/lib/Sema/SemaExceptionSpec.cpp
  clang/lib/Sema/SemaOpenMP.cpp
  clang/lib/Sema/TreeTransform.h
  clang/lib/Serialization/ASTReaderStmt.cpp
  clang/lib/Serialization/ASTWriterStmt.cpp
  clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
  clang/test/Analysis/cfg-openmp.cpp
  clang/test/OpenMP/nesting_of_regions.cpp
  clang/test/OpenMP/parallel_masked_ast_print.cpp
  clang/test/OpenMP/parallel_masked_copyin_messages.cpp
  clang/test/OpenMP/parallel_masked_default_messages.cpp
  clang/test/OpenMP/parallel_masked_firstprivate_messages.cpp
  clang/test/OpenMP/parallel_masked_if_messages.cpp
  clang/test/OpenMP/parallel_masked_message.cpp
  clang/test/OpenMP/parallel_masked_num_threads_messages.cpp
  clang/test/OpenMP/parallel_masked_private_messages.cpp
  clang/test/OpenMP/parallel_masked_proc_bind_messages.cpp
  clang/test/OpenMP/parallel_masked_reduction_messages.cpp
  clang/test/OpenMP/parallel_masked_shared_messages.cpp
  clang/tools/libclang/CIndex.cpp
  clang/tools/libclang/CXCursor.cpp
  llvm/include/llvm/Frontend/OpenMP/OMP.td

Index: llvm/include/llvm/Frontend/OpenMP/OMP.td
===
--- llvm/include/llvm/Frontend/OpenMP/OMP.td
+++ llvm/include/llvm/Frontend/OpenMP/OMP.td
@@ -861,6 +861,21 @@
 VersionedClause
   ];
 }
+def OMP_ParallelMasked : Directive<"parallel masked"> {
+  let allowedClauses = [
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause
+  ];
+}
 def OMP_ParallelSections : Directive<"parallel sections"> {
   let allowedClauses = [
 VersionedClause,
Index: clang/tools/libclang/CXCursor.cpp
===
--- clang/tools/libclang/CXCursor.cpp
+++ clang/tools/libclang/CXCursor.cpp
@@ -694,6 +694,9 @@
   case Stmt::OMPParallelMasterDirectiveClass:
 K = CXCursor_OMPParallelMasterDirective;
 break;
+  case Stmt::OMPParallelMaskedDirectiveClass:
+K = CXCursor_OMPParallelMaskedDirective;
+break;
   case Stmt::OMPParallelSectionsDirectiveClass:
 K = CXCursor_OMPParallelSectionsDirective;
 break;
Index: clang/tools/libclang/CIndex.cpp
===
--- clang/tools/libclang/CIndex.cpp
+++ clang/tools/libclang/CIndex.cpp
@@ -2152,6 +2152,7 @@
   void VisitOMPParallelForDirective(const OMPParallelForDirective *D);
   void VisitOMPParallelForSimdDirective(const OMPParallelForSimdDirective *D);
   void VisitOMPParallelMasterDirective(const OMPParallelMasterDirective *D);
+  void VisitOMPParallelMaskedDirective(const OMPParallelMaskedDirective *D);
   void VisitOMPParallelSectionsDirective(const OMPParallelSectionsDirective *D);
   void VisitOMPTaskDirective(const OMPTaskDirective *D);
   void VisitOMPTaskyieldDirective(const OMPTaskyieldDirective *D);
@@ -3073,6 +3074,11 @@
   VisitOMPExecutableDirective(D);
 }
 
+void EnqueueVisitor::VisitOMPParallelMaskedDirective(
+const OMPParallelMaskedDirective *D) {
+  VisitOMPExecutableDirective(D);
+}
+
 void EnqueueVisitor::VisitOMPParallelSectionsDirective(
 const OMPParallelSectionsDirective *D) {
   VisitOMPExecutableDirective(D);
@@ -5766,6 +5772,8 @@
 return cxstring::createRef("OMPParallelForSimdDirective");
   case CXCursor_OMPParallelMasterDirective:
 return cxstring::createRef("OMPParallelMasterDirective");
+  case CXCursor_OMPParallelMaskedDirective:
+return cxstring::createRef("OMPParallelMaskedDirective");
   case CXCursor_OMPParallelSectionsDirective:
 return cxstring::createRef("OMPParallelSectionsDirective");
   case CXCursor_OMPTaskDirective:
Index: clang/test/OpenMP/parallel_masked_shared_messages.cpp
===
--- /dev/null
+++ clang/test/OpenMP/parallel_masked_shared_messages.cpp
@@ -0,0 +1,120 @@
+// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s -Wuninitialized
+
+// RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s -Wuninitialized
+
+void foo() {
+}
+
+bool foobool(int argc) {
+  return argc;
+}
+
+struct S1; // expected-note {{declared here}}
+extern S1 a;
+class S2 {
+  mutable int a;
+
+public:
+  

[PATCH] D127454: [OpenMP] Initial parsing and sema for 'parallel masked' construct

2022-06-14 Thread Alexey Bataev via Phabricator via cfe-commits
ABataev added inline comments.



Comment at: clang/include/clang-c/Index.h:2641
*/
-  CXCursor_TranslationUnit = 300,
+  CXCursor_TranslationUnit = 350,
 

Does this change affect anything else in the compiler?



Comment at: clang/include/clang/AST/StmtOpenMP.h:2315
+///
+class OMPParallelMaskedDirective : public OMPExecutableDirective {
+  friend class ASTStmtReader;

`final`


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D127454

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


[PATCH] D127454: [OpenMP] Initial parsing and sema for 'parallel masked' construct

2022-06-13 Thread Fazlay Rabbi via Phabricator via cfe-commits
mdfazlay updated this revision to Diff 436589.
mdfazlay added a comment.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

Added erroneous tests, nesting of regions test and analysis tests.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D127454

Files:
  clang/include/clang-c/Index.h
  clang/include/clang/AST/RecursiveASTVisitor.h
  clang/include/clang/AST/StmtOpenMP.h
  clang/include/clang/Basic/StmtNodes.td
  clang/include/clang/Sema/Sema.h
  clang/include/clang/Serialization/ASTBitCodes.h
  clang/lib/AST/StmtOpenMP.cpp
  clang/lib/AST/StmtPrinter.cpp
  clang/lib/AST/StmtProfile.cpp
  clang/lib/Basic/OpenMPKinds.cpp
  clang/lib/CodeGen/CGStmt.cpp
  clang/lib/Parse/ParseOpenMP.cpp
  clang/lib/Sema/SemaExceptionSpec.cpp
  clang/lib/Sema/SemaOpenMP.cpp
  clang/lib/Sema/TreeTransform.h
  clang/lib/Serialization/ASTReaderStmt.cpp
  clang/lib/Serialization/ASTWriterStmt.cpp
  clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
  clang/test/Analysis/cfg-openmp.cpp
  clang/test/OpenMP/nesting_of_regions.cpp
  clang/test/OpenMP/parallel_masked_ast_print.cpp
  clang/test/OpenMP/parallel_masked_copyin_messages.cpp
  clang/test/OpenMP/parallel_masked_default_messages.cpp
  clang/test/OpenMP/parallel_masked_firstprivate_messages.cpp
  clang/test/OpenMP/parallel_masked_if_messages.cpp
  clang/test/OpenMP/parallel_masked_message.cpp
  clang/test/OpenMP/parallel_masked_num_threads_messages.cpp
  clang/test/OpenMP/parallel_masked_private_messages.cpp
  clang/test/OpenMP/parallel_masked_proc_bind_messages.cpp
  clang/test/OpenMP/parallel_masked_reduction_messages.cpp
  clang/test/OpenMP/parallel_masked_shared_messages.cpp
  clang/tools/libclang/CIndex.cpp
  clang/tools/libclang/CXCursor.cpp
  llvm/include/llvm/Frontend/OpenMP/OMP.td

Index: llvm/include/llvm/Frontend/OpenMP/OMP.td
===
--- llvm/include/llvm/Frontend/OpenMP/OMP.td
+++ llvm/include/llvm/Frontend/OpenMP/OMP.td
@@ -861,6 +861,21 @@
 VersionedClause
   ];
 }
+def OMP_ParallelMasked : Directive<"parallel masked"> {
+  let allowedClauses = [
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause,
+VersionedClause
+  ];
+}
 def OMP_ParallelSections : Directive<"parallel sections"> {
   let allowedClauses = [
 VersionedClause,
Index: clang/tools/libclang/CXCursor.cpp
===
--- clang/tools/libclang/CXCursor.cpp
+++ clang/tools/libclang/CXCursor.cpp
@@ -694,6 +694,9 @@
   case Stmt::OMPParallelMasterDirectiveClass:
 K = CXCursor_OMPParallelMasterDirective;
 break;
+  case Stmt::OMPParallelMaskedDirectiveClass:
+K = CXCursor_OMPParallelMaskedDirective;
+break;
   case Stmt::OMPParallelSectionsDirectiveClass:
 K = CXCursor_OMPParallelSectionsDirective;
 break;
Index: clang/tools/libclang/CIndex.cpp
===
--- clang/tools/libclang/CIndex.cpp
+++ clang/tools/libclang/CIndex.cpp
@@ -2152,6 +2152,7 @@
   void VisitOMPParallelForDirective(const OMPParallelForDirective *D);
   void VisitOMPParallelForSimdDirective(const OMPParallelForSimdDirective *D);
   void VisitOMPParallelMasterDirective(const OMPParallelMasterDirective *D);
+  void VisitOMPParallelMaskedDirective(const OMPParallelMaskedDirective *D);
   void VisitOMPParallelSectionsDirective(const OMPParallelSectionsDirective *D);
   void VisitOMPTaskDirective(const OMPTaskDirective *D);
   void VisitOMPTaskyieldDirective(const OMPTaskyieldDirective *D);
@@ -3073,6 +3074,11 @@
   VisitOMPExecutableDirective(D);
 }
 
+void EnqueueVisitor::VisitOMPParallelMaskedDirective(
+const OMPParallelMaskedDirective *D) {
+  VisitOMPExecutableDirective(D);
+}
+
 void EnqueueVisitor::VisitOMPParallelSectionsDirective(
 const OMPParallelSectionsDirective *D) {
   VisitOMPExecutableDirective(D);
@@ -5766,6 +5772,8 @@
 return cxstring::createRef("OMPParallelForSimdDirective");
   case CXCursor_OMPParallelMasterDirective:
 return cxstring::createRef("OMPParallelMasterDirective");
+  case CXCursor_OMPParallelMaskedDirective:
+return cxstring::createRef("OMPParallelMaskedDirective");
   case CXCursor_OMPParallelSectionsDirective:
 return cxstring::createRef("OMPParallelSectionsDirective");
   case CXCursor_OMPTaskDirective:
Index: clang/test/OpenMP/parallel_masked_shared_messages.cpp
===
--- /dev/null
+++ clang/test/OpenMP/parallel_masked_shared_messages.cpp
@@ -0,0 +1,120 @@
+// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s -Wuninitialized
+
+// RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s -Wuninitialized
+
+void foo() {
+}
+
+bool foobool(int argc) {