aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2005-01-19 16:39:20 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2005-01-19 16:39:20 +0000
commit09f9e288672cb836370bfe7d8baeaadeef7b57c0 (patch)
tree37832746928ff701a0a0bd32120c124a14bd4451
parenta26ddf116ec21df0a1e74c888d469647b6f2f396 (diff)
downloadgcc-09f9e288672cb836370bfe7d8baeaadeef7b57c0.zip
gcc-09f9e288672cb836370bfe7d8baeaadeef7b57c0.tar.gz
gcc-09f9e288672cb836370bfe7d8baeaadeef7b57c0.tar.bz2
re PR rtl-optimization/19462 (generating return insns while current_function_epilogue_delay_list nonempty)
PR rtl-optimization/19462 * reorg.c (find_end_label): Create return insn only if current_function_epilogue_delay_list is empty. From-SVN: r93901
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reorg.c7
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e36882b..87dff43 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-01-19 Hans-Peter Nilsson <hp@axis.com>
+
+ PR rtl-optimization/19462
+ * reorg.c (find_end_label): Create return insn only if
+ current_function_epilogue_delay_list is empty.
+
2005-01-19 Paolo Bonzini <bonzini@gnu.org>
* doc/passes.texi: Remove paragraph mentioning new-ra.
diff --git a/gcc/reorg.c b/gcc/reorg.c
index fbaf968..78940ff 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -420,7 +420,12 @@ find_end_label (void)
if needed. */
emit_label (end_of_function_label);
#ifdef HAVE_return
- if (HAVE_return)
+ /* We don't bother trying to create a return insn if the
+ epilogue has filled delay-slots; we would have to try and
+ move the delay-slot fillers to the delay-slots for the new
+ return insn or in front of the new return insn. */
+ if (current_function_epilogue_delay_list == NULL
+ && HAVE_return)
{
/* The return we make may have delay slots too. */
rtx insn = gen_return ();