Re: Reload using a live register to reload into

2007-11-12 Thread Pranav Bhandarkar
Hi, > > DF is supposed to be out of the game at this point, it has handed over the > control since global.c:build_insn_chain as far as liveness info is concerned. Oh I used DF and it worked for me. But I think that is because this is the first new instruction to be inserted and nothing really must

Re: Reload using a live register to reload into

2007-11-09 Thread Rask Ingemann Lambertsen
On Thu, Nov 08, 2007 at 09:52:27PM +0100, Eric Botcazou wrote: > > This doesnt happen because while inserting the caller save insn, its > > live_throughout is simply set to the live_throughout of the call insn > > + the registers marked with REG_DEAD notes in the call insn. > > Ouch. Relying on R

Re: Reload using a live register to reload into

2007-11-08 Thread Eric Botcazou
> This doesnt happen because while inserting the caller save insn, its > live_throughout is simply set to the live_throughout of the call insn > + the registers marked with REG_DEAD notes in the call insn. Ouch. Relying on REG_DEAD notes to get complete liveness info is a no-no: /* The value in

Re: Reload using a live register to reload into

2007-11-08 Thread Pranav Bhandarkar
Hi, > > (call_insn:HI 91 270 92 5 cor_h.c:129 (parallel [ > >(set (reg:SI 1 $c1) > >(call (mem:SI (symbol_ref:SI > > ("DotProductWithoutShift") [flags 0x41] > DotProductWithoutShift>) [0 S4 A32]) > >(const_int 0 [0x0]))) > >(use (const_i

Re: Reload using a live register to reload into

2007-11-07 Thread Eric Botcazou
> Also, just to confirm if I am on the right track, shouldnt the bit for > reg #1 (i.e $c1) be set in live_throughout in the insn chain for > insn #91 ( reproduced below for convenience ) ? > > (call_insn:HI 91 270 92 5 cor_h.c:129 (parallel [ >(set (reg:SI 1 $c1) >(c

Re: Reload using a live register to reload into

2007-11-07 Thread Pranav Bhandarkar
> OK. AFAICS there is nothing glaring in the RTL you posted so you'll have to > put a watchpoint and find out who has set reg_rtx for this particular reload. reg_rtx gets set due to a call to choose_reload_regs which in turn calls allocate_reload_reg to set reg_rtx. Also, just to confirm if I am

Re: Reload using a live register to reload into

2007-11-07 Thread Eric Botcazou
> Oh, I am using quite a new version of the compiler - rev 129547, > DATESTAMP 20071022. OK. AFAICS there is nothing glaring in the RTL you posted so you'll have to put a watchpoint and find out who has set reg_rtx for this particular reload. -- Eric Botcazou

Re: Reload using a live register to reload into

2007-11-07 Thread Pranav Bhandarkar
Hi Eric, Thanks for the response > Of course, it goes to great length to do so but there can be bugs. You didn't > specify which version of the compiler you're using though; they may have been > already fixed on the mainline. Oh, I am using quite a new version of the compiler - rev 129547, DATES

Re: Reload using a live register to reload into

2007-11-07 Thread Eric Botcazou
> The file.c.176r.greg for insn 309 says > > "Spilling for insn 309. > Using reg 6 for reload 0" > > and indeed rld[0].regno is 6 and rld[0].in is > > (plus:SI (reg/f:SI 29 $sp) > (const_int 176 [0xb0])) > > However the function choose_reload_regs chooses $c1 for this reload > and sets rld[0].r

Reload using a live register to reload into

2007-11-06 Thread Pranav Bhandarkar
Hi, Working on a private port I am seeing a problem with reload clobbering a live register and thus causing havoc. Consider the following snippet of the code dump. (note:HI 85 84 86 5 [bb 5] NOTE_INSN_BASIC_BLOCK) (note:HI 86 85 89 5 NOTE_INSN_DELETED) (insn:HI 89 86 87 5 cor_h.c:129 (set (reg:S