aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1994-02-06 12:55:34 -0800
committerJim Wilson <wilson@gcc.gnu.org>1994-02-06 12:55:34 -0800
commitdc55be0e841ab755d4f9c09adf4b2349cfe4b9c1 (patch)
tree5acd233c7e1483196324526b123b95408a3409ac /gcc
parent704a7f6e546b23f18b0b87671c973b2f48f0d4d4 (diff)
downloadgcc-dc55be0e841ab755d4f9c09adf4b2349cfe4b9c1.zip
gcc-dc55be0e841ab755d4f9c09adf4b2349cfe4b9c1.tar.gz
gcc-dc55be0e841ab755d4f9c09adf4b2349cfe4b9c1.tar.bz2
(function_arg): When soft-float, don't add bias for
second SFmode argument. From-SVN: r6489
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/mips/mips.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 04097ef..d296af6 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -2819,13 +2819,16 @@ function_arg (cum, mode, type, named)
switch (mode)
{
case SFmode:
- if (cum->gp_reg_found || cum->arg_number >= 2)
+ if (cum->gp_reg_found || cum->arg_number >= 2 || TARGET_SOFT_FLOAT)
regbase = GP_ARG_FIRST;
- else {
- regbase = (TARGET_SOFT_FLOAT) ? GP_ARG_FIRST : FP_ARG_FIRST;
- if (cum->arg_words == 1) /* first arg was float */
- bias = 1; /* use correct reg */
- }
+ else
+ {
+ regbase = FP_ARG_FIRST;
+ /* If the first arg was a float in a floating point register,
+ then set bias to align this float arg properly. */
+ if (cum->arg_words == 1)
+ bias = 1;
+ }
break;