PR63633: May middle-end come up width hard regs for insn expanders?

Vladimir Makarov vmakarov@redhat.com
Tue Apr 21 02:14:00 GMT 2015



On 17/04/15 05:58 AM, Georg-Johann Lay wrote:
> I allowed me to CC Vladimir; maybe he can propose how the backend can 
> describe an efficient, constraint-based solution.  The problem is 
> about expanders producing insns with non-fixed hard-regs as in/out 
> operands or clobbers.  This includes move insn from non-generic 
> address spaces which require dedicated hard regs. Issue is about 
> correctness and efficiency of generated code.
>
I might be wrong but I think you have a bloated code because you use 
scratches.  I already told several times that usage of scratch is always 
a bad idea.  It was a bad idea for an old RA and is still a bad idea for 
IRA.  The usage of scratches should be prohibited, probably we should 
write it somewhere.  It is better to use just a regular pseudo instead.

Why it is a bad idea?  Because IRA (or the old global RA) does not take 
them into account *at all*.  It means that IRA might think that there 
are enough registers for pseudos but in reality it is wrong because of 
scratches in live range of the pseudos.

If it is not the case I should investigate why you have a bloated code 
and small test would help here.

Thanks,  I hope my comments will be useful.




More information about the Gcc mailing list