mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 06:32:24 +00:00
Minor optimizations. DenseMap::begin() is surprisingly slow on an empty map.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103940 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
548643c573
commit
f3ea06b108
@ -267,6 +267,7 @@ void RAFast::spillVirtReg(MachineBasicBlock::iterator MI,
|
||||
|
||||
/// spillAll - Spill all dirty virtregs without killing them.
|
||||
void RAFast::spillAll(MachineInstr *MI) {
|
||||
if (LiveVirtRegs.empty()) return;
|
||||
isBulkSpilling = true;
|
||||
for (LiveRegMap::iterator i = LiveVirtRegs.begin(),
|
||||
e = LiveVirtRegs.end(); i != e; ++i)
|
||||
@ -471,17 +472,15 @@ void RAFast::allocVirtReg(MachineInstr *MI, LiveRegEntry &LRE, unsigned Hint) {
|
||||
unsigned BestReg = 0, BestCost = spillImpossible;
|
||||
for (TargetRegisterClass::iterator I = AOB; I != AOE; ++I) {
|
||||
unsigned Cost = calcSpillCost(*I);
|
||||
if (Cost < BestCost) {
|
||||
BestReg = *I;
|
||||
BestCost = Cost;
|
||||
if (Cost == 0) break;
|
||||
}
|
||||
// Cost is 0 when all aliases are already disabled.
|
||||
if (Cost == 0)
|
||||
return assignVirtToPhysReg(LRE, *I);
|
||||
if (Cost < BestCost)
|
||||
BestReg = *I, BestCost = Cost;
|
||||
}
|
||||
|
||||
if (BestReg) {
|
||||
// BestCost is 0 when all aliases are already disabled.
|
||||
if (BestCost)
|
||||
definePhysReg(MI, BestReg, regFree);
|
||||
definePhysReg(MI, BestReg, regFree);
|
||||
return assignVirtToPhysReg(LRE, BestReg);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user