function: A fix for my previous commit

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
This commit is contained in:
Segher Boessenkool 2016-05-19 09:51:48 +02:00 committed by Segher Boessenkool
parent 43c0068e60
commit cc1f86f3fd
2 changed files with 10 additions and 5 deletions

View 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

View 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);