Author: Shilei Tian Date: 2021-12-13T19:18:28-05:00 New Revision: d762c3d905baf18d0f17a24799c9c4517b3c95fa
URL: https://github.com/llvm/llvm-project/commit/d762c3d905baf18d0f17a24799c9c4517b3c95fa DIFF: https://github.com/llvm/llvm-project/commit/d762c3d905baf18d0f17a24799c9c4517b3c95fa.diff LOG: [NFC][Clang][OpenMP] Use switch-case statement to process clauses of atomic directive This patch makes the process of clauses of atomic directive more clear and preparation for the support for `atomic compare capture`. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D115586 Added: Modified: clang/lib/Sema/SemaOpenMP.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 9672b0ac60a8..eb18afdccb32 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -10934,9 +10934,11 @@ StmtResult Sema::ActOnOpenMPAtomicDirective(ArrayRef<OMPClause *> Clauses, OpenMPClauseKind MemOrderKind = OMPC_unknown; SourceLocation MemOrderLoc; for (const OMPClause *C : Clauses) { - if (C->getClauseKind() == OMPC_read || C->getClauseKind() == OMPC_write || - C->getClauseKind() == OMPC_update || - C->getClauseKind() == OMPC_capture) { + switch (C->getClauseKind()) { + case OMPC_read: + case OMPC_write: + case OMPC_update: + case OMPC_capture: { if (AtomicKind != OMPC_unknown) { Diag(C->getBeginLoc(), diag::err_omp_atomic_several_clauses) << SourceRange(C->getBeginLoc(), C->getEndLoc()); @@ -10946,12 +10948,13 @@ StmtResult Sema::ActOnOpenMPAtomicDirective(ArrayRef<OMPClause *> Clauses, AtomicKind = C->getClauseKind(); AtomicKindLoc = C->getBeginLoc(); } + break; } - if (C->getClauseKind() == OMPC_seq_cst || - C->getClauseKind() == OMPC_acq_rel || - C->getClauseKind() == OMPC_acquire || - C->getClauseKind() == OMPC_release || - C->getClauseKind() == OMPC_relaxed) { + case OMPC_seq_cst: + case OMPC_acq_rel: + case OMPC_acquire: + case OMPC_release: + case OMPC_relaxed: { if (MemOrderKind != OMPC_unknown) { Diag(C->getBeginLoc(), diag::err_omp_several_mem_order_clauses) << getOpenMPDirectiveName(OMPD_atomic) << 0 @@ -10962,6 +10965,13 @@ StmtResult Sema::ActOnOpenMPAtomicDirective(ArrayRef<OMPClause *> Clauses, MemOrderKind = C->getClauseKind(); MemOrderLoc = C->getBeginLoc(); } + break; + } + // The following clauses are allowed, but we don't need to do anything here. + case OMPC_hint: + break; + default: + llvm_unreachable("unknown clause is encountered"); } } // OpenMP 5.0, 2.17.7 atomic Construct, Restrictions _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits