https://bugs.kde.org/show_bug.cgi?id=381553

--- Comment #6 from Ivo Raisr <iv...@ivosh.net> ---
It turns out the current version has a design flaw because it does not track
rreg live ranges. This manifests for example in this vcode:

 82   movq $0x14,%rdi
 83   movq %vR12,%rsi
 84   movq $0x0,%rdx
 85   movq 0xA8(%rbp),%rcx
 86   call[4,RLPri_Int] 0x58147900
 87   movq %rax,%vR191
 88   movq %vR189,%rdi
 89   movq %vR28,%rsi
 90   movq %vR190,%rdx
 91   movq %vR191,%rcx
 92   call[4,RLPri_Int] 0x58147900

Imagine that register allocator processes instruction #89 and that %vReg28
is currently spilled. So it will:
1. allocate a "free" register - %rdi
2. generate reload into %rdi: movq (spill_slot), %rdi
3. register allocate "movq %vR28,%rsi" -> "movq %rdi,%rsi"


I think it is needed to track rreg live ranges.
I will try something simpler than does reg_alloc v2; rreg live ranges will be
tracked individually per rreg.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to