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.

Reply via email to