[clang] 1d594fd - [Clang][OpenMP] Fixing Clang error for metadirective with multiple when clauses and no otherwise (#148583)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 5 07:32:47 PDT 2025
Author: Ritanya-B-Bharadwaj
Date: 2025-08-05T20:02:44+05:30
New Revision: 1d594fdb8d0d210893ae346bb6869343dd7a1949
URL: https://github.com/llvm/llvm-project/commit/1d594fdb8d0d210893ae346bb6869343dd7a1949
DIFF: https://github.com/llvm/llvm-project/commit/1d594fdb8d0d210893ae346bb6869343dd7a1949.diff
LOG: [Clang][OpenMP] Fixing Clang error for metadirective with multiple when clauses and no otherwise (#148583)
Fixing - https://github.com/llvm/llvm-project/issues/147336
Added:
Modified:
clang/lib/Parse/ParseOpenMP.cpp
clang/test/OpenMP/metadirective_messages.cpp
Removed:
################################################################################
diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp
index aa6a0c61a2c17..5db2f2e2ccf86 100644
--- a/clang/lib/Parse/ParseOpenMP.cpp
+++ b/clang/lib/Parse/ParseOpenMP.cpp
@@ -2704,7 +2704,7 @@ StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective(
// If no match is found and no otherwise clause is present, skip
// OMP5.2 Chapter 7.4: If no otherwise clause is specified the effect is as
// if one was specified without an associated directive variant.
- if (BestIdx == -1 && Idx == 1) {
+ if (BestIdx == -1 && Idx > 0) {
assert(Tok.is(tok::annot_pragma_openmp_end) &&
"Expecting the end of the pragma here");
ConsumeAnnotationToken();
diff --git a/clang/test/OpenMP/metadirective_messages.cpp b/clang/test/OpenMP/metadirective_messages.cpp
index 9d2934f8b1e10..7426f915bf99e 100644
--- a/clang/test/OpenMP/metadirective_messages.cpp
+++ b/clang/test/OpenMP/metadirective_messages.cpp
@@ -47,6 +47,10 @@ void foo() {
;
#pragma omp metadirective when(device = {arch(nvptx)} : parallel) xyz() //expected-error {{expected at least one clause on '#pragma omp metadirective' directive}}
;
+ int a = 0;
+ int b = 1;
+ #pragma omp metadirective when(user={condition(a)}: parallel for simd) when(user={condition(b)}: target teams distribute parallel for simd)
+ for (int i = 0; i < 10; ++i) {}
#endif
}
More information about the cfe-commits
mailing list