diff options
author | Sam Parker <sam.parker@arm.com> | 2020-02-20 14:58:08 +0000 |
---|---|---|
committer | Sam Parker <sam.parker@arm.com> | 2020-02-20 14:59:42 +0000 |
commit | 659500c0c9657fc6e8d2d184b507f4e4da99297e (patch) | |
tree | d755f1c7262026caf3df81ae9e6fd407da6c117d /llvm/lib/CodeGen/ReachingDefAnalysis.cpp | |
parent | 083717cf49968ebb973d73b448709d45e3fc0e99 (diff) | |
download | llvm-659500c0c9657fc6e8d2d184b507f4e4da99297e.zip llvm-659500c0c9657fc6e8d2d184b507f4e4da99297e.tar.gz llvm-659500c0c9657fc6e8d2d184b507f4e4da99297e.tar.bz2 |
[NFC][RDA] Break-up initialization code
Separate out the initialization code from the loop traversal so
that the analysis can be reset and re-run by a user.
Diffstat (limited to 'llvm/lib/CodeGen/ReachingDefAnalysis.cpp')
-rw-r--r-- | llvm/lib/CodeGen/ReachingDefAnalysis.cpp | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/llvm/lib/CodeGen/ReachingDefAnalysis.cpp b/llvm/lib/CodeGen/ReachingDefAnalysis.cpp index 03122ae..c14fa8c 100644 --- a/llvm/lib/CodeGen/ReachingDefAnalysis.cpp +++ b/llvm/lib/CodeGen/ReachingDefAnalysis.cpp @@ -136,38 +136,44 @@ void ReachingDefAnalysis::processBasicBlock( bool ReachingDefAnalysis::runOnMachineFunction(MachineFunction &mf) { MF = &mf; TRI = MF->getSubtarget().getRegisterInfo(); + LLVM_DEBUG(dbgs() << "********** REACHING DEFINITION ANALYSIS **********\n"); + init(); + traverse(); + return false; +} +void ReachingDefAnalysis::releaseMemory() { + // Clear the internal vectors. + MBBOutRegsInfos.clear(); + MBBReachingDefs.clear(); + InstIds.clear(); LiveRegs.clear(); - NumRegUnits = TRI->getNumRegUnits(); - - MBBReachingDefs.resize(mf.getNumBlockIDs()); +} - LLVM_DEBUG(dbgs() << "********** REACHING DEFINITION ANALYSIS **********\n"); +void ReachingDefAnalysis::reset() { + releaseMemory(); + init(); + traverse(); +} +void ReachingDefAnalysis::init() { + NumRegUnits = TRI->getNumRegUnits(); + MBBReachingDefs.resize(MF->getNumBlockIDs()); // Initialize the MBBOutRegsInfos - MBBOutRegsInfos.resize(mf.getNumBlockIDs()); + MBBOutRegsInfos.resize(MF->getNumBlockIDs()); + LoopTraversal Traversal; + TraversedMBBOrder = Traversal.traverse(*MF); +} +void ReachingDefAnalysis::traverse() { // Traverse the basic blocks. - LoopTraversal Traversal; - LoopTraversal::TraversalOrder TraversedMBBOrder = Traversal.traverse(mf); - for (LoopTraversal::TraversedMBBInfo TraversedMBB : TraversedMBBOrder) { + for (LoopTraversal::TraversedMBBInfo TraversedMBB : TraversedMBBOrder) processBasicBlock(TraversedMBB); - } - // Sorting all reaching defs found for a ceartin reg unit in a given BB. for (MBBDefsInfo &MBBDefs : MBBReachingDefs) { for (MBBRegUnitDefs &RegUnitDefs : MBBDefs) llvm::sort(RegUnitDefs); } - - return false; -} - -void ReachingDefAnalysis::releaseMemory() { - // Clear the internal vectors. - MBBOutRegsInfos.clear(); - MBBReachingDefs.clear(); - InstIds.clear(); } int ReachingDefAnalysis::getReachingDef(MachineInstr *MI, int PhysReg) const { |