[PATCH] D127454: [OpenMP] Initial parsing and sema for 'parallel masked' construct
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
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
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
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
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
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) {