|
STATISTIC (NumFunc, "Number of functions") |
|
STATISTIC (NumCandidates, "Number of shrink-wrapping candidates") |
|
STATISTIC (NumCandidatesDropped, "Number of shrink-wrapping candidates dropped because of frequency") |
|
INITIALIZE_PASS_BEGIN (ShrinkWrapLegacy, DEBUG_TYPE, "Shrink Wrap Pass", false, false) INITIALIZE_PASS_END(ShrinkWrapLegacy |
| template<typename ListOfBBs, typename DominanceAnalysis> |
|
| static MachineBasicBlock * |
FindIDom (MachineBasicBlock &Block, ListOfBBs BBs, DominanceAnalysis &Dom, bool Strict=true) |
|
Helper function to find the immediate (post) dominator. |
| static bool |
isAnalyzableBB (const TargetInstrInfo &TII, MachineBasicBlock &Entry) |
| static bool |
hasDirtyPred (const DenseSet< const MachineBasicBlock * > &ReachableByDirty, const MachineBasicBlock &MBB) |
|
Determines if any predecessor of MBB is on the path from block that has use or def of CSRs/FI to MBB. |
| static void |
markAllReachable (DenseSet< const MachineBasicBlock * > &Visited, const MachineBasicBlock &MBB) |
|
Derives the list of all the basic blocks reachable from MBB. |
| static void |
collectBlocksReachableByDirty (const DenseSet< const MachineBasicBlock * > &DirtyBBs, DenseSet< const MachineBasicBlock * > &ReachableByDirty) |
|
Collect blocks reachable by use or def of CSRs/FI. |
| static bool |
isSaveReachableThroughClean (const MachineBasicBlock *SavePoint, ArrayRef< MachineBasicBlock * > CleanPreds) |
| static void |
updateTerminator (MachineBasicBlock *BBToUpdate, MachineBasicBlock *NMBB, const TargetInstrInfo *TII) |
|
This function updates the branches post restore point split. |
| static MachineBasicBlock * |
tryToSplitRestore (MachineBasicBlock *MBB, ArrayRef< MachineBasicBlock * > DirtyPreds, const TargetInstrInfo *TII) |
|
This function splits the restore point and returns new restore point/BB. |
| static void |
rollbackRestoreSplit (MachineFunction &MF, MachineBasicBlock *NMBB, MachineBasicBlock *MBB, ArrayRef< MachineBasicBlock * > DirtyPreds, const TargetInstrInfo *TII) |
|
This function undoes the restore point split done earlier. |
| static bool |
giveUpWithRemarks (MachineOptimizationRemarkEmitter *ORE, StringRef RemarkName, StringRef RemarkMessage, const DiagnosticLocation &Loc, const MachineBasicBlock *MBB) |