mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-25 21:18:19 +00:00
- Update register allocation hint after coalescing. This is done by the target since the hint is target dependent. This is important for ARM register pair hints.
- Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping. - More fixes to get ARM load / store double word working. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73671 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1356,9 +1356,15 @@ unsigned RALinScan::getFreePhysReg(LiveInterval* cur,
|
||||
unsigned FreeReg = 0;
|
||||
unsigned FreeRegInactiveCount = 0;
|
||||
|
||||
std::pair<unsigned, unsigned> Hint = mri_->getRegAllocationHint(cur->reg);
|
||||
// Resolve second part of the hint (if possible) given the current allocation.
|
||||
unsigned physReg = Hint.second;
|
||||
if (physReg &&
|
||||
TargetRegisterInfo::isVirtualRegister(physReg) && vrm_->hasPhys(physReg))
|
||||
physReg = vrm_->getPhys(physReg);
|
||||
|
||||
TargetRegisterClass::iterator I, E;
|
||||
tie(I, E) = tri_->getAllocationOrder(RC,
|
||||
mri_->getRegAllocationHint(cur->reg), *mf_);
|
||||
tie(I, E) = tri_->getAllocationOrder(RC, Hint.first, physReg, *mf_);
|
||||
assert(I != E && "No allocatable register in this register class!");
|
||||
|
||||
// Scan for the first available register.
|
||||
|
||||
Reference in New Issue
Block a user