summaryrefslogtreecommitdiff
path: root/gcc/reorg.c
diff options
context:
space:
mode:
authorhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>2002-06-16 18:54:43 +0000
committerhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>2002-06-16 18:54:43 +0000
commit8464378ca1a9c82c11d7dcce35b396fd36fcdc99 (patch)
treeda9fbd6b307a08f8f2e1193f8f41e1127e4d7848 /gcc/reorg.c
parent9526c1821776482a1926e0a98cbe2ff42a73a6da (diff)
downloadgcc-8464378ca1a9c82c11d7dcce35b396fd36fcdc99.tar.gz
PR target/7042
* reorg.c (make_return_insns) [DELAY_SLOTS_FOR_EPILOGUE]: Exit early if current_function_epilogue_delay_list is non-empty. * config/cris/cris.md ("return"): Add sanity check asserting that current_function_epilogue_delay_list is empty. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54668 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reorg.c')
-rw-r--r--gcc/reorg.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c
index 3e3052dff9d..2ccde4fdf36 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -3485,6 +3485,17 @@ make_return_insns (first)
rtx real_return_label = end_of_function_label;
int slots, i;
+#ifdef DELAY_SLOTS_FOR_EPILOGUE
+ /* If a previous pass filled delay slots in the epilogue, things get a
+ bit more complicated, as those filler insns would generally (without
+ data flow analysis) have to be executed after any existing branch
+ delay slot filler insns. It is also unknown whether such a
+ transformation would actually be profitable. Note that the existing
+ code only cares for branches with (some) filled delay slots. */
+ if (current_function_epilogue_delay_list != NULL)
+ return;
+#endif
+
/* See if there is a RETURN insn in the function other than the one we
made for END_OF_FUNCTION_LABEL. If so, set up anything we can't change
into a RETURN to jump to it. */