summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaOpenMP.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2015-08-30 15:12:28 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2015-08-30 15:12:28 +0000
commitfc600dc2ec249a9fa37b7a62847d1477e4b4bb2e (patch)
treee474ea4062e499697145c793a551d72a64a311c5 /clang/lib/Sema/SemaOpenMP.cpp
parent2985400a0e3437ddec523563b9403347c8bcd85f (diff)
downloadbcm5719-llvm-fc600dc2ec249a9fa37b7a62847d1477e4b4bb2e.tar.gz
bcm5719-llvm-fc600dc2ec249a9fa37b7a62847d1477e4b4bb2e.zip
[OpenMP] Make the filetered clause iterator a real iterator and type safe.
This replaces the filtered generic iterator with a type-specfic one based on dyn_cast instead of comparing the kind enum. This allows us to use range-based for loops and eliminates casts. No functionality change intended. llvm-svn: 246384
Diffstat (limited to 'clang/lib/Sema/SemaOpenMP.cpp')
-rw-r--r--clang/lib/Sema/SemaOpenMP.cpp22
1 files changed, 8 insertions, 14 deletions
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp
index 6b092a80de9..ea31260cc7a 100644
--- a/clang/lib/Sema/SemaOpenMP.cpp
+++ b/clang/lib/Sema/SemaOpenMP.cpp
@@ -3514,24 +3514,18 @@ CheckOpenMPLoop(OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr,
}
static Expr *getCollapseNumberExpr(ArrayRef<OMPClause *> Clauses) {
- auto &&CollapseFilter = [](const OMPClause *C) -> bool {
- return C->getClauseKind() == OMPC_collapse;
- };
- OMPExecutableDirective::filtered_clause_iterator<decltype(CollapseFilter)> I(
- Clauses, std::move(CollapseFilter));
- if (I)
- return cast<OMPCollapseClause>(*I)->getNumForLoops();
+ auto CollapseClauses =
+ OMPExecutableDirective::getClausesOfKind<OMPCollapseClause>(Clauses);
+ if (CollapseClauses.begin() != CollapseClauses.end())
+ return (*CollapseClauses.begin())->getNumForLoops();
return nullptr;
}
static Expr *getOrderedNumberExpr(ArrayRef<OMPClause *> Clauses) {
- auto &&OrderedFilter = [](const OMPClause *C) -> bool {
- return C->getClauseKind() == OMPC_ordered;
- };
- OMPExecutableDirective::filtered_clause_iterator<decltype(OrderedFilter)> I(
- Clauses, std::move(OrderedFilter));
- if (I)
- return cast<OMPOrderedClause>(*I)->getNumForLoops();
+ auto OrderedClauses =
+ OMPExecutableDirective::getClausesOfKind<OMPOrderedClause>(Clauses);
+ if (OrderedClauses.begin() != OrderedClauses.end())
+ return (*OrderedClauses.begin())->getNumForLoops();
return nullptr;
}
OpenPOWER on IntegriCloud