diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/Basic/OpenMPKinds.cpp')
-rw-r--r-- | contrib/llvm-project/clang/lib/Basic/OpenMPKinds.cpp | 50 |
1 files changed, 21 insertions, 29 deletions
diff --git a/contrib/llvm-project/clang/lib/Basic/OpenMPKinds.cpp b/contrib/llvm-project/clang/lib/Basic/OpenMPKinds.cpp index cae61ad4f2e3..5c19d60cbd6e 100644 --- a/contrib/llvm-project/clang/lib/Basic/OpenMPKinds.cpp +++ b/contrib/llvm-project/clang/lib/Basic/OpenMPKinds.cpp @@ -20,8 +20,8 @@ using namespace clang; using namespace llvm::omp; -unsigned clang::getOpenMPSimpleClauseType(OpenMPClauseKind Kind, - StringRef Str) { +unsigned clang::getOpenMPSimpleClauseType(OpenMPClauseKind Kind, StringRef Str, + unsigned OpenMPVersion) { switch (Kind) { case OMPC_default: return llvm::StringSwitch<unsigned>(Str) @@ -51,26 +51,29 @@ unsigned clang::getOpenMPSimpleClauseType(OpenMPClauseKind Kind, #define OPENMP_LINEAR_KIND(Name) .Case(#Name, OMPC_LINEAR_##Name) #include "clang/Basic/OpenMPKinds.def" .Default(OMPC_LINEAR_unknown); - case OMPC_map: - return llvm::StringSwitch<unsigned>(Str) + case OMPC_map: { + unsigned Type = llvm::StringSwitch<unsigned>(Str) #define OPENMP_MAP_KIND(Name) \ .Case(#Name, static_cast<unsigned>(OMPC_MAP_##Name)) #define OPENMP_MAP_MODIFIER_KIND(Name) \ .Case(#Name, static_cast<unsigned>(OMPC_MAP_MODIFIER_##Name)) #include "clang/Basic/OpenMPKinds.def" .Default(OMPC_MAP_unknown); + if (OpenMPVersion < 51 && Type == OMPC_MAP_MODIFIER_present) + return OMPC_MAP_MODIFIER_unknown; + return Type; + } case OMPC_to: - return llvm::StringSwitch<unsigned>(Str) -#define OPENMP_TO_MODIFIER_KIND(Name) \ - .Case(#Name, static_cast<unsigned>(OMPC_TO_MODIFIER_##Name)) + case OMPC_from: { + unsigned Type = llvm::StringSwitch<unsigned>(Str) +#define OPENMP_MOTION_MODIFIER_KIND(Name) \ + .Case(#Name, static_cast<unsigned>(OMPC_MOTION_MODIFIER_##Name)) #include "clang/Basic/OpenMPKinds.def" - .Default(OMPC_TO_MODIFIER_unknown); - case OMPC_from: - return llvm::StringSwitch<unsigned>(Str) -#define OPENMP_FROM_MODIFIER_KIND(Name) \ - .Case(#Name, static_cast<unsigned>(OMPC_FROM_MODIFIER_##Name)) -#include "clang/Basic/OpenMPKinds.def" - .Default(OMPC_FROM_MODIFIER_unknown); + .Default(OMPC_MOTION_MODIFIER_unknown); + if (OpenMPVersion < 51 && Type == OMPC_MOTION_MODIFIER_present) + return OMPC_MOTION_MODIFIER_unknown; + return Type; + } case OMPC_dist_schedule: return llvm::StringSwitch<OpenMPDistScheduleClauseKind>(Str) #define OPENMP_DIST_SCHEDULE_KIND(Name) .Case(#Name, OMPC_DIST_SCHEDULE_##Name) @@ -254,29 +257,18 @@ const char *clang::getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, } llvm_unreachable("Invalid OpenMP 'map' clause type"); case OMPC_to: - switch (Type) { - case OMPC_TO_MODIFIER_unknown: - return "unknown"; -#define OPENMP_TO_MODIFIER_KIND(Name) \ - case OMPC_TO_MODIFIER_##Name: \ - return #Name; -#include "clang/Basic/OpenMPKinds.def" - default: - break; - } - llvm_unreachable("Invalid OpenMP 'to' clause type"); case OMPC_from: switch (Type) { - case OMPC_FROM_MODIFIER_unknown: + case OMPC_MOTION_MODIFIER_unknown: return "unknown"; -#define OPENMP_FROM_MODIFIER_KIND(Name) \ - case OMPC_FROM_MODIFIER_##Name: \ +#define OPENMP_MOTION_MODIFIER_KIND(Name) \ + case OMPC_MOTION_MODIFIER_##Name: \ return #Name; #include "clang/Basic/OpenMPKinds.def" default: break; } - llvm_unreachable("Invalid OpenMP 'from' clause type"); + llvm_unreachable("Invalid OpenMP 'to' or 'from' clause type"); case OMPC_dist_schedule: switch (Type) { case OMPC_DIST_SCHEDULE_unknown: |