mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-13 23:18:58 +00:00
Don't bother spilling before a return
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103831 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ab2d00863f
commit
6a6328ba3d
@ -768,11 +768,20 @@ void RAFast::AllocateBasicBlock(MachineBasicBlock &MBB) {
|
||||
|
||||
// Spill all physical registers holding virtual registers now.
|
||||
atEndOfBlock = true;
|
||||
DEBUG(dbgs() << "Killing live registers at end of block.\n");
|
||||
MachineBasicBlock::iterator MI = MBB.getFirstTerminator();
|
||||
for (LiveRegMap::iterator i = LiveVirtRegs.begin(), e = LiveVirtRegs.end();
|
||||
i != e; ++i)
|
||||
spillVirtReg(MBB, MI, i, true);
|
||||
if (MI != MBB.end() && MI->getDesc().isReturn()) {
|
||||
// This is a return block, kill all virtual registers.
|
||||
DEBUG(dbgs() << "Killing live registers at end of return block.\n");
|
||||
for (LiveRegMap::iterator i = LiveVirtRegs.begin(), e = LiveVirtRegs.end();
|
||||
i != e; ++i)
|
||||
killVirtReg(i);
|
||||
} else {
|
||||
// This is a normal block, spill any dirty virtregs.
|
||||
DEBUG(dbgs() << "Spilling live registers at end of block.\n");
|
||||
for (LiveRegMap::iterator i = LiveVirtRegs.begin(), e = LiveVirtRegs.end();
|
||||
i != e; ++i)
|
||||
spillVirtReg(MBB, MI, i, true);
|
||||
}
|
||||
LiveVirtRegs.clear();
|
||||
|
||||
// Erase all the coalesced copies. We are delaying it until now because
|
||||
|
Loading…
Reference in New Issue
Block a user