This obvious patch extends my 2011-08-03 fix to simple_return.
Necessary for the same reason as the original patch, namely that
rs6000.md has a peephole2 that matches and recreates a conditional
jump.  With the third patch in this series applied, rs6000 will start
to use simple_return in conditional jumps.  Even though I think this
patch meets the "obvious" requirement, I won't apply it without the
other two since the assert may trigger on mips without the second
patch in this series.

        PR rtl-optimization/49941
        * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.

diff -urp -x.svn -x'*~' -x'*.orig' gcc-bernd/gcc/jump.c gcc-current/gcc/jump.c
--- gcc-bernd/gcc/jump.c        2011-09-16 11:52:14.000000000 +0930
+++ gcc-current/gcc/jump.c      2011-09-16 09:59:39.000000000 +0930
@@ -1086,6 +1086,7 @@ mark_jump_label_1 (rtx x, rtx insn, bool
       return;
 
     case RETURN:
+    case SIMPLE_RETURN:
       if (is_target)
        {
          gcc_assert (JUMP_LABEL (insn) == NULL || JUMP_LABEL (insn) == x);
@@ -1408,7 +1409,7 @@ redirect_exp_1 (rtx *loc, rtx olabel, rt
   int i;
   const char *fmt;
 
-      if ((code == LABEL_REF && XEXP (x, 0) == olabel)
+  if ((code == LABEL_REF && XEXP (x, 0) == olabel)
       || x == olabel)
     {
       x = redirect_target (nlabel);

-- 
Alan Modra
Australia Development Lab, IBM

Reply via email to