This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR target/10282
> This will somewhat pesimize code as some instruction patterns allow
> QImode operations in NON_Q_REGS - like addition can be done via full
> sized operation.
Ah, thanks for the explanation.
> Why reload didn't managed to find the Q register in the testcase?
We run out of Q registers:
(insn 22 20 24 0 0x40153268 (set (mem:QI (plus:SI (subreg:SI (reg/v:DI 63
[ Ld2 ]) 0)
(subreg:SI (reg/v:DI 62 [ Ld1 ]) 4)) [0 S1 A8])
(subreg:QI (reg/v:SI 4 esi [orig:61 Ll ] [61]) 0)) 48 {*movqi_1}
We reload (reg/v:DI 63) into (%eax, %edx) and (reg/v:DI 62) into (%ecx, %ebx)
before trying to reload (subreg:QI (reg/v:SI 4 esi)).
The order is so because there is a prime in reload_reg_class_lower() for
multi-reg reloads over single-reg reloads.
I guess we shouldn't be trying to reload the inner regs of the subregs in the
first place, but only the subregs themselves, right?
--
Eric Botcazou