void analyzePHINodes(const MachineFunction& Fn);
/// Split critical edges where necessary for good coalescer performance.
- bool SplitPHIEdges(MachineFunction &MF, MachineBasicBlock &MBB);
-
- /// isLiveOut - Determine if Reg is live out from MBB, when not
- /// considering PHI nodes. This means that Reg is either killed by
- /// a successor block or passed through one.
- bool isLiveOut(unsigned Reg, const MachineBasicBlock &MBB,
- LiveVariables &LV);
-
- /// isLiveIn - Determine if Reg is live in to MBB, not considering PHI
- /// source registers. This means that Reg is either killed by MBB or passes
- /// through it.
- bool isLiveIn(unsigned Reg, const MachineBasicBlock &MBB,
- LiveVariables &LV);
+ bool SplitPHIEdges(MachineFunction &MF, MachineBasicBlock &MBB,
+ LiveVariables &LV);
/// SplitCriticalEdge - Split a critical edge from A to B by
/// inserting a new MBB. Update branches in A and PHI instructions
MachineBasicBlock *SplitCriticalEdge(MachineBasicBlock *A,
MachineBasicBlock *B);
- // FindCopyInsertPoint - Find a safe place in MBB to insert a copy from
- // SrcReg. This needs to be after any def or uses of SrcReg, but before
- // any subsequent point where control flow might jump out of the basic
- // block.
+ /// FindCopyInsertPoint - Find a safe place in MBB to insert a copy from
+ /// SrcReg when following the CFG edge to SuccMBB. This needs to be after
+ /// any def of SrcReg, but before any subsequent point where control flow
+ /// might jump out of the basic block.
MachineBasicBlock::iterator FindCopyInsertPoint(MachineBasicBlock &MBB,
+ MachineBasicBlock &SuccMBB,
unsigned SrcReg);
// SkipPHIsAndLabels - Copies need to be inserted after phi nodes and