diff options
author | Alan Modra <amodra@bigpond.net.au> | 2005-04-21 15:36:01 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@gcc.gnu.org> | 2005-04-21 15:36:01 +0000 |
commit | ac7e839c63bfb19d83e6c81aee68c4435c1915c2 (patch) | |
tree | 2dfc5e3a6714299a3a9c32fe836f4a5b8d767a57 /gcc/expr.c | |
parent | 452ff12a5abd0007509eee1a5d98448841f35923 (diff) | |
download | gcc-ac7e839c63bfb19d83e6c81aee68c4435c1915c2.zip gcc-ac7e839c63bfb19d83e6c81aee68c4435c1915c2.tar.gz gcc-ac7e839c63bfb19d83e6c81aee68c4435c1915c2.tar.bz2 |
Fix for latent bug in splitting arguments exposed by rs6000_arg_partial_bytes rewrite.
Fix for latent bug in splitting arguments exposed by
rs6000_arg_partial_bytes rewrite.
Oked by Richard Henderson.
Co-Authored-By: Fariborz Jahanian <fjahanian@apple.com>
From-SVN: r98507
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -3544,7 +3544,7 @@ emit_push_insn (rtx x, enum machine_mode mode, tree type, rtx size, int not_stack; /* # bytes of start of argument that we must make space for but need not store. */ - int offset = partial % (PARM_BOUNDARY / BITS_PER_WORD); + int offset = partial % (PARM_BOUNDARY / BITS_PER_UNIT); int args_offset = INTVAL (args_so_far); int skip; @@ -3562,8 +3562,9 @@ emit_push_insn (rtx x, enum machine_mode mode, tree type, rtx size, offset = 0; /* Now NOT_STACK gets the number of words that we don't need to - allocate on the stack. */ + allocate on the stack. Convert OFFSET to words too. */ not_stack = (partial - offset) / UNITS_PER_WORD; + offset /= UNITS_PER_WORD; /* If the partial register-part of the arg counts in its stack size, skip the part of stack space corresponding to the registers. |