diff options
author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2015-12-01 07:49:23 +0000 |
---|---|---|
committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2015-12-01 07:49:23 +0000 |
commit | ff3b8b4c33e0eed67072b8f7279b22d90b5b4747 (patch) | |
tree | 5dea24f63c8eb45a5547afebf90dd7104d79d6f2 | |
parent | 5ec97a7b9b0dc633bb79453971287ac8662f7813 (diff) | |
download | bcm5719-llvm-ff3b8b4c33e0eed67072b8f7279b22d90b5b4747.tar.gz bcm5719-llvm-ff3b8b4c33e0eed67072b8f7279b22d90b5b4747.zip |
Introduce a range version of std::any_of, and use it in SCEV
Reviewers: dblaikie, pcc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D15063
llvm-svn: 254390
-rw-r--r-- | llvm/include/llvm/ADT/STLExtras.h | 8 | ||||
-rw-r--r-- | llvm/lib/Analysis/ScalarEvolution.cpp | 7 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/LinePrinter.cpp | 9 |
3 files changed, 14 insertions, 10 deletions
diff --git a/llvm/include/llvm/ADT/STLExtras.h b/llvm/include/llvm/ADT/STLExtras.h index 1bd3b291e0e..3655a20d883 100644 --- a/llvm/include/llvm/ADT/STLExtras.h +++ b/llvm/include/llvm/ADT/STLExtras.h @@ -371,6 +371,14 @@ bool all_of(R &&Range, UnaryPredicate &&P) { std::forward<UnaryPredicate>(P)); } +/// Provide wrappers to std::any_of which take ranges instead of having to pass +/// begin/end explicitly. +template <typename R, class UnaryPredicate> +bool any_of(R &&Range, UnaryPredicate &&P) { + return std::any_of(Range.begin(), Range.end(), + std::forward<UnaryPredicate>(P)); +} + //===----------------------------------------------------------------------===// // Extra additions to <memory> //===----------------------------------------------------------------------===// diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index 23daeb67d65..4c8b6e7de84 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -8403,8 +8403,7 @@ const SCEV *SCEVAddRecExpr::getNumIterationsInRange(ConstantRange Range, // The only time we can solve this is when we have all constant indices. // Otherwise, we cannot determine the overflow conditions. - if (std::any_of(op_begin(), op_end(), - [](const SCEV *Op) { return !isa<SCEVConstant>(Op);})) + if (any_of(operands(), [](const SCEV *Op) { return !isa<SCEVConstant>(Op); })) return SE.getCouldNotCompute(); // Okay at this point we know that all elements of the chrec are constants and @@ -9694,8 +9693,8 @@ bool SCEVUnionPredicate::implies(const SCEVPredicate *N) const { return false; auto &SCEVPreds = ScevPredsIt->second; - return std::any_of(SCEVPreds.begin(), SCEVPreds.end(), - [N](const SCEVPredicate *I) { return I->implies(N); }); + return any_of(SCEVPreds, + [N](const SCEVPredicate *I) { return I->implies(N); }); } const SCEV *SCEVUnionPredicate::getExpr() const { return nullptr; } diff --git a/llvm/tools/llvm-pdbdump/LinePrinter.cpp b/llvm/tools/llvm-pdbdump/LinePrinter.cpp index 4f3ee54c769..a43727f02b5 100644 --- a/llvm/tools/llvm-pdbdump/LinePrinter.cpp +++ b/llvm/tools/llvm-pdbdump/LinePrinter.cpp @@ -11,15 +11,12 @@ #include "llvm-pdbdump.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/Support/Regex.h" #include <algorithm> namespace { -template <class T, class Pred> bool any_of_range(T &&R, Pred P) { - return std::any_of(R.begin(), R.end(), P); -} - bool IsItemExcluded(llvm::StringRef Item, std::list<llvm::Regex> &IncludeFilters, std::list<llvm::Regex> &ExcludeFilters) { @@ -30,10 +27,10 @@ bool IsItemExcluded(llvm::StringRef Item, // Include takes priority over exclude. If the user specified include // filters, and none of them include this item, them item is gone. - if (!IncludeFilters.empty() && !any_of_range(IncludeFilters, match_pred)) + if (!IncludeFilters.empty() && !any_of(IncludeFilters, match_pred)) return true; - if (any_of_range(ExcludeFilters, match_pred)) + if (any_of(ExcludeFilters, match_pred)) return true; return false; |