re PR rtl-optimization/51051 (build fails on cris-elf building libstdc++-v3)
authorAlan Modra <amodra@gmail.com>
Tue, 15 Nov 2011 22:10:46 +0000 (08:40 +1030)
committerAlan Modra <amodra@gcc.gnu.org>
Tue, 15 Nov 2011 22:10:46 +0000 (08:40 +1030)
PR rtl-optimization/51051
PR bootstrap/51086
* function.c (thread_prologue_and_epilogue_insns): Guard
emitting return with single_succ_p test.

From-SVN: r181391

gcc/ChangeLog
gcc/function.c

index 2f0aedc70f8861b8e6b071d4cfb68973d2779fda..a7fb9ea48a644dff2893457ff9faccfe81dd7b0c 100644 (file)
@@ -1,3 +1,10 @@
+2011-11-16  Alan Modra  <amodra@gmail.com>
+
+       PR rtl-optimization/51051
+       PR bootstrap/51086
+       * function.c (thread_prologue_and_epilogue_insns): Guard
+       emitting return with single_succ_p test.
+
 2011-11-15  Joern Rennecke  <joern.rennecke@embecosm.com>
 
        * config/epiphany/epiphany.md (mov<mode>cc): Fix code to
index 0ee69ef22b6831d9afdcfdae99e54d007bb3c4c9..664858a29e3b9e4577bef79918e9b5557b41a365 100644 (file)
@@ -6230,7 +6230,8 @@ thread_prologue_and_epilogue_insns (void)
              && !active_insn_between (BB_HEAD (last_bb), BB_END (last_bb)))
            convert_jumps_to_returns (last_bb, false, NULL);
 
-         if (EDGE_COUNT (exit_fallthru_edge->src->preds) != 0)
+         if (EDGE_COUNT (last_bb->preds) != 0
+             && single_succ_p (last_bb))
            {
              last_bb = emit_return_for_exit (exit_fallthru_edge, false);
              epilogue_end = returnjump = BB_END (last_bb);