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: resent2 [PATCH] Fix ICE in redirect_jump, at jump.c:1497 PR50496


> I'm suggesting a new patch, as attached. Before reload_completed, we
> directly return 0 upon nlabel == NULL, which should be identical with
> old behavior, while asserting fail if after reload (where we assume the
> simple_return/return distinction is required).
>
> This should ensure better that, if a post-prologue case of redirecting
> to the exit block ever happens we will more easily know (by some future
> PR :P)
>
> Bootstrapped and tested on i686, and cross tested on ARM using QEMU.
> Eric, is this approach okay?

Don't you want epilogue_completed instead of reload_completed?  Otherwise,
yes, the approach is fine with me, but wait for Bernd's input.

> 2011-10-31  Chung-Lin Tang  <cltang@codesourcery.com>
>
> 	* jump.c (redirect_jump): Assert fail on nlabel == NULL_RTX
> 	only after reload. Add comments.

Minor rewording of the comment below:

+  if (!nlabel)
+    {

/* If there is no label, we are asked to redirect to the EXIT block.  Now,
   before the epilogue is emitted, return/simple_return cannot be created
   so we return 0 immediately.  After the epilogue is emitted, we always
   expect a label, either a non-null label, or a return/simple_return RTX.
 
+      if (!reload_completed)
+	return 0;
+      gcc_unreachable ();
+    }

-- 
Eric Botcazou


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