diff options
-rw-r--r-- | lib/Target/Sparc/DelaySlotFiller.cpp | 8 | ||||
-rw-r--r-- | lib/Target/SparcV8/DelaySlotFiller.cpp | 8 |
2 files changed, 12 insertions, 4 deletions
diff --git a/lib/Target/Sparc/DelaySlotFiller.cpp b/lib/Target/Sparc/DelaySlotFiller.cpp index 036b1dd..10449ad 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 036b1dd..10449ad 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; } |