function: A fix for my previous commit
authorSegher Boessenkool <segher@kernel.crashing.org>
Thu, 19 May 2016 07:51:48 +0000 (09:51 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Thu, 19 May 2016 07:51:48 +0000 (09:51 +0200)
It failed for targets that have an eh_return pattern with a splitter
gated by epilogue_done.

        * function.c (thread_prologue_and_epilogue_insn): Move the
        "goto epilogue_done" one block later.

From-SVN: r236441

gcc/ChangeLog
gcc/function.c

index 63fe8002db0e4c3b36753ec0f421938e6b424b91..e2e29fe5d4884fec35904aa5706f7149174e5e17 100644 (file)
@@ -1,3 +1,8 @@
+2016-05-19  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * function.c (thread_prologue_and_epilogue_insn): Move the
+       "goto epilogue_done" one block later.
+
 2016-05-19  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/70729
index 1c56253c30999ca1756c0be54f785fcae58ffef0..4c236eb50f26f1dfaabd502d4a205004c11d276e 100644 (file)
@@ -5960,11 +5960,6 @@ thread_prologue_and_epilogue_insns (void)
 
   exit_fallthru_edge = find_fallthru_edge (EXIT_BLOCK_PTR_FOR_FN (cfun)->preds);
 
-  /* If nothing falls through into the exit block, we don't need an
-     epilogue.  */
-  if (exit_fallthru_edge == NULL)
-    goto epilogue_done;
-
   /* A small fib -- epilogue is not yet completed, but we wish to re-use
      this marker for the splits of EH_RETURN patterns, and nothing else
      uses the flag in the meantime.  */
@@ -5994,6 +5989,11 @@ thread_prologue_and_epilogue_insns (void)
       emit_note_after (NOTE_INSN_EPILOGUE_BEG, prev);
     }
 
+  /* If nothing falls through into the exit block, we don't need an
+     epilogue.  */
+  if (exit_fallthru_edge == NULL)
+    goto epilogue_done;
+
   if (epilogue_seq)
     {
       insert_insn_on_edge (epilogue_seq, exit_fallthru_edge);