summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-11-07 21:40:27 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-11-07 21:40:27 +0000
commit25265d0e7af83f30e64851458c29c5b0c01befeb (patch)
treecc5813e70cd0c3982a8ee72e48ff49ff391e07e2 /lib
parent4cae74bd7450c1ec29369229e50052dfac5c09d7 (diff)
downloadllvm-25265d0e7af83f30e64851458c29c5b0c01befeb.tar.gz
llvm-25265d0e7af83f30e64851458c29c5b0c01befeb.tar.bz2
llvm-25265d0e7af83f30e64851458c29c5b0c01befeb.tar.xz
Extract two methods. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144020 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/CodeGen/ExecutionDepsFix.cpp44
1 files changed, 26 insertions, 18 deletions
diff --git a/lib/CodeGen/ExecutionDepsFix.cpp b/lib/CodeGen/ExecutionDepsFix.cpp
index 7f04224720..8b002e7667 100644
--- a/lib/CodeGen/ExecutionDepsFix.cpp
+++ b/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