diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2015-08-30 15:12:28 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2015-08-30 15:12:28 +0000 |
commit | fc600dc2ec249a9fa37b7a62847d1477e4b4bb2e (patch) | |
tree | e474ea4062e499697145c793a551d72a64a311c5 /clang/lib/Sema/SemaOpenMP.cpp | |
parent | 2985400a0e3437ddec523563b9403347c8bcd85f (diff) | |
download | bcm5719-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.cpp | 22 |
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; } |