summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/GVN.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Transforms/Scalar/GVN.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/GVN.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/Scalar/GVN.cpp b/llvm/lib/Transforms/Scalar/GVN.cpp
index 3ed7e3e5a3e..106eba099ca 100644
--- a/llvm/lib/Transforms/Scalar/GVN.cpp
+++ b/llvm/lib/Transforms/Scalar/GVN.cpp
@@ -1555,7 +1555,9 @@ bool GVN::PerformLoadPRE(LoadInst *LI, AvailValInBlkVect &ValuesPerBlock,
FullyAvailableBlocks[UnavailableBlocks[i]] = false;
SmallVector<BasicBlock *, 4> CriticalEdgePred;
- for (BasicBlock *Pred : predecessors(LoadBB)) {
+ for (pred_iterator PI = pred_begin(LoadBB), E = pred_end(LoadBB);
+ PI != E; ++PI) {
+ BasicBlock *Pred = *PI;
if (IsValueFullyAvailableInBlock(Pred, FullyAvailableBlocks, 0)) {
continue;
}
@@ -2481,7 +2483,9 @@ bool GVN::performPRE(Function &F) {
BasicBlock *PREPred = nullptr;
predMap.clear();
- for (BasicBlock *P : predecessors(CurrentBlock)) {
+ for (pred_iterator PI = pred_begin(CurrentBlock),
+ PE = pred_end(CurrentBlock); PI != PE; ++PI) {
+ BasicBlock *P = *PI;
// We're not interested in PRE where the block is its
// own predecessor, or in blocks with predecessors
// that are not reachable.
@@ -2709,13 +2713,14 @@ void GVN::addDeadBlock(BasicBlock *BB) {
for (SmallVectorImpl<BasicBlock *>::iterator I = Dom.begin(),
E = Dom.end(); I != E; I++) {
BasicBlock *B = *I;
- for (BasicBlock *S : successors(B)) {
+ for (succ_iterator SI = succ_begin(B), SE = succ_end(B); SI != SE; SI++) {
+ BasicBlock *S = *SI;
if (DeadBlocks.count(S))
continue;
bool AllPredDead = true;
- for (BasicBlock *Pred : predecessors(S))
- if (!DeadBlocks.count(Pred)) {
+ for (pred_iterator PI = pred_begin(S), PE = pred_end(S); PI != PE; PI++)
+ if (!DeadBlocks.count(*PI)) {
AllPredDead = false;
break;
}
OpenPOWER on IntegriCloud