diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-11-07 21:40:27 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-11-07 21:40:27 +0000 |
| commit | 736cf46c3e7ba4610f787b5bf7ade1aef561059c (patch) | |
| tree | 32eb5eda2eb3dc78e84ca35aa4ea60cbc59b7f74 /llvm/lib/CodeGen | |
| parent | 2216f73676b8112fa9d29c866fae3fa617dc401e (diff) | |
| download | bcm5719-llvm-736cf46c3e7ba4610f787b5bf7ade1aef561059c.tar.gz bcm5719-llvm-736cf46c3e7ba4610f787b5bf7ade1aef561059c.zip | |
Extract two methods. No functional change.
llvm-svn: 144020
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/ExecutionDepsFix.cpp | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/llvm/lib/CodeGen/ExecutionDepsFix.cpp b/llvm/lib/CodeGen/ExecutionDepsFix.cpp index 7f04224720d..8b002e76672 100644 --- a/llvm/lib/CodeGen/ExecutionDepsFix.cpp +++ b/llvm/lib/CodeGen/ExecutionDepsFix.cpp @@ -149,6 +149,8 @@ private: bool Merge(DomainValue *A, DomainValue *B); void enterBasicBlock(MachineBasicBlock*); + void leaveBasicBlock(MachineBasicBlock*); + void visitInstr(MachineInstr*); void visitGenericInstr(MachineInstr*); void visitSoftInstr(MachineInstr*, unsigned mask); void visitHardInstr(MachineInstr*, unsigned domain); @@ -305,6 +307,27 @@ void ExeDepsFix::enterBasicBlock(MachineBasicBlock *MBB) { } } +void ExeDepsFix::leaveBasicBlock(MachineBasicBlock *MBB) { + // Save live registers at end of MBB - used by enterBasicBlock(). + if (LiveRegs) + LiveOuts.insert(std::make_pair(MBB, LiveRegs)); + LiveRegs = 0; +} + +void ExeDepsFix::visitInstr(MachineInstr *MI) { + if (MI->isDebugValue()) + return; + ++Distance; + std::pair<uint16_t, uint16_t> domp = TII->getExecutionDomain(MI); + if (domp.first) + if (domp.second) + visitSoftInstr(MI, domp.second); + else + visitHardInstr(MI, domp.first); + else if (LiveRegs) + visitGenericInstr(MI); +} + // A hard instruction only works in one domain. All input registers will be // forced into that domain. void ExeDepsFix::visitHardInstr(MachineInstr *mi, unsigned domain) { @@ -483,24 +506,9 @@ bool ExeDepsFix::runOnMachineFunction(MachineFunction &mf) { MachineBasicBlock *MBB = *DFI; enterBasicBlock(MBB); for (MachineBasicBlock::iterator I = MBB->begin(), E = MBB->end(); I != E; - ++I) { - MachineInstr *mi = I; - if (mi->isDebugValue()) continue; - ++Distance; - std::pair<uint16_t, uint16_t> domp = TII->getExecutionDomain(mi); - if (domp.first) - if (domp.second) - visitSoftInstr(mi, domp.second); - else - visitHardInstr(mi, domp.first); - else if (LiveRegs) - visitGenericInstr(mi); - } - - // Save live registers at end of MBB - used by enterBasicBlock(). - if (LiveRegs) - LiveOuts.insert(std::make_pair(MBB, LiveRegs)); - LiveRegs = 0; + ++I) + visitInstr(I); + leaveBasicBlock(MBB); } // Clear the LiveOuts vectors. Should we also collapse any remaining |

