diff options
author | Robert Imschweiler <robert.imschweiler@amd.com> | 2025-06-24 21:12:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-24 21:12:40 +0200 |
commit | f624ba2d9d2143a0c2679ee9792cf455f965adec (patch) | |
tree | 9972bd391d8473a37c3ea2219583f4d3aaac6c06 /clang/lib/Basic/OpenMPKinds.cpp | |
parent | 4d21da002a056c64231fb89ee9e4eba90080e9bb (diff) | |
download | llvm-f624ba2d9d2143a0c2679ee9792cf455f965adec.zip llvm-f624ba2d9d2143a0c2679ee9792cf455f965adec.tar.gz llvm-f624ba2d9d2143a0c2679ee9792cf455f965adec.tar.bz2 |
[OpenMP][clang] 6.0: parsing/sema for num_threads 'strict' modifier (#145490)
Implement parsing and semantic analysis support for the optional
'strict' modifier of the num_threads clause. This modifier has been
introduced in OpenMP 6.0, section 12.1.2.
Note: this is basically 1:1 https://reviews.llvm.org/D138328.
Diffstat (limited to 'clang/lib/Basic/OpenMPKinds.cpp')
-rw-r--r-- | clang/lib/Basic/OpenMPKinds.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/clang/lib/Basic/OpenMPKinds.cpp b/clang/lib/Basic/OpenMPKinds.cpp index a451fc7..d3d393bd 100644 --- a/clang/lib/Basic/OpenMPKinds.cpp +++ b/clang/lib/Basic/OpenMPKinds.cpp @@ -185,11 +185,19 @@ unsigned clang::getOpenMPSimpleClauseType(OpenMPClauseKind Kind, StringRef Str, #define OPENMP_ALLOCATE_MODIFIER(Name) .Case(#Name, OMPC_ALLOCATE_##Name) #include "clang/Basic/OpenMPKinds.def" .Default(OMPC_ALLOCATE_unknown); + case OMPC_num_threads: { + unsigned Type = llvm::StringSwitch<unsigned>(Str) +#define OPENMP_NUMTHREADS_MODIFIER(Name) .Case(#Name, OMPC_NUMTHREADS_##Name) +#include "clang/Basic/OpenMPKinds.def" + .Default(OMPC_NUMTHREADS_unknown); + if (LangOpts.OpenMP < 60) + return OMPC_NUMTHREADS_unknown; + return Type; + } case OMPC_unknown: case OMPC_threadprivate: case OMPC_if: case OMPC_final: - case OMPC_num_threads: case OMPC_safelen: case OMPC_simdlen: case OMPC_sizes: @@ -520,11 +528,20 @@ const char *clang::getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, #include "clang/Basic/OpenMPKinds.def" } llvm_unreachable("Invalid OpenMP 'allocate' clause modifier"); + case OMPC_num_threads: + switch (Type) { + case OMPC_NUMTHREADS_unknown: + return "unknown"; +#define OPENMP_NUMTHREADS_MODIFIER(Name) \ + case OMPC_NUMTHREADS_##Name: \ + return #Name; +#include "clang/Basic/OpenMPKinds.def" + } + llvm_unreachable("Invalid OpenMP 'num_threads' clause modifier"); case OMPC_unknown: case OMPC_threadprivate: case OMPC_if: case OMPC_final: - case OMPC_num_threads: case OMPC_safelen: case OMPC_simdlen: case OMPC_sizes: |