diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2004-06-09 23:09:28 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2004-06-09 23:09:28 +0000 |
commit | a9f837dc52e386535a5e0d5081c4fea2e07276e3 (patch) | |
tree | e9bd781a9b6d01b742870293e9fb81f7de549869 /gnu/egcs/gcc/config | |
parent | f2e19766833f6503536e96fbba85318691aeac27 (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.c | 7 |
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; } |