aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/LoopInfo.cpp
diff options
context:
space:
mode:
authorManuel Jacob <me@manueljacob.de>2014-07-20 09:10:11 +0000
committerManuel Jacob <me@manueljacob.de>2014-07-20 09:10:11 +0000
commitd11beffef4f1117aceb9f2f5532b4a317c30c05a (patch)
treec0a3aa5e2d4225971366e16eac335aacf32f9eed /llvm/lib/Analysis/LoopInfo.cpp
parent4100ebd67b61abfb7fc7728e9af5dcc6e51327be (diff)
downloadllvm-d11beffef4f1117aceb9f2f5532b4a317c30c05a.zip
llvm-d11beffef4f1117aceb9f2f5532b4a317c30c05a.tar.gz
llvm-d11beffef4f1117aceb9f2f5532b4a317c30c05a.tar.bz2
[C++11] Add predecessors(BasicBlock *) / successors(BasicBlock *) iterator ranges.
Summary: This patch introduces two new iterator ranges and updates existing code to use it. No functional change intended. Test Plan: All tests (make check-all) still pass. Reviewers: dblaikie Reviewed By: dblaikie Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D4481 llvm-svn: 213474
Diffstat (limited to 'llvm/lib/Analysis/LoopInfo.cpp')
-rw-r--r--llvm/lib/Analysis/LoopInfo.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/llvm/lib/Analysis/LoopInfo.cpp b/llvm/lib/Analysis/LoopInfo.cpp
index 46c0eaa..a6d8b55 100644
--- a/llvm/lib/Analysis/LoopInfo.cpp
+++ b/llvm/lib/Analysis/LoopInfo.cpp
@@ -336,9 +336,8 @@ bool Loop::hasDedicatedExits() const {
SmallVector<BasicBlock *, 4> ExitBlocks;
getExitBlocks(ExitBlocks);
for (unsigned i = 0, e = ExitBlocks.size(); i != e; ++i)
- for (pred_iterator PI = pred_begin(ExitBlocks[i]),
- PE = pred_end(ExitBlocks[i]); PI != PE; ++PI)
- if (!contains(*PI))
+ for (BasicBlock *Pred : predecessors(ExitBlocks[i]))
+ if (!contains(Pred))
return false;
// All the requirements are met.
return true;
@@ -360,12 +359,12 @@ Loop::getUniqueExitBlocks(SmallVectorImpl<BasicBlock *> &ExitBlocks) const {
BasicBlock *current = *BI;
switchExitBlocks.clear();
- for (succ_iterator I = succ_begin(*BI), E = succ_end(*BI); I != E; ++I) {
+ for (BasicBlock *Succ : successors(*BI)) {
// If block is inside the loop then it is not a exit block.
- if (contains(*I))
+ if (contains(Succ))
continue;
- pred_iterator PI = pred_begin(*I);
+ pred_iterator PI = pred_begin(Succ);
BasicBlock *firstPred = *PI;
// If current basic block is this exit block's first predecessor
@@ -379,17 +378,17 @@ Loop::getUniqueExitBlocks(SmallVectorImpl<BasicBlock *> &ExitBlocks) const {
// then it is possible that there are multiple edges from current block
// to one exit block.
if (std::distance(succ_begin(current), succ_end(current)) <= 2) {
- ExitBlocks.push_back(*I);
+ ExitBlocks.push_back(Succ);
continue;
}
// In case of multiple edges from current block to exit block, collect
// only one edge in ExitBlocks. Use switchExitBlocks to keep track of
// duplicate edges.
- if (std::find(switchExitBlocks.begin(), switchExitBlocks.end(), *I)
+ if (std::find(switchExitBlocks.begin(), switchExitBlocks.end(), Succ)
== switchExitBlocks.end()) {
- switchExitBlocks.push_back(*I);
- ExitBlocks.push_back(*I);
+ switchExitBlocks.push_back(Succ);
+ ExitBlocks.push_back(Succ);
}
}
}