diff --git a/lib/Target/Sparc/DelaySlotFiller.cpp b/lib/Target/Sparc/DelaySlotFiller.cpp index 036b1dd6589..10449ad5246 100644 --- a/lib/Target/Sparc/DelaySlotFiller.cpp +++ b/lib/Target/Sparc/DelaySlotFiller.cpp @@ -63,14 +63,18 @@ static bool hasDelaySlot (unsigned Opcode) { } /// runOnMachineBasicBlock - Fill in delay slots for the given basic block. +/// Currently, we fill delay slots with NOPs. We assume there is only one +/// delay slot per delayed instruction. /// bool Filler::runOnMachineBasicBlock (MachineBasicBlock &MBB) { + bool Changed = false; for (MachineBasicBlock::iterator I = MBB.begin (); I != MBB.end (); ++I) if (hasDelaySlot (I->getOpcode ())) { MachineBasicBlock::iterator J = I; ++J; - MBB.insert (J, BuildMI (V8::NOP, 0)); + BuildMI (MBB, J, V8::NOP, 0); ++FilledSlots; + Changed = true; } - return false; + return Changed; } diff --git a/lib/Target/SparcV8/DelaySlotFiller.cpp b/lib/Target/SparcV8/DelaySlotFiller.cpp index 036b1dd6589..10449ad5246 100644 --- a/lib/Target/SparcV8/DelaySlotFiller.cpp +++ b/lib/Target/SparcV8/DelaySlotFiller.cpp @@ -63,14 +63,18 @@ static bool hasDelaySlot (unsigned Opcode) { } /// runOnMachineBasicBlock - Fill in delay slots for the given basic block. +/// Currently, we fill delay slots with NOPs. We assume there is only one +/// delay slot per delayed instruction. /// bool Filler::runOnMachineBasicBlock (MachineBasicBlock &MBB) { + bool Changed = false; for (MachineBasicBlock::iterator I = MBB.begin (); I != MBB.end (); ++I) if (hasDelaySlot (I->getOpcode ())) { MachineBasicBlock::iterator J = I; ++J; - MBB.insert (J, BuildMI (V8::NOP, 0)); + BuildMI (MBB, J, V8::NOP, 0); ++FilledSlots; + Changed = true; } - return false; + return Changed; }