git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176330
91177308-0d34-0410-b5e6-
96231b3b80d8
cl::desc("Fill all delay slots with NOPs."),
cl::Hidden);
cl::desc("Fill all delay slots with NOPs."),
cl::Hidden);
-// This option can be used to silence complaints by machine verifier passes.
-static cl::opt<bool> SkipDelaySlotFiller(
- "skip-mips-delay-filler",
- cl::init(false),
- cl::desc("Skip MIPS' delay slot filling pass."),
- cl::Hidden);
-
static cl::opt<bool> DisableForwardSearch(
"disable-mips-df-forward-search",
cl::init(true),
static cl::opt<bool> DisableForwardSearch(
"disable-mips-df-forward-search",
cl::init(true),
virtual bool hasHazard_(const MachineInstr &MI);
/// Update Defs and Uses. Return true if there exist dependences that
virtual bool hasHazard_(const MachineInstr &MI);
/// Update Defs and Uses. Return true if there exist dependences that
- /// disqualify the delay slot candidate between V and values in Uses and Defs.
+ /// disqualify the delay slot candidate between V and values in Uses and
+ /// Defs.
bool updateDefsUses(const Value *V, bool MayStore);
/// Get the list of underlying objects of MI's memory operand.
bool updateDefsUses(const Value *V, bool MayStore);
/// Get the list of underlying objects of MI's memory operand.
}
bool runOnMachineFunction(MachineFunction &F) {
}
bool runOnMachineFunction(MachineFunction &F) {
- if (SkipDelaySlotFiller)
- return false;
-
bool Changed = false;
for (MachineFunction::iterator FI = F.begin(), FE = F.end();
FI != FE; ++FI)
bool Changed = false;
for (MachineFunction::iterator FI = F.begin(), FE = F.end();
FI != FE; ++FI)
/// moved to the delay slot. Returns true on success.
template<typename IterTy>
bool searchRange(MachineBasicBlock &MBB, IterTy Begin, IterTy End,
/// moved to the delay slot. Returns true on success.
template<typename IterTy>
bool searchRange(MachineBasicBlock &MBB, IterTy Begin, IterTy End,
- RegDefsUses &RegDU, InspectMemInstr &IM, IterTy &Filler) const;
+ RegDefsUses &RegDU, InspectMemInstr &IM,
+ IterTy &Filler) const;
/// This function searches in the backward direction for an instruction that
/// can be moved to the delay slot. Returns true on success.
/// This function searches in the backward direction for an instruction that
/// can be moved to the delay slot. Returns true on success.
bool searchForward(MachineBasicBlock &MBB, Iter Slot) const;
/// This function searches MBB's successor blocks for an instruction that
bool searchForward(MachineBasicBlock &MBB, Iter Slot) const;
/// This function searches MBB's successor blocks for an instruction that
- /// can be moved to the delay slot and inserts clones of the instruction into
- /// the successor blocks.
+ /// can be moved to the delay slot and inserts clones of the instruction
+ /// into the successor blocks.
bool searchSuccBBs(MachineBasicBlock &MBB, Iter Slot) const;
bool searchSuccBBs(MachineBasicBlock &MBB, Iter Slot) const;
- /// Pick a successor block of MBB. Return NULL if MBB doesn't have a successor
- /// block that is not a landing pad.
+ /// Pick a successor block of MBB. Return NULL if MBB doesn't have a
+ /// successor block that is not a landing pad.
MachineBasicBlock *selectSuccBB(MachineBasicBlock &B) const;
/// This function analyzes MBB and returns an instruction with an unoccupied
MachineBasicBlock *selectSuccBB(MachineBasicBlock &B) const;
/// This function analyzes MBB and returns an instruction with an unoccupied