aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-01-10 19:10:11 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-01-10 19:10:11 -0500
commit1374b35799e2266b4c80657779a3294feef9c7ef (patch)
tree23a3b47d00fa21c5d8b714e1860f2c7834961da3 /gcc
parent993102850b1e5dda8300774cbb4e0d8846a9d82a (diff)
downloadgcc-1374b35799e2266b4c80657779a3294feef9c7ef.zip
gcc-1374b35799e2266b4c80657779a3294feef9c7ef.tar.gz
gcc-1374b35799e2266b4c80657779a3294feef9c7ef.tar.bz2
(print_operand, case 'F'): If we have to do the last prolog insn, give
that priority for an unfilled delay slot. From-SVN: r6369
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/a29k/a29k.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/gcc/config/a29k/a29k.c b/gcc/config/a29k/a29k.c
index c4ec53d..10a08b2 100644
--- a/gcc/config/a29k/a29k.c
+++ b/gcc/config/a29k/a29k.c
@@ -1,5 +1,5 @@
/* Subroutines used for code generation on AMD Am29000.
- Copyright (C) 1987, 88, 90, 91, 92, 1993 Free Software Foundation, Inc.
+ Copyright (C) 1987, 88, 90, 91, 92, 93, 1994 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@nyu.edu)
This file is part of GNU CC.
@@ -1031,7 +1031,16 @@ print_operand (file, x, code)
output_addr_const (file, x);
if (dbr_sequence_length () == 0)
{
- if (GET_CODE (x) == SYMBOL_REF
+ /* If this doesn't have its delay slot filled, see if we need to
+ put the last insn of the prolog in it. If not, see if this is
+ a recursive call. If so, we can put the first insn of its
+ prolog in the delay slot. Otherwise, write a nop. */
+ if (a29k_last_prologue_insn)
+ {
+ fprintf (file, "\n\t%s", a29k_last_prologue_insn);
+ a29k_last_prologue_insn = 0;
+ }
+ else if (GET_CODE (x) == SYMBOL_REF
&& ! strcmp (XSTR (x, 0), current_function_name))
fprintf (file, "+4\n\t%s,%d",
a29k_regstack_size >= 64 ? "const gr121" : "sub gr1,gr1",