This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Fix ICE with delayed-branch targets after epilogue-unwind patch
Jakub Jelinek writes:
> 2009-06-15 Jakub Jelinek <email@example.com>
> * jump.c (returnjump_p): Revert last patch.
> * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
> --- gcc/jump.c.jj 2009-06-12 10:31:59.000000000 +0200
> +++ gcc/jump.c 2009-06-15 17:28:56.000000000 +0200
> @@ -891,13 +891,8 @@ returnjump_p_1 (rtx *loc, void *data ATT
> returnjump_p (rtx insn)
> - /* Handle delayed branches. */
> - if (NONJUMP_INSN_P (insn) && GET_CODE (PATTERN (insn)) == SEQUENCE)
> - insn = XVECEXP (PATTERN (insn), 0, 0);
> if (!JUMP_P (insn))
> return 0;
> return for_each_rtx (&PATTERN (insn), returnjump_p_1, NULL);
The comment before the function should either explain that this does not
handle returns as delayed branches or more preferably you can dissect this
interface to what you need and a generic returnjump_p which handles delay
branches. Apparently there are already uses for this in resource.c; these
currently use the local, return_insn_p.