From a9f837dc52e386535a5e0d5081c4fea2e07276e3 Mon Sep 17 00:00:00 2001 From: Miod Vallat Date: Wed, 9 Jun 2004 23:09:28 +0000 Subject: In FUNCTION_ARG_ADVANCE(), do not pad the register position counter if the parameter is going to hit the stack. --- gnu/egcs/gcc/config/m88k/m88k.c | 7 ++++--- 1 file 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; } -- cgit v1.2.3