[Patch, AVR]: Fix PR46779

Georg-Johann Lay avr@gjlay.de
Wed Jun 15 21:58:00 GMT 2011


Richard Henderson schrieb:
> On 06/14/2011 02:29 PM, Georg-Johann Lay wrote:
> 
>>I tested on some handcrafted examples and on the code attached to
>>PR46278. The generated code looked very good and so I started
>>regression testing but found at spill fail in
>>  gcc.c-torture/compile/950612-1.c
> 
> I reproduced this today.
> 
> The Problem is that we really have run out of registers.  X and Z
> are both in use, and we're attempting to spill them for caller-save.
> There is no register in which to load fp+158 so that we can save
> either X or Z.

Thanks for the analysis, that makes thinks clearer.

But I still wonder what's the very problem. Any architecture has limited 
reg+const addressing and limited number of address registers.
I definetely saw architectures run out of registers and reload manages 
to access stack beyond reg+maxoff without any hacks and clear and 
straight forward backend.

Bigger machines definetely have bigger maxoff and more address regs, but 
the software that's intended to run on them is considerably more 
complicated. Yet gcc doesn't run into problems and reload can cope with 
that.

> You're going to have to have some support for fp+large somewhere.

So there must be something fundamentally different between avr and other 
ports?

Is there a minimum requirement for add<pmode>3 insn like "r,r,n" 
alternative so that it can add a const without reload?

Johann

> r~



More information about the Gcc-patches mailing list