diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-01-10 19:10:11 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-01-10 19:10:11 -0500 |
commit | 1374b35799e2266b4c80657779a3294feef9c7ef (patch) | |
tree | 23a3b47d00fa21c5d8b714e1860f2c7834961da3 | |
parent | 993102850b1e5dda8300774cbb4e0d8846a9d82a (diff) | |
download | gcc-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
-rw-r--r-- | gcc/config/a29k/a29k.c | 13 |
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", |