diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar/GVN.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/GVN.cpp | 15 |
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; } |