aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2000-03-06 18:55:17 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2000-03-06 18:55:17 +0100
commitc137830fba1ab6f1ae91ad5aec71573af7023c9d (patch)
treea743c5645689ac515047d5c883a5c9965eb3d432
parent133a40d2476dd872623a89bf2b4db56d31ea3497 (diff)
downloadgcc-c137830fba1ab6f1ae91ad5aec71573af7023c9d.zip
gcc-c137830fba1ab6f1ae91ad5aec71573af7023c9d.tar.gz
gcc-c137830fba1ab6f1ae91ad5aec71573af7023c9d.tar.bz2
sparc.c (eligible_for_epilogue_delay): Accept floating point instructions for epilogue delay.
* config/sparc/sparc.c (eligible_for_epilogue_delay): Accept floating point instructions for epilogue delay. From-SVN: r32362
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sparc/sparc.c12
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8a98ec8..4cffd3b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-03-06 Jakub Jelinek <jakub@redhat.com>
+
+ * config/sparc/sparc.c (eligible_for_epilogue_delay): Accept
+ floating point instructions for epilogue delay.
+
2000-03-06 Mark Mitchell <mark@codesourcery.com>
* function.c (free_temps_for_rtl_expr): Don't free slots
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 4045db2..d6dbb97 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -2394,10 +2394,20 @@ eligible_for_epilogue_delay (trial, slot)
/* Otherwise, only operations which can be done in tandem with
a `restore' or `return' insn can go into the delay slot. */
if (GET_CODE (SET_DEST (pat)) != REG
- || REGNO (SET_DEST (pat)) >= 32
|| REGNO (SET_DEST (pat)) < 24)
return 0;
+ /* If this instruction sets up floating point register and we have a return
+ instruction, it can probably go in. But restore will not work
+ with FP_REGS. */
+ if (REGNO (SET_DEST (pat)) >= 32)
+ {
+ if (TARGET_V9 && ! epilogue_renumber (&pat, 1)
+ && (get_attr_in_uncond_branch_delay (trial) == IN_BRANCH_DELAY_TRUE))
+ return 1;
+ return 0;
+ }
+
/* The set of insns matched here must agree precisely with the set of
patterns paired with a RETURN in sparc.md. */