aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2005-04-21 15:36:01 +0000
committerFariborz Jahanian <fjahanian@gcc.gnu.org>2005-04-21 15:36:01 +0000
commitac7e839c63bfb19d83e6c81aee68c4435c1915c2 (patch)
tree2dfc5e3a6714299a3a9c32fe836f4a5b8d767a57 /gcc/expr.c
parent452ff12a5abd0007509eee1a5d98448841f35923 (diff)
downloadgcc-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.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index b334453..02236af 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -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.