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 | |
| parent | 2216f73676b8112fa9d29c866fae3fa617dc401e (diff) | |
| download | bcm5719-llvm-736cf46c3e7ba4610f787b5bf7ade1aef561059c.tar.gz bcm5719-llvm-736cf46c3e7ba4610f787b5bf7ade1aef561059c.zip | |
Extract two methods.  No functional change.
llvm-svn: 144020
| -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 | 

