Deleted Added
full compact
RegAllocBase.cpp (321369) RegAllocBase.cpp (321723)
1//===-- RegAllocBase.cpp - Register Allocator Base Class ------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 119 unchanged lines hidden (view full) ---

128 VRM->assignVirt2Phys(VirtReg->reg,
129 RegClassInfo.getOrder(MRI->getRegClass(VirtReg->reg)).front());
130 continue;
131 }
132
133 if (AvailablePhysReg)
134 Matrix->assign(*VirtReg, AvailablePhysReg);
135
1//===-- RegAllocBase.cpp - Register Allocator Base Class ------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 119 unchanged lines hidden (view full) ---

128 VRM->assignVirt2Phys(VirtReg->reg,
129 RegClassInfo.getOrder(MRI->getRegClass(VirtReg->reg)).front());
130 continue;
131 }
132
133 if (AvailablePhysReg)
134 Matrix->assign(*VirtReg, AvailablePhysReg);
135
136 for (VirtRegVec::iterator I = SplitVRegs.begin(), E = SplitVRegs.end();
137 I != E; ++I) {
138 LiveInterval *SplitVirtReg = &LIS->getInterval(*I);
136 for (unsigned Reg : SplitVRegs) {
137 assert(LIS->hasInterval(Reg));
138
139 LiveInterval *SplitVirtReg = &LIS->getInterval(Reg);
139 assert(!VRM->hasPhys(SplitVirtReg->reg) && "Register already assigned");
140 if (MRI->reg_nodbg_empty(SplitVirtReg->reg)) {
140 assert(!VRM->hasPhys(SplitVirtReg->reg) && "Register already assigned");
141 if (MRI->reg_nodbg_empty(SplitVirtReg->reg)) {
142 assert(SplitVirtReg->empty() && "Non-empty but used interval");
141 DEBUG(dbgs() << "not queueing unused " << *SplitVirtReg << '\n');
142 aboutToRemoveInterval(*SplitVirtReg);
143 LIS->removeInterval(SplitVirtReg->reg);
144 continue;
145 }
146 DEBUG(dbgs() << "queuing new interval: " << *SplitVirtReg << "\n");
143 DEBUG(dbgs() << "not queueing unused " << *SplitVirtReg << '\n');
144 aboutToRemoveInterval(*SplitVirtReg);
145 LIS->removeInterval(SplitVirtReg->reg);
146 continue;
147 }
148 DEBUG(dbgs() << "queuing new interval: " << *SplitVirtReg << "\n");
147 assert(!SplitVirtReg->empty() && "expecting non-empty interval");
148 assert(TargetRegisterInfo::isVirtualRegister(SplitVirtReg->reg) &&
149 "expect split value in virtual register");
150 enqueue(SplitVirtReg);
151 ++NumNewQueued;
152 }
153 }
154}
155
156void RegAllocBase::postOptimization() {
157 spiller().postOptimization();
158 for (auto DeadInst : DeadRemats) {
159 LIS->RemoveMachineInstrFromMaps(*DeadInst);
160 DeadInst->eraseFromParent();
161 }
162 DeadRemats.clear();
163}
149 assert(TargetRegisterInfo::isVirtualRegister(SplitVirtReg->reg) &&
150 "expect split value in virtual register");
151 enqueue(SplitVirtReg);
152 ++NumNewQueued;
153 }
154 }
155}
156
157void RegAllocBase::postOptimization() {
158 spiller().postOptimization();
159 for (auto DeadInst : DeadRemats) {
160 LIS->RemoveMachineInstrFromMaps(*DeadInst);
161 DeadInst->eraseFromParent();
162 }
163 DeadRemats.clear();
164}