mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-19 04:28:20 +00:00
New virtual registers created for spill intervals should inherit allocation hints from the original register.
This helps us avoid silly copies when rematting values that are copied to a physical register: leaq _.str44(%rip), %rcx movq %rcx, %rsi call _strcmp becomes: leaq _.str44(%rip), %rsi call _strcmp The coalescer will not touch the movq because that would tie down the physical register. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90163 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1095,6 +1095,12 @@ rewriteInstructionForSpills(const LiveInterval &li, const VNInfo *VNI,
|
|||||||
NewVReg = mri_->createVirtualRegister(rc);
|
NewVReg = mri_->createVirtualRegister(rc);
|
||||||
vrm.grow();
|
vrm.grow();
|
||||||
CreatedNewVReg = true;
|
CreatedNewVReg = true;
|
||||||
|
|
||||||
|
// The new virtual register should get the same allocation hints as the
|
||||||
|
// old one.
|
||||||
|
std::pair<unsigned, unsigned> Hint = mri_->getRegAllocationHint(Reg);
|
||||||
|
if (Hint.first || Hint.second)
|
||||||
|
mri_->setRegAllocationHint(NewVReg, Hint.first, Hint.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!TryFold)
|
if (!TryFold)
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
; RUN: llc < %s -mtriple=i386-apple-darwin -disable-fp-elim -stats |& grep asm-printer | grep 59
|
; RUN: llc < %s -mtriple=i386-apple-darwin -disable-fp-elim -stats |& grep asm-printer | grep 58
|
||||||
; PR2568
|
; PR2568
|
||||||
|
|
||||||
@g_3 = external global i16 ; <i16*> [#uses=1]
|
@g_3 = external global i16 ; <i16*> [#uses=1]
|
||||||
|
Reference in New Issue
Block a user