diff options
| author | Owen Anderson <resistor@mac.com> | 2008-05-30 22:37:27 +0000 | 
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2008-05-30 22:37:27 +0000 | 
| commit | c5e21e4f38136b3874fdb0e302056c6b20e1ff2f (patch) | |
| tree | 8ff28724c6d0d3b99df981a270a920273e9c76e4 /llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp | |
| parent | 5df4326d78dd252425a5465948d16477fb4bd5f7 (diff) | |
| download | bcm5719-llvm-c5e21e4f38136b3874fdb0e302056c6b20e1ff2f.tar.gz bcm5719-llvm-c5e21e4f38136b3874fdb0e302056c6b20e1ff2f.zip | |
The coalescer doesn't need LiveVariables now that we have register use iterators.
llvm-svn: 51790
Diffstat (limited to 'llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp | 20 | 
1 files changed, 6 insertions, 14 deletions
| diff --git a/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp b/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp index ce5235c3192..5cd6dd9da15 100644 --- a/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp +++ b/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp @@ -17,7 +17,6 @@  #include "VirtRegMap.h"  #include "llvm/CodeGen/LiveIntervalAnalysis.h"  #include "llvm/Value.h" -#include "llvm/CodeGen/LiveVariables.h"  #include "llvm/CodeGen/MachineFrameInfo.h"  #include "llvm/CodeGen/MachineInstr.h"  #include "llvm/CodeGen/MachineLoopInfo.h" @@ -66,7 +65,6 @@ void SimpleRegisterCoalescing::getAnalysisUsage(AnalysisUsage &AU) const {    AU.addPreservedID(MachineDominatorsID);    AU.addPreservedID(PHIEliminationID);    AU.addPreservedID(TwoAddressInstructionPassID); -  AU.addRequired<LiveVariables>();    AU.addRequired<LiveIntervals>();    AU.addRequired<MachineLoopInfo>();    MachineFunctionPass::getAnalysisUsage(AU); @@ -967,10 +965,10 @@ bool SimpleRegisterCoalescing::JoinCopy(CopyRec &TheCopy, bool &Again) {          // if this will cause a high use density interval to target a smaller          // set of registers.          if (SmallRegSize > Threshold || LargeRegSize > Threshold) { -          LiveVariables::VarInfo &svi = lv_->getVarInfo(LargeReg); -          LiveVariables::VarInfo &dvi = lv_->getVarInfo(SmallReg); -          if ((float)dvi.NumUses / SmallRegSize < -              (float)svi.NumUses / LargeRegSize) { +          if ((float)std::distance(mri_->use_begin(SmallReg), +                                   mri_->use_end()) / SmallRegSize < +              (float)std::distance(mri_->use_begin(LargeReg), +                                   mri_->use_end()) / LargeRegSize) {              Again = true;  // May be possible to coalesce later.              return false;            } @@ -1026,9 +1024,9 @@ bool SimpleRegisterCoalescing::JoinCopy(CopyRec &TheCopy, bool &Again) {        // do not join them, instead mark the physical register as its allocation        // preference.        unsigned Length = JoinVInt.getSize() / InstrSlots::NUM; -      LiveVariables::VarInfo &vi = lv_->getVarInfo(JoinVReg);        if (Length > Threshold && -          (((float)vi.NumUses / Length) < (1.0 / Threshold))) { +          (((float)std::distance(mri_->use_begin(JoinVReg), +                              mri_->use_end()) / Length) < (1.0 / Threshold))) {          JoinVInt.preference = JoinPReg;          ++numAborts;          DOUT << "\tMay tie down a physical register, abort!\n"; @@ -1111,11 +1109,6 @@ bool SimpleRegisterCoalescing::JoinCopy(CopyRec &TheCopy, bool &Again) {      for (const unsigned *AS = tri_->getSubRegisters(DstReg); *AS; ++AS)        li_->getOrCreateInterval(*AS).MergeInClobberRanges(*ResSrcInt,                                                   li_->getVNInfoAllocator()); -  } else { -    // Merge use info if the destination is a virtual register. -    LiveVariables::VarInfo& dVI = lv_->getVarInfo(DstReg); -    LiveVariables::VarInfo& sVI = lv_->getVarInfo(SrcReg); -    dVI.NumUses += sVI.NumUses;    }    // If this is a EXTRACT_SUBREG, make sure the result of coalescing is the @@ -2011,7 +2004,6 @@ bool SimpleRegisterCoalescing::runOnMachineFunction(MachineFunction &fn) {    tri_ = tm_->getRegisterInfo();    tii_ = tm_->getInstrInfo();    li_ = &getAnalysis<LiveIntervals>(); -  lv_ = &getAnalysis<LiveVariables>();    loopInfo = &getAnalysis<MachineLoopInfo>();    DOUT << "********** SIMPLE REGISTER COALESCING **********\n" | 

