summaryrefslogtreecommitdiff
path: root/gnu/egcs/gcc/config
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2004-06-09 23:09:28 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2004-06-09 23:09:28 +0000
commita9f837dc52e386535a5e0d5081c4fea2e07276e3 (patch)
treee9bd781a9b6d01b742870293e9fb81f7de549869 /gnu/egcs/gcc/config
parentf2e19766833f6503536e96fbba85318691aeac27 (diff)
In FUNCTION_ARG_ADVANCE(), do not pad the register position counter if the
parameter is going to hit the stack.
Diffstat (limited to 'gnu/egcs/gcc/config')
-rw-r--r--gnu/egcs/gcc/config/m88k/m88k.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gnu/egcs/gcc/config/m88k/m88k.c b/gnu/egcs/gcc/config/m88k/m88k.c
index 76b860fc907..8cb0b533139 100644
--- a/gnu/egcs/gcc/config/m88k/m88k.c
+++ b/gnu/egcs/gcc/config/m88k/m88k.c
@@ -2591,9 +2591,6 @@ m88k_function_arg_advance (args_so_far, mode, type, named)
mode = BLKmode;
bytes = (mode != BLKmode) ? GET_MODE_SIZE (mode) : int_size_in_bytes(type);
- if ((*args_so_far & 1) && (mode == DImode || mode == DFmode
- || ((type != 0) && TYPE_ALIGN (type) > BITS_PER_WORD)))
- (*args_so_far)++;
/* as soon as we put a structure of 32 bytes or more on stack, everything
needs to go on stack, or varargs will lose. */
@@ -2607,6 +2604,10 @@ m88k_function_arg_advance (args_so_far, mode, type, named)
&& (TYPE_ALIGN (type) != BITS_PER_WORD || bytes != UNITS_PER_WORD))
return;
+ if ((*args_so_far & 1) && (mode == DImode || mode == DFmode
+ || ((type != 0) && TYPE_ALIGN (type) > BITS_PER_WORD)))
+ (*args_so_far)++;
+
(*args_so_far) += (bytes + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
}