diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/InlineSpiller.cpp | 6 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/LiveDebugVariables.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/RegAllocGreedy.cpp | 6 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/Spiller.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/VirtRegMap.cpp | 45 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/VirtRegMap.h | 22 | 
6 files changed, 2 insertions, 82 deletions
diff --git a/llvm/lib/CodeGen/InlineSpiller.cpp b/llvm/lib/CodeGen/InlineSpiller.cpp index d1e3f1afbfa..0066b7ac9a0 100644 --- a/llvm/lib/CodeGen/InlineSpiller.cpp +++ b/llvm/lib/CodeGen/InlineSpiller.cpp @@ -726,7 +726,6 @@ bool InlineSpiller::hoistSpill(LiveInterval &SpillLI, MachineInstr *CopyMI) {                            MRI.getRegClass(SVI.SpillReg), &TRI);    --MII; // Point to store instruction.    LIS.InsertMachineInstrInMaps(MII); -  VRM.addSpillSlotUse(StackSlot, MII);    DEBUG(dbgs() << "\thoisted: " << SVI.SpillVNI->def << '\t' << *MII);    ++NumSpills; @@ -1046,8 +1045,6 @@ bool InlineSpiller::foldMemoryOperand(MachineBasicBlock::iterator MI,    if (!FoldMI)      return false;    LIS.ReplaceMachineInstrInMaps(MI, FoldMI); -  if (!LoadMI) -    VRM.addSpillSlotUse(StackSlot, FoldMI);    MI->eraseFromParent();    // TII.foldMemoryOperand may have left some implicit operands on the @@ -1081,7 +1078,6 @@ void InlineSpiller::insertReload(LiveInterval &NewLI,                             MRI.getRegClass(NewLI.reg), &TRI);    --MI; // Point to load instruction.    SlotIndex LoadIdx = LIS.InsertMachineInstrInMaps(MI).getDefIndex(); -  VRM.addSpillSlotUse(StackSlot, MI);    DEBUG(dbgs() << "\treload:  " << LoadIdx << '\t' << *MI);    VNInfo *LoadVNI = NewLI.getNextValue(LoadIdx, 0,                                         LIS.getVNInfoAllocator()); @@ -1097,7 +1093,6 @@ void InlineSpiller::insertSpill(LiveInterval &NewLI, const LiveInterval &OldLI,                            MRI.getRegClass(NewLI.reg), &TRI);    --MI; // Point to store instruction.    SlotIndex StoreIdx = LIS.InsertMachineInstrInMaps(MI).getDefIndex(); -  VRM.addSpillSlotUse(StackSlot, MI);    DEBUG(dbgs() << "\tspilled: " << StoreIdx << '\t' << *MI);    VNInfo *StoreVNI = NewLI.getNextValue(Idx, 0, LIS.getVNInfoAllocator());    NewLI.addRange(LiveRange(Idx, StoreIdx, StoreVNI)); @@ -1254,7 +1249,6 @@ void InlineSpiller::spillAll() {           MachineInstr *MI = RI.skipInstruction();) {        assert(SnippetCopies.count(MI) && "Remaining use wasn't a snippet copy");        // FIXME: Do this with a LiveRangeEdit callback. -      VRM.RemoveMachineInstrFromMaps(MI);        LIS.RemoveMachineInstrFromMaps(MI);        MI->eraseFromParent();      } diff --git a/llvm/lib/CodeGen/LiveDebugVariables.cpp b/llvm/lib/CodeGen/LiveDebugVariables.cpp index 3dfe4c0e8cf..0414692d13d 100644 --- a/llvm/lib/CodeGen/LiveDebugVariables.cpp +++ b/llvm/lib/CodeGen/LiveDebugVariables.cpp @@ -889,8 +889,7 @@ UserValue::rewriteLocations(VirtRegMap &VRM, const TargetRegisterInfo &TRI) {        // index is no longer available. That means the user value is in a        // non-existent sub-register, and %noreg is exactly what we want.        Loc.substPhysReg(VRM.getPhys(VirtReg), TRI); -    } else if (VRM.getStackSlot(VirtReg) != VirtRegMap::NO_STACK_SLOT && -               VRM.isSpillSlotUsed(VRM.getStackSlot(VirtReg))) { +    } else if (VRM.getStackSlot(VirtReg) != VirtRegMap::NO_STACK_SLOT) {        // FIXME: Translate SubIdx to a stackslot offset.        Loc = MachineOperand::CreateFI(VRM.getStackSlot(VirtReg));      } else { diff --git a/llvm/lib/CodeGen/RegAllocGreedy.cpp b/llvm/lib/CodeGen/RegAllocGreedy.cpp index 71b7f4f7852..366c94e2f47 100644 --- a/llvm/lib/CodeGen/RegAllocGreedy.cpp +++ b/llvm/lib/CodeGen/RegAllocGreedy.cpp @@ -248,7 +248,6 @@ public:    static char ID;  private: -  void LRE_WillEraseInstruction(MachineInstr*);    bool LRE_CanEraseVirtReg(unsigned);    void LRE_WillShrinkVirtReg(unsigned);    void LRE_DidCloneVirtReg(unsigned, unsigned); @@ -350,11 +349,6 @@ void RAGreedy::getAnalysisUsage(AnalysisUsage &AU) const {  //                     LiveRangeEdit delegate methods  //===----------------------------------------------------------------------===// -void RAGreedy::LRE_WillEraseInstruction(MachineInstr *MI) { -  // LRE itself will remove from SlotIndexes and parent basic block. -  VRM->RemoveMachineInstrFromMaps(MI); -} -  bool RAGreedy::LRE_CanEraseVirtReg(unsigned VirtReg) {    if (unsigned PhysReg = VRM->getPhys(VirtReg)) {      unassign(LIS->getInterval(VirtReg), PhysReg); diff --git a/llvm/lib/CodeGen/Spiller.cpp b/llvm/lib/CodeGen/Spiller.cpp index 6efdd5b1563..4a170bc70af 100644 --- a/llvm/lib/CodeGen/Spiller.cpp +++ b/llvm/lib/CodeGen/Spiller.cpp @@ -140,7 +140,6 @@ protected:          MachineInstr *loadInstr(prior(miItr));          SlotIndex loadIndex =            lis->InsertMachineInstrInMaps(loadInstr).getDefIndex(); -        vrm->addSpillSlotUse(ss, loadInstr);          SlotIndex endIndex = loadIndex.getNextIndex();          VNInfo *loadVNI =            newLI->getNextValue(loadIndex, 0, lis->getVNInfoAllocator()); @@ -154,7 +153,6 @@ protected:          MachineInstr *storeInstr(llvm::next(miItr));          SlotIndex storeIndex =            lis->InsertMachineInstrInMaps(storeInstr).getDefIndex(); -        vrm->addSpillSlotUse(ss, storeInstr);          SlotIndex beginIndex = storeIndex.getPrevIndex();          VNInfo *storeVNI =            newLI->getNextValue(beginIndex, 0, lis->getVNInfoAllocator()); diff --git a/llvm/lib/CodeGen/VirtRegMap.cpp b/llvm/lib/CodeGen/VirtRegMap.cpp index 19064f05974..faa44ada3fd 100644 --- a/llvm/lib/CodeGen/VirtRegMap.cpp +++ b/llvm/lib/CodeGen/VirtRegMap.cpp @@ -58,14 +58,9 @@ bool VirtRegMap::runOnMachineFunction(MachineFunction &mf) {    TRI = mf.getTarget().getRegisterInfo();    MF = &mf; -  LowSpillSlot = HighSpillSlot = NO_STACK_SLOT; -      Virt2PhysMap.clear();    Virt2StackSlotMap.clear();    Virt2SplitMap.clear(); -  SpillSlotToUsesMap.clear(); -   -  SpillSlotToUsesMap.resize(8);    allocatableRCRegs.clear();    for (TargetRegisterInfo::regclass_iterator I = TRI->regclass_begin(), @@ -88,14 +83,6 @@ void VirtRegMap::grow() {  unsigned VirtRegMap::createSpillSlot(const TargetRegisterClass *RC) {    int SS = MF->getFrameInfo()->CreateSpillStackObject(RC->getSize(),                                                        RC->getAlignment()); -  if (LowSpillSlot == NO_STACK_SLOT) -    LowSpillSlot = SS; -  if (HighSpillSlot == NO_STACK_SLOT || SS > HighSpillSlot) -    HighSpillSlot = SS; -  assert(SS >= LowSpillSlot && "Unexpected low spill slot"); -  unsigned Idx = SS-LowSpillSlot; -  while (Idx >= SpillSlotToUsesMap.size()) -    SpillSlotToUsesMap.resize(SpillSlotToUsesMap.size()*2);    ++NumSpillSlots;    return SS;  } @@ -129,37 +116,6 @@ void VirtRegMap::assignVirt2StackSlot(unsigned virtReg, int SS) {    Virt2StackSlotMap[virtReg] = SS;  } -void VirtRegMap::addSpillSlotUse(int FI, MachineInstr *MI) { -  if (!MF->getFrameInfo()->isFixedObjectIndex(FI)) { -    // If FI < LowSpillSlot, this stack reference was produced by -    // instruction selection and is not a spill -    if (FI >= LowSpillSlot) { -      assert(FI >= 0 && "Spill slot index should not be negative!"); -      assert((unsigned)FI-LowSpillSlot < SpillSlotToUsesMap.size() -             && "Invalid spill slot"); -      SpillSlotToUsesMap[FI-LowSpillSlot].insert(MI); -    } -  } -} - -void VirtRegMap::RemoveMachineInstrFromMaps(MachineInstr *MI) { -  for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) { -    MachineOperand &MO = MI->getOperand(i); -    if (!MO.isFI()) -      continue; -    int FI = MO.getIndex(); -    if (MF->getFrameInfo()->isFixedObjectIndex(FI)) -      continue; -    // This stack reference was produced by instruction selection and -    // is not a spill -    if (FI < LowSpillSlot) -      continue; -    assert((unsigned)FI-LowSpillSlot < SpillSlotToUsesMap.size() -           && "Invalid spill slot"); -    SpillSlotToUsesMap[FI-LowSpillSlot].erase(MI); -  } -} -  void VirtRegMap::rewrite(SlotIndexes *Indexes) {    DEBUG(dbgs() << "********** REWRITE VIRTUAL REGISTERS **********\n"                 << "********** Function: " @@ -236,7 +192,6 @@ void VirtRegMap::rewrite(SlotIndexes *Indexes) {          ++NumIdCopies;          if (MI->getNumOperands() == 2) {            DEBUG(dbgs() << "Deleting identity copy.\n"); -          RemoveMachineInstrFromMaps(MI);            if (Indexes)              Indexes->removeMachineInstrFromMaps(MI);            // It's safe to erase MI because MII has already been incremented. diff --git a/llvm/lib/CodeGen/VirtRegMap.h b/llvm/lib/CodeGen/VirtRegMap.h index 7213088bc3c..68d817b4587 100644 --- a/llvm/lib/CodeGen/VirtRegMap.h +++ b/llvm/lib/CodeGen/VirtRegMap.h @@ -74,12 +74,6 @@ namespace llvm {      /// mapping.      IndexedMap<unsigned, VirtReg2IndexFunctor> Virt2SplitMap; -    /// LowSpillSlot, HighSpillSlot - Lowest and highest spill slot indexes. -    int LowSpillSlot, HighSpillSlot; - -    /// SpillSlotToUsesMap - Records uses for each register spill slot. -    SmallVector<SmallPtrSet<MachineInstr*, 4>, 8> SpillSlotToUsesMap; -      /// createSpillSlot - Allocate a spill slot for RC from MFI.      unsigned createSpillSlot(const TargetRegisterClass *RC); @@ -89,8 +83,7 @@ namespace llvm {    public:      static char ID;      VirtRegMap() : MachineFunctionPass(ID), Virt2PhysMap(NO_PHYS_REG), -                   Virt2StackSlotMap(NO_STACK_SLOT), Virt2SplitMap(0), -                   LowSpillSlot(NO_STACK_SLOT), HighSpillSlot(NO_STACK_SLOT) { } +                   Virt2StackSlotMap(NO_STACK_SLOT), Virt2SplitMap(0) { }      virtual bool runOnMachineFunction(MachineFunction &MF);      virtual void getAnalysisUsage(AnalysisUsage &AU) const { @@ -198,19 +191,6 @@ namespace llvm {      /// the specified stack slot      void assignVirt2StackSlot(unsigned virtReg, int frameIndex); -    /// @brief Records a spill slot use. -    void addSpillSlotUse(int FrameIndex, MachineInstr *MI); - -    /// @brief Returns true if spill slot has been used. -    bool isSpillSlotUsed(int FrameIndex) const { -      assert(FrameIndex >= 0 && "Spill slot index should not be negative!"); -      return !SpillSlotToUsesMap[FrameIndex-LowSpillSlot].empty(); -    } - -    /// RemoveMachineInstrFromMaps - MI is being erased, remove it from the -    /// the folded instruction map and spill point map. -    void RemoveMachineInstrFromMaps(MachineInstr *MI); -      /// rewrite - Rewrite all instructions in MF to use only physical registers      /// by mapping all virtual register operands to their assigned physical      /// registers.  | 

