diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-07-21 17:06:51 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-07-21 17:06:51 +0000 |
commit | 6c99015fe2c1814f793530adc96f48050081612e (patch) | |
tree | 6dd9bd97817fed538386fcedbf363d38470ace2a /llvm/lib/Transforms/Utils/LoopUnroll.cpp | |
parent | 1aaad6970cee96c214cc663bc7ae2cecb6fd1e7c (diff) | |
download | llvm-6c99015fe2c1814f793530adc96f48050081612e.zip llvm-6c99015fe2c1814f793530adc96f48050081612e.tar.gz llvm-6c99015fe2c1814f793530adc96f48050081612e.tar.bz2 |
Revert "[C++11] Add predecessors(BasicBlock *) / successors(BasicBlock *) iterator ranges."
This reverts commit r213474 (and r213475), which causes a miscompile on
a stage2 LTO build. I'll reply on the list in a moment.
llvm-svn: 213562
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUnroll.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopUnroll.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUnroll.cpp b/llvm/lib/Transforms/Utils/LoopUnroll.cpp index 3b0e813..ab1c25a 100644 --- a/llvm/lib/Transforms/Utils/LoopUnroll.cpp +++ b/llvm/lib/Transforms/Utils/LoopUnroll.cpp @@ -328,10 +328,11 @@ bool llvm::UnrollLoop(Loop *L, unsigned Count, unsigned TripCount, L->addBasicBlockToLoop(New, LI->getBase()); // Add phi entries for newly created values to all exit blocks. - for (BasicBlock *Succ : successors(*BB)) { - if (L->contains(Succ)) + for (succ_iterator SI = succ_begin(*BB), SE = succ_end(*BB); + SI != SE; ++SI) { + if (L->contains(*SI)) continue; - for (BasicBlock::iterator BBI = Succ->begin(); + for (BasicBlock::iterator BBI = (*SI)->begin(); PHINode *phi = dyn_cast<PHINode>(BBI); ++BBI) { Value *Incoming = phi->getIncomingValueForBlock(*BB); ValueToValueMapTy::iterator It = LastValueMap.find(Incoming); @@ -413,10 +414,11 @@ bool llvm::UnrollLoop(Loop *L, unsigned Count, unsigned TripCount, // Remove phi operands at this loop exit if (Dest != LoopExit) { BasicBlock *BB = Latches[i]; - for (BasicBlock *Succ : successors(BB)) { - if (Succ == Headers[i]) + for (succ_iterator SI = succ_begin(BB), SE = succ_end(BB); + SI != SE; ++SI) { + if (*SI == Headers[i]) continue; - for (BasicBlock::iterator BBI = Succ->begin(); + for (BasicBlock::iterator BBI = (*SI)->begin(); PHINode *Phi = dyn_cast<PHINode>(BBI); ++BBI) { Phi->removeIncomingValue(BB, false); } |