This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
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