diff options
author | Richard Henderson <rth@cygnus.com> | 1998-06-30 22:10:51 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-06-30 22:10:51 -0700 |
commit | aac5cc1620c19d41b26c09982ed666e0dae3d453 (patch) | |
tree | 828f62b36645dd969e85f79cb627a5fabb232ee1 /gcc/function.c | |
parent | 1eac9f59f2a15474966ffa2fe591119cc5a4360b (diff) | |
download | gcc-aac5cc1620c19d41b26c09982ed666e0dae3d453.zip gcc-aac5cc1620c19d41b26c09982ed666e0dae3d453.tar.gz gcc-aac5cc1620c19d41b26c09982ed666e0dae3d453.tar.bz2 |
expr.c (emit_group_load, [...]): Rewrite considering the size and alignment of the structure being manipulated.
* expr.c (emit_group_load, emit_group_store): Rewrite considering
the size and alignment of the structure being manipulated.
* expr.c, calls.c, function.c: Update all callers.
* expr.h: Update prototypes.
* cse.c (invalidate): Cope with parallels.
From-SVN: r20867
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/function.c b/gcc/function.c index 9150ebc..67bbc69 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -3945,8 +3945,10 @@ assign_parms (fndecl, second_time) /* Handle calls that pass values in multiple non-contiguous locations. The Irix 6 ABI has examples of this. */ if (GET_CODE (entry_parm) == PARALLEL) - emit_group_store (validize_mem (stack_parm), - entry_parm); + emit_group_store (validize_mem (stack_parm), entry_parm, + int_size_in_bytes (TREE_TYPE (parm)), + (TYPE_ALIGN (TREE_TYPE (parm)) + / BITS_PER_UNIT)); else move_block_from_reg (REGNO (entry_parm), validize_mem (stack_parm), nregs, @@ -4116,7 +4118,10 @@ assign_parms (fndecl, second_time) /* Handle calls that pass values in multiple non-contiguous locations. The Irix 6 ABI has examples of this. */ if (GET_CODE (entry_parm) == PARALLEL) - emit_group_store (validize_mem (stack_parm), entry_parm); + emit_group_store (validize_mem (stack_parm), entry_parm, + int_size_in_bytes (TREE_TYPE (parm)), + (TYPE_ALIGN (TREE_TYPE (parm)) + / BITS_PER_UNIT)); else move_block_from_reg (REGNO (entry_parm), validize_mem (stack_parm), |