From 78e82bbe0b7adf406b7b55fb6af0054a57d304d4 Mon Sep 17 00:00:00 2001
From: Richard Sandiford <rsandifo@gcc.gnu.org>
Date: Sat, 4 Oct 2003 08:11:06 +0000
Subject: [PATCH] mips.c (mips_pad_arg_upward): Pad floating-point arguments
 downward for big-endian o64.

	* config/mips/mips.c (mips_pad_arg_upward): Pad floating-point
	arguments downward for big-endian o64.

From-SVN: r72088
---
 gcc/ChangeLog          | 8 +++++++-
 gcc/config/mips/mips.c | 5 +++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e08571e79418..187375d2b839 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
+2003-10-04  Richard Sandiford  <rsandifo@redhat.com>
+
+	* config/mips/mips.c (mips_pad_arg_upward): Pad floating-point
+	arguments downward for big-endian o64.
+
 2003-10-03  Robert Bowdidge <bowdidge@apple.com>
-        * ggc-page.c: (ggc_pch_write_object) replace fseek() with fwrite() in 
+
+        * ggc-page.c (ggc_pch_write_object): Replace fseek() with fwrite() in 
         PCH generation, avoiding too-frequent flushes when writing to NFS 
         file system.
 
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 6f49f6fdb537..ae27af1cb705 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -3833,6 +3833,11 @@ mips_pad_arg_upward (enum machine_mode mode, tree type)
       : GET_MODE_CLASS (mode) == MODE_INT)
     return false;
 
+  /* Big-endian o64 pads floating-point arguments downward.  */
+  if (mips_abi == ABI_O64)
+    if (type != 0 ? FLOAT_TYPE_P (type) : GET_MODE_CLASS (mode) == MODE_FLOAT)
+      return false;
+
   /* Other types are padded upward for o32, o64, n32 and n64.  */
   if (mips_abi != ABI_EABI)
     return true;
-- 
GitLab