diff options
Diffstat (limited to 'clang/lib/Basic/OpenMPKinds.cpp')
| -rw-r--r-- | clang/lib/Basic/OpenMPKinds.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/clang/lib/Basic/OpenMPKinds.cpp b/clang/lib/Basic/OpenMPKinds.cpp index 1c59a9091b4a..6c31b0824eb8 100644 --- a/clang/lib/Basic/OpenMPKinds.cpp +++ b/clang/lib/Basic/OpenMPKinds.cpp @@ -104,6 +104,11 @@ unsigned clang::getOpenMPSimpleClauseType(OpenMPClauseKind Kind, StringRef Str, .Case(#Name, OMPC_ATOMIC_DEFAULT_MEM_ORDER_##Name) #include "clang/Basic/OpenMPKinds.def" .Default(OMPC_ATOMIC_DEFAULT_MEM_ORDER_unknown); + case OMPC_fail: + return static_cast<unsigned int>(llvm::StringSwitch<llvm::omp::Clause>(Str) +#define OPENMP_ATOMIC_FAIL_MODIFIER(Name) .Case(#Name, OMPC_##Name) +#include "clang/Basic/OpenMPKinds.def" + .Default(OMPC_unknown)); case OMPC_device_type: return llvm::StringSwitch<OpenMPDeviceType>(Str) #define OPENMP_DEVICE_TYPE_KIND(Name) .Case(#Name, OMPC_DEVICE_TYPE_##Name) @@ -434,6 +439,11 @@ const char *clang::getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, #include "clang/Basic/OpenMPKinds.def" } llvm_unreachable("Invalid OpenMP 'depend' clause type"); + case OMPC_fail: { + OpenMPClauseKind CK = static_cast<OpenMPClauseKind>(Type); + return getOpenMPClauseName(CK).data(); + llvm_unreachable("Invalid OpenMP 'fail' clause modifier"); + } case OMPC_device: switch (Type) { case OMPC_DEVICE_unknown: @@ -748,6 +758,13 @@ bool clang::isOpenMPCombinedParallelADirective(OpenMPDirectiveKind DKind) { DKind == OMPD_parallel_sections; } +bool clang::needsTaskBasedThreadLimit(OpenMPDirectiveKind DKind) { + return DKind == OMPD_target || DKind == OMPD_target_parallel || + DKind == OMPD_target_parallel_for || + DKind == OMPD_target_parallel_for_simd || DKind == OMPD_target_simd || + DKind == OMPD_target_parallel_loop; +} + void clang::getOpenMPCaptureRegions( SmallVectorImpl<OpenMPDirectiveKind> &CaptureRegions, OpenMPDirectiveKind DKind) { @@ -848,6 +865,7 @@ void clang::getOpenMPCaptureRegions( case OMPD_atomic: case OMPD_target_data: case OMPD_distribute_simd: + case OMPD_scope: case OMPD_dispatch: CaptureRegions.push_back(OMPD_unknown); break; @@ -881,3 +899,10 @@ void clang::getOpenMPCaptureRegions( llvm_unreachable("Unknown OpenMP directive"); } } + +bool clang::checkFailClauseParameter(OpenMPClauseKind FailClauseParameter) { + return FailClauseParameter == llvm::omp::OMPC_acquire || + FailClauseParameter == llvm::omp::OMPC_relaxed || + FailClauseParameter == llvm::omp::OMPC_seq_cst; +} + |
