This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Question on fixup_abnormal_edges


> 
> 
> Jan Hubicka wrote:
> > I think we should make reload to recognize that given insn never
> > fallsthru and avoid it from generating such dead code.  Even in case of
> > USE it is wrong and here as well.  What is the last insn in the basic
> > block?
> 
> The same as the previous one:
> 
> Breakpoint 2, fixup_abnormal_edges () at ../../src/gcc/reload1.c:9522
> 9522    && insn != bb->head)
> 
> (gdb) list
> 
> 9518    /* Get past the new insns generated. Allow notes, as the insns may
> 9519       be already deleted.  */
> 9520    while ((GET_CODE (insn) == INSN || GET_CODE (insn) == NOTE)
> 9521           && !can_throw_internal (insn)
> 9522           && insn != bb->head)
> 9523      insn = PREV_INSN (insn);
> 9524    if (GET_CODE (insn) != CALL_INSN && !can_throw_internal (insn))
> 9525      abort ();
> 9526    bb->end = insn;
> 
> (gdb) p e
> $1 = 0x0
> 
> (gdb) pr bb->end
> (insn 2134 444 445 (set (reg:DI 22 $22)
>         (mem:DI (plus:DI (reg/f:DI 29 $29)
>       (const_int 640 [0x280])) [48 S8 A64])) 244 {*movdi_nofix} (nil)
>     (nil))

Can you print the whole BB using debug_bb?  This still looks like
reloading, so the instruction requiring the reload is probably earlier.
What target do you use?

Honza
> 
> 
> 
> Olivier


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]