diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 1996-10-22 22:28:41 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 1996-10-22 22:28:41 +0000 |
commit | efcedf427c50b5eb03f37647034d8eb505b5c2df (patch) | |
tree | ffca11d1fbba3507db4cb32605c171e78a2bdef3 /gcc | |
parent | 5100ad4664a2531e93612fbf1fb005517727eff3 (diff) | |
download | gcc-efcedf427c50b5eb03f37647034d8eb505b5c2df.zip gcc-efcedf427c50b5eb03f37647034d8eb505b5c2df.tar.gz gcc-efcedf427c50b5eb03f37647034d8eb505b5c2df.tar.bz2 |
Fix mips_function_value for TARGET_SINGLE_FLOAT.
From-SVN: r12996
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/mips/mips.c | 10 |
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) { |