From: Akira Hatanaka Date: Wed, 5 Oct 2011 01:57:46 +0000 (+0000) Subject: Clean up Filler::findDelayInstr. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7d8e04d5f199228ad385d6005f46f0defa23039b;p=oota-llvm.git Clean up Filler::findDelayInstr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141152 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Mips/MipsDelaySlotFiller.cpp b/lib/Target/Mips/MipsDelaySlotFiller.cpp index 690f4ffb385..ac4cdcbb558 100644 --- a/lib/Target/Mips/MipsDelaySlotFiller.cpp +++ b/lib/Target/Mips/MipsDelaySlotFiller.cpp @@ -128,10 +128,6 @@ bool Filler::findDelayInstr(MachineBasicBlock &MBB, MachineBasicBlock::iterator &Filler) { SmallSet RegDefs; SmallSet RegUses; - bool sawLoad = false; - bool sawStore = false; - - MachineBasicBlock::iterator I = slot; // Call's delay filler can def some of call's uses. if (slot->getDesc().isCall()) @@ -139,22 +135,21 @@ bool Filler::findDelayInstr(MachineBasicBlock &MBB, else insertDefsUses(slot, RegDefs, RegUses); - bool done = false; - - while (!done) { - done = (I == MBB.begin()); - - if (!done) - --I; + bool sawLoad = false; + bool sawStore = false; + for (MachineBasicBlock::reverse_iterator I(slot); I != MBB.rend(); ++I) { // skip debug value if (I->isDebugValue()) continue; + // Convert to forward iterator. + MachineBasicBlock::iterator FI(next(I).base()); + if (I->hasUnmodeledSideEffects() || I->isInlineAsm() || I->isLabel() - || I == LastFiller + || FI == LastFiller || I->getDesc().isPseudo() // // Should not allow: @@ -163,12 +158,12 @@ bool Filler::findDelayInstr(MachineBasicBlock &MBB, ) break; - if (delayHasHazard(I, sawLoad, sawStore, RegDefs, RegUses)) { - insertDefsUses(I, RegDefs, RegUses); + if (delayHasHazard(FI, sawLoad, sawStore, RegDefs, RegUses)) { + insertDefsUses(FI, RegDefs, RegUses); continue; } - Filler = I; + Filler = FI; return true; }