From 61e4a0bc10fa1d36d58935d42d248180993d65bb Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Wed, 30 Jun 2010 18:19:08 +0000 Subject: [PATCH] Remember to track spill slot uses in VirtRegMap when inserting loads and stores. LocalRewriter::runOnMachineFunction uses this information to mark dead spill slots. This means that InlineSpiller now also works for functions that spill. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107302 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/InlineSpiller.cpp | 2 ++ lib/CodeGen/Spiller.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib/CodeGen/InlineSpiller.cpp b/lib/CodeGen/InlineSpiller.cpp index a7a774d1ca5..2c9ea19d429 100644 --- a/lib/CodeGen/InlineSpiller.cpp +++ b/lib/CodeGen/InlineSpiller.cpp @@ -95,6 +95,7 @@ void InlineSpiller::spill(LiveInterval *li, tii_.loadRegFromStackSlot(*MI->getParent(), MII, NewVReg, SS, RC, &tri_); --MII; // Point to load instruction. SlotIndex LoadIdx = lis_.InsertMachineInstrInMaps(MII).getDefIndex(); + vrm_.addSpillSlotUse(SS, MII); DEBUG(dbgs() << "\treload: " << LoadIdx << '\t' << *MII); VNInfo *LoadVNI = NewLI.getNextValue(LoadIdx, 0, true, lis_.getVNInfoAllocator()); @@ -124,6 +125,7 @@ void InlineSpiller::spill(LiveInterval *li, &tri_); --MII; // Point to store instruction. SlotIndex StoreIdx = lis_.InsertMachineInstrInMaps(MII).getDefIndex(); + vrm_.addSpillSlotUse(SS, MII); DEBUG(dbgs() << "\tspilled: " << StoreIdx << '\t' << *MII); VNInfo *StoreVNI = NewLI.getNextValue(Idx, 0, true, lis_.getVNInfoAllocator()); diff --git a/lib/CodeGen/Spiller.cpp b/lib/CodeGen/Spiller.cpp index ad65e9f4b25..19987afef1e 100644 --- a/lib/CodeGen/Spiller.cpp +++ b/lib/CodeGen/Spiller.cpp @@ -137,6 +137,7 @@ protected: MachineInstr *loadInstr(prior(miItr)); SlotIndex loadIndex = lis->InsertMachineInstrInMaps(loadInstr).getDefIndex(); + vrm->addSpilSlotUse(ss, loadInstr); SlotIndex endIndex = loadIndex.getNextIndex(); VNInfo *loadVNI = newLI->getNextValue(loadIndex, 0, true, lis->getVNInfoAllocator()); @@ -150,6 +151,7 @@ protected: MachineInstr *storeInstr(llvm::next(miItr)); SlotIndex storeIndex = lis->InsertMachineInstrInMaps(storeInstr).getDefIndex(); + vrm->addSpilSlotUse(ss, storeInstr); SlotIndex beginIndex = storeIndex.getPrevIndex(); VNInfo *storeVNI = newLI->getNextValue(beginIndex, 0, true, lis->getVNInfoAllocator());