This is the mail archive of the gcc-patches@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: [PATCH] Fix ICE with delayed-branch targets after epilogue-unwind patch


Jakub Jelinek writes:
> 2009-06-15  Jakub Jelinek  <jakub@redhat.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
>  int
>  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.

Adam


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