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.


Reply via email to