diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2015-12-28 07:25:51 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2015-12-28 07:25:51 +0000 |
commit | 6402bcad714d776a9ee2e6d427e0dfb363915032 (patch) | |
tree | 571204e42c6d32b251c44b528eb2f92630a33fa7 /clang/lib/Basic | |
parent | 401675ce5b6231606b1333fa0d228a440b1e747d (diff) | |
download | bcm5719-llvm-6402bcad714d776a9ee2e6d427e0dfb363915032.tar.gz bcm5719-llvm-6402bcad714d776a9ee2e6d427e0dfb363915032.zip |
[OPENMP 4.5] Sema/parsing support for extended format of 'schedule' clause.
OpenMP 4.0-3.1 supports the next format of ‘schedule’ clause: schedule(kind[, chunk_size])
Where kind can be one of ‘static’, ‘dynamic’, ‘guided’, ‘auto’ or ‘runtime’.
OpenMP 4.5 defines the format: schedule([modifier [, modifier]:]kind[, chunk_size])
Modifier can be one of ‘monotonic’, ‘nonmonotonic’ or ‘simd’.
llvm-svn: 256487
Diffstat (limited to 'clang/lib/Basic')
-rw-r--r-- | clang/lib/Basic/OpenMPKinds.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/clang/lib/Basic/OpenMPKinds.cpp b/clang/lib/Basic/OpenMPKinds.cpp index 1ac081510e8..577132dc144 100644 --- a/clang/lib/Basic/OpenMPKinds.cpp +++ b/clang/lib/Basic/OpenMPKinds.cpp @@ -87,8 +87,11 @@ unsigned clang::getOpenMPSimpleClauseType(OpenMPClauseKind Kind, #include "clang/Basic/OpenMPKinds.def" .Default(OMPC_PROC_BIND_unknown); case OMPC_schedule: - return llvm::StringSwitch<OpenMPScheduleClauseKind>(Str) -#define OPENMP_SCHEDULE_KIND(Name) .Case(#Name, OMPC_SCHEDULE_##Name) + return llvm::StringSwitch<unsigned>(Str) +#define OPENMP_SCHEDULE_KIND(Name) \ + .Case(#Name, static_cast<unsigned>(OMPC_SCHEDULE_##Name)) +#define OPENMP_SCHEDULE_MODIFIER(Name) \ + .Case(#Name, static_cast<unsigned>(OMPC_SCHEDULE_MODIFIER_##Name)) #include "clang/Basic/OpenMPKinds.def" .Default(OMPC_SCHEDULE_unknown); case OMPC_depend: @@ -173,12 +176,17 @@ const char *clang::getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, case OMPC_schedule: switch (Type) { case OMPC_SCHEDULE_unknown: + case OMPC_SCHEDULE_MODIFIER_last: return "unknown"; #define OPENMP_SCHEDULE_KIND(Name) \ - case OMPC_SCHEDULE_##Name: \ - return #Name; + case OMPC_SCHEDULE_##Name: \ + return #Name; +#define OPENMP_SCHEDULE_MODIFIER(Name) \ + case OMPC_SCHEDULE_MODIFIER_##Name: \ + return #Name; #include "clang/Basic/OpenMPKinds.def" } + llvm_unreachable("Invalid OpenMP 'schedule' clause type"); case OMPC_depend: switch (Type) { case OMPC_DEPEND_unknown: @@ -188,7 +196,7 @@ const char *clang::getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, return #Name; #include "clang/Basic/OpenMPKinds.def" } - llvm_unreachable("Invalid OpenMP 'schedule' clause type"); + llvm_unreachable("Invalid OpenMP 'depend' clause type"); case OMPC_linear: switch (Type) { case OMPC_LINEAR_unknown: |