summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGOpenMPRuntime.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2019-11-22 11:42:08 -0500
committerAlexey Bataev <a.bataev@hotmail.com>2019-11-22 11:53:06 -0500
commit5459a905c23c03fad68e80b2dff23ca1ca3b7c7c (patch)
treec493b5943878b104325760d8e8dd8303ea9621f0 /clang/lib/CodeGen/CGOpenMPRuntime.cpp
parenta1955566282b98d5182877860b60d04029089788 (diff)
downloadbcm5719-llvm-5459a905c23c03fad68e80b2dff23ca1ca3b7c7c.tar.gz
bcm5719-llvm-5459a905c23c03fad68e80b2dff23ca1ca3b7c7c.zip
[OPENMP]Simplify processing of context selectors, NFC.
Diffstat (limited to 'clang/lib/CodeGen/CGOpenMPRuntime.cpp')
-rw-r--r--clang/lib/CodeGen/CGOpenMPRuntime.cpp76
1 files changed, 27 insertions, 49 deletions
diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
index c2d895b4ea4..f80249483c7 100644
--- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp
+++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -11138,33 +11138,22 @@ bool checkContext<OMP_CTX_SET_device, OMP_CTX_kind, CodeGenModule &>(
bool matchesContext(CodeGenModule &CGM,
const CompleteOMPContextSelectorData &ContextData) {
for (const OMPContextSelectorData &Data : ContextData) {
- switch (Data.CtxSet) {
- case OMP_CTX_SET_implementation:
- switch (Data.Ctx) {
- case OMP_CTX_vendor:
- if (!checkContext<OMP_CTX_SET_implementation, OMP_CTX_vendor>(Data))
- return false;
- break;
- case OMP_CTX_kind:
- case OMP_CTX_unknown:
- llvm_unreachable(
- "Unexpected context selector kind in implementation set.");
- }
+ switch (Data.Ctx) {
+ case OMP_CTX_vendor:
+ assert(Data.CtxSet == OMP_CTX_SET_implementation &&
+ "Expected implementation context selector set.");
+ if (!checkContext<OMP_CTX_SET_implementation, OMP_CTX_vendor>(Data))
+ return false;
break;
- case OMP_CTX_SET_device:
- switch (Data.Ctx) {
- case OMP_CTX_kind:
- if (!checkContext<OMP_CTX_SET_device, OMP_CTX_kind, CodeGenModule &>(
- Data, CGM))
- return false;
- break;
- case OMP_CTX_vendor:
- case OMP_CTX_unknown:
- llvm_unreachable("Unexpected context selector kind in device set.");
- }
+ case OMP_CTX_kind:
+ assert(Data.CtxSet == OMP_CTX_SET_device &&
+ "Expected device context selector set.");
+ if (!checkContext<OMP_CTX_SET_device, OMP_CTX_kind, CodeGenModule &>(Data,
+ CGM))
+ return false;
break;
- case OMP_CTX_SET_unknown:
- llvm_unreachable("Unexpected context selector set kind.");
+ case OMP_CTX_unknown:
+ llvm_unreachable("Unknown context selector kind.");
}
}
return true;
@@ -11184,32 +11173,21 @@ translateAttrToContextSelectorData(ASTContext &C,
Data.back().Ctx = Ctx;
const Expr *Score = *std::next(A->scores_begin(), I);
Data.back().Score = Score->EvaluateKnownConstInt(C);
- switch (CtxSet) {
- case OMP_CTX_SET_implementation:
- switch (Ctx) {
- case OMP_CTX_vendor:
- Data.back().Names =
- llvm::makeArrayRef(A->implVendors_begin(), A->implVendors_end());
- break;
- case OMP_CTX_kind:
- case OMP_CTX_unknown:
- llvm_unreachable(
- "Unexpected context selector kind in implementation set.");
- }
+ switch (Ctx) {
+ case OMP_CTX_vendor:
+ assert(CtxSet == OMP_CTX_SET_implementation &&
+ "Expected implementation context selector set.");
+ Data.back().Names =
+ llvm::makeArrayRef(A->implVendors_begin(), A->implVendors_end());
break;
- case OMP_CTX_SET_device:
- switch (Ctx) {
- case OMP_CTX_kind:
- Data.back().Names =
- llvm::makeArrayRef(A->deviceKinds_begin(), A->deviceKinds_end());
- break;
- case OMP_CTX_vendor:
- case OMP_CTX_unknown:
- llvm_unreachable("Unexpected context selector kind in device set.");
- }
+ case OMP_CTX_kind:
+ assert(CtxSet == OMP_CTX_SET_device &&
+ "Expected device context selector set.");
+ Data.back().Names =
+ llvm::makeArrayRef(A->deviceKinds_begin(), A->deviceKinds_end());
break;
- case OMP_CTX_SET_unknown:
- llvm_unreachable("Unexpected context selector set kind.");
+ case OMP_CTX_unknown:
+ llvm_unreachable("Unknown context selector kind.");
}
}
return Data;
OpenPOWER on IntegriCloud