On Wed, 2007-04-18 at 10:35 -0400, Kenneth Zadeck wrote: > Ramana Radhakrishnan wrote: > > Hi , > > > > I am working on integrating a private port into the Dataflow branch and > > am running into a couple of issues with ICEs in global.c . The ICE is > > at gcc_assert ( REGS_LIVE (i)) at line 534 in global_alloc in > > global.c .. > > > > However because of the way we generate calls in the backend with an > > extra clobber register for calculating the return address. The temporary > > which gets clobbered is here. > > > > (call_insn:HI 32 29 34 > > 4 ../../../../gnu/libgcc/../gcc/unwind-dw2-fde.c:487 (parallel [ > > (set (reg:SI 1 $r1) > > (call (mem:SI (reg/v/f:SI 145 [ fde_compare ]) [0 S4 > > A32]) > > (const_int 0 [0x0]))) > > (use (const_int 0 [0x0])) > > (clobber (reg:SI 31 $link)) > > (clobber (reg:SI 153)) > > ]) 40 {call_value_indirect} (expr_list:REG_DEAD (reg:SI 3 $c3) > > (expr_list:REG_DEAD (reg:SI 2 $r2) > > (nil))) > > (expr_list:REG_DEP_TRUE (use (reg:SI 3 $r3)) > > (expr_list:REG_DEP_TRUE (use (reg:SI 2 $r2)) > > (expr_list:REG_DEP_TRUE (use (reg:SI 1 $r1 [ ob ])) > > (nil))))) > > > > > > > > > > Is it something to do with the way that REGS_EVER_LIVE is calculated ? > > If so where does this get updated in the new infrastructure. I am still > > feeling my way through the df code , so any help would be appreciated. > > Thanks in advance. > > > > This is with revision 123253 of the DF branch which is slightly older . > > I am considering moving up but wanted to check before that . > > > > > > cheers > > Ramana > > > > > > > > > There may have been a few fixes that might help so you should try > updating first.
I shall anyways try updating to a newer version. > There is a fix was that causes the REG_N... information to be rebuilt at > the start of global rather than reusing the info computed during local. > If you are adding this pseudo very late, this will likely fix the problem. Could you elaborate on the "very late" bit ? The pattern that we have gets generated at RTL Expansion time , so its not being added too late in the chain. > > Fixing your kind of bug was not the reason for this fix. The fix > solves an issue where the regs live across a call computed during local > is different than the way it is computed during global. Ok - > > This kind of information is built by the RI problem when df_analyze is > called and that problem is not resolved when df_analyze is called inside > global. > > Hope this fixes you issue. I'll try updating and post again. Thank you for the prompt response. cheers -Ramana > > Kenny > > > > > > > > > > > > > > > > > -- Ramana Radhakrishnan <[EMAIL PROTECTED]> Codito Technologies Pvt. Ltd.