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.