aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-01-05 10:45:59 +0000
committerJeff Law <law@gcc.gnu.org>1998-01-05 03:45:59 -0700
commit8fa4e1b4e1afecee8930c962f925bcf7759c352e (patch)
treee8e817de0f597241d337f31c2b573ab6bbec257d /gcc
parenteb774d8d9a7d80374676abd3d98c2df8d85ccd8a (diff)
downloadgcc-8fa4e1b4e1afecee8930c962f925bcf7759c352e.zip
gcc-8fa4e1b4e1afecee8930c962f925bcf7759c352e.tar.gz
gcc-8fa4e1b4e1afecee8930c962f925bcf7759c352e.tar.bz2
mips.c (mips_expand_prologue): Handle large frame with no outgoing arguments for mips16.
* mips.c (mips_expand_prologue): Handle large frame with no outgoing arguments for mips16. (mips_expand_epilogue): Pass "orig_tsize" to save_restore_insns. Don't lose if tsize is zero after handling large stack for mips16. * mips.md (return): For trivial return, return address is in $31. From-SVN: r17294
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/mips/mips.c13
-rw-r--r--gcc/config/mips/mips.h2
-rw-r--r--gcc/config/mips/mips.md9
4 files changed, 18 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 06b3897..f4c63a9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+Mon Jan 5 11:39:49 1998 Jeffrey A Law (law@cygnus.com)
+
+ * mips.c (mips_expand_prologue): Handle large frame with no outgoing
+ arguments for mips16.
+ (mips_expand_epilogue): Pass "orig_tsize" to save_restore_insns.
+ Don't lose if tsize is zero after handling large stack for mips16.
+ * mips.md (return): For trivial return, return address is in $31.
+
Sun Jan 4 20:24:00 1998 Nigel Stephens <nigel@algor.co.uk>
* mips/mips16.S: Various changes to make it work with -msingle-float
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 6ea2659..ebcf0fb 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -1,5 +1,5 @@
/* Subroutines for insn-output.c for MIPS
- Copyright (C) 1989, 90, 91, 93-96, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1989, 90, 91, 93-97, 1998 Free Software Foundation, Inc.
Contributed by A. Lichnewsky, lich@inria.inria.fr.
Changes by Michael Meissner, meissner@osf.org.
64 bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
@@ -6559,9 +6559,10 @@ mips_expand_prologue ()
else if (TARGET_64BIT)
insn = emit_insn (gen_movdi (hard_frame_pointer_rtx, stack_pointer_rtx));
else
- insn= emit_insn (gen_movsi (hard_frame_pointer_rtx, stack_pointer_rtx));
+ insn = emit_insn (gen_movsi (hard_frame_pointer_rtx, stack_pointer_rtx));
- RTX_FRAME_RELATED_P (insn) = 1;
+ if (insn)
+ RTX_FRAME_RELATED_P (insn) = 1;
}
if (TARGET_ABICALLS && mips_abi != ABI_32)
@@ -6749,7 +6750,7 @@ mips_expand_epilogue ()
& (1L << (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST))))
emit_insn (gen_blockage ());
- save_restore_insns (FALSE, tmp_rtx, tsize, (FILE *)0);
+ save_restore_insns (FALSE, tmp_rtx, orig_tsize, (FILE *)0);
/* In mips16 mode with a large frame, we adjust the stack
pointer before restoring the registers. In this case, we
@@ -6759,10 +6760,10 @@ mips_expand_epilogue ()
abort ();
emit_insn (gen_blockage ());
- if (TARGET_LONG64)
+ if (TARGET_LONG64 && tsize != 0)
emit_insn (gen_adddi3 (stack_pointer_rtx, stack_pointer_rtx,
tsize_rtx));
- else
+ else if (tsize != 0)
emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
tsize_rtx));
}
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index e0b9cc3..76b8644 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler. MIPS version.
- Copyright (C) 1989, 90-6, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1989, 90-97, 1998 Free Software Foundation, Inc.
Contributed by A. Lichnewsky (lich@inria.inria.fr).
Changed by Michael Meissner (meissner@osf.org).
64 bit r4000 support by Ian Lance Taylor (ian@cygnus.com) and
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 8fd4dfd..bf44a6f 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -3,7 +3,7 @@
;; Changes by Michael Meissner, meissner@osf.org
;; 64 bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
;; Brendan Eich, brendan@microunity.com.
-;; Copyright (C) 1989, 90-96, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 90-97, 1998 Free Software Foundation, Inc.
;; This file is part of GNU CC.
@@ -8790,12 +8790,7 @@ move\\t%0,%z4\\n\\
(define_insn "return"
[(return)]
"mips_can_use_return_insn ()"
- "*
-{
- if (TARGET_MIPS16)
- return \"%*j\\t$7\";
- return \"%*j\\t$31\";
-}"
+ "%*j\\t$31"
[(set_attr "type" "jump")
(set_attr "mode" "none")
(set_attr "length" "1")])