]> gcc.gnu.org Git - gcc.git/commitdiff
mips.c (mips_expand_prologue): Handle large frame with no outgoing arguments for...
authorJeffrey A Law <law@cygnus.com>
Mon, 5 Jan 1998 10:45:59 +0000 (10:45 +0000)
committerJeff Law <law@gcc.gnu.org>
Mon, 5 Jan 1998 10:45:59 +0000 (03:45 -0700)
        * 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

gcc/ChangeLog
gcc/config/mips/mips.c
gcc/config/mips/mips.h
gcc/config/mips/mips.md

index 06b38972bc0fd18dc471cef42d0ec607d363ef47..f4c63a918c72b7d80d0fdb0cb4568fc02010d7c4 100644 (file)
@@ -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
index 6ea2659ba1c13c36b2e5a7a6deacc72ceff7d3ec..ebcf0fb0d0f7256996a15337861b92106a3deb17 100644 (file)
@@ -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));
     }
index e0b9cc39ee583ef07d1d7a764f7cbac84ed144b1..76b864410a7b4ec37827f440ffa4ccea8bc05956 100644 (file)
@@ -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
index 8fd4dfdaddf647000aadfebefc592c5c52fcac7f..bf44a6f1d1964f4e0cade9aedbd39b385ea80ffb 100644 (file)
@@ -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")])
This page took 0.11776 seconds and 5 git commands to generate.