aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>1996-10-22 22:28:41 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>1996-10-22 22:28:41 +0000
commitefcedf427c50b5eb03f37647034d8eb505b5c2df (patch)
treeffca11d1fbba3507db4cb32605c171e78a2bdef3
parent5100ad4664a2531e93612fbf1fb005517727eff3 (diff)
downloadgcc-efcedf427c50b5eb03f37647034d8eb505b5c2df.zip
gcc-efcedf427c50b5eb03f37647034d8eb505b5c2df.tar.gz
gcc-efcedf427c50b5eb03f37647034d8eb505b5c2df.tar.bz2
Fix mips_function_value for TARGET_SINGLE_FLOAT.
From-SVN: r12996
-rw-r--r--gcc/config/mips/mips.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 3bfd940..e2b99c7 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -5894,7 +5894,15 @@ mips_function_value (valtype, func)
/* ??? How should we return complex float? */
if (mclass == MODE_FLOAT || mclass == MODE_COMPLEX_FLOAT)
- reg = FP_RETURN;
+ {
+ if (TARGET_SINGLE_FLOAT
+ && (mclass == MODE_FLOAT
+ ? GET_MODE_SIZE (mode) > 4
+ : GET_MODE_SIZE (mode) / 2 > 4))
+ reg = GP_RETURN;
+ else
+ reg = FP_RETURN;
+ }
else if (TREE_CODE (valtype) == RECORD_TYPE
&& mips_abi != ABI_32 && mips_abi != ABI_EABI)
{