Index: llvm/trunk/lib/CodeGen/MachinePipeliner.cpp =================================================================== --- llvm/trunk/lib/CodeGen/MachinePipeliner.cpp +++ llvm/trunk/lib/CodeGen/MachinePipeliner.cpp @@ -1012,17 +1012,13 @@ }); for (unsigned C = 0; C < NumCycles; ++C) while (RI != RE) { - if ((*RI++)->canReserveResources(*MI)) { + if ((*RI)->canReserveResources(*MI)) { + (*RI)->reserveResources(*MI); ++ReservedCycles; break; } + RI++; } - // Start reserving resources using existing DFAs. - for (unsigned C = 0; C < ReservedCycles; ++C) { - --RI; - (*RI)->reserveResources(*MI); - } - LLVM_DEBUG(dbgs() << "ReservedCycles:" << ReservedCycles << ", NumCycles:" << NumCycles << "\n"); // Add new DFAs, if needed, to reserve resources. Index: llvm/trunk/test/CodeGen/PowerPC/sms-iterator.ll =================================================================== --- llvm/trunk/test/CodeGen/PowerPC/sms-iterator.ll +++ llvm/trunk/test/CodeGen/PowerPC/sms-iterator.ll @@ -5,7 +5,7 @@ %0 = type { i32, [16 x double] } -; CHECK: MII = 7 MAX_II = 17 +; CHECK: MII = 8 MAX_II = 18 define dso_local fastcc void @_ZN3povL9polysolveEiPdS0_() unnamed_addr #0 { br label %1