[llvm] r205005 - R600: avoid calling std::next on an iterator that might be end()

Tim Northover tnorthover at apple.com
Fri Mar 28 06:52:57 PDT 2014


Author: tnorthover
Date: Fri Mar 28 08:52:56 2014
New Revision: 205005

URL: http://llvm.org/viewvc/llvm-project?rev=205005&view=rev
Log:
R600: avoid calling std::next on an iterator that might be end()

This was causing my llc to go into an infinite loop on
CodeGen/R600/address-space.ll (just triggered recently by some allocator
changes).

Modified:
    llvm/trunk/lib/Target/R600/SILowerControlFlow.cpp

Modified: llvm/trunk/lib/Target/R600/SILowerControlFlow.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/SILowerControlFlow.cpp?rev=205005&r1=205004&r2=205005&view=diff
==============================================================================
--- llvm/trunk/lib/Target/R600/SILowerControlFlow.cpp (original)
+++ llvm/trunk/lib/Target/R600/SILowerControlFlow.cpp Fri Mar 28 08:52:56 2014
@@ -439,10 +439,10 @@ bool SILowerControlFlowPass::runOnMachin
        BI != BE; ++BI) {
 
     MachineBasicBlock &MBB = *BI;
-    for (MachineBasicBlock::iterator I = MBB.begin(), Next = std::next(I);
-         I != MBB.end(); I = Next) {
-
+    MachineBasicBlock::iterator I, Next;
+    for (I = MBB.begin(); I != MBB.end(); I = Next) {
       Next = std::next(I);
+
       MachineInstr &MI = *I;
       if (TII->isDS(MI.getOpcode())) {
         NeedM0 = true;





More information about the llvm-commits mailing list