re PR target/18916 (mis-aligned vector code with copy memory (-maltivec))
authorAlan Modra <amodra@bigpond.net.au>
Tue, 11 Jan 2005 09:51:17 +0000 (09:51 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Tue, 11 Jan 2005 09:51:17 +0000 (20:21 +1030)
commitbfc45551d5ace42f4b6133c05f010cf5eb5cb9f3
tree8327d7ab80bc3b691512853606494ea8aaaa0ae4
parentd3f6e07b9a129f1f090e4290c54448cacc0e0eb1
re PR target/18916 (mis-aligned vector code with copy memory (-maltivec))

PR target/18916
* builtins.c (std_gimplify_va_arg_expr): Adjust alignment of *ap.
* expr.h (struct locate_and_pad_arg_data): Add "boundary".
* function.c (locate_and_pad_parm): Set new field.
(assign_parm_find_stack_rtl): Use it instead of FUNCTION_ARG_BOUNDARY.
Tweak where_pad test to include "none".  Always set mem align for
stack_parm.
(assign_parm_adjust_stack_rtl): Discard stack_parm if alignment
not sufficient for type.
(assign_parm_setup_block): If stack_parm is zero on entry, always
make a new stack local.  Block move old stack parm if necessary
to new aligned stack local.
(assign_parm_setup_stack): Use a block move to handle
potentially misaligned entry_parm.
(assign_parms_unsplit_complex): Specify required alignment when
creating stack local.
* calls.c (compute_argument_addresses): Override alignment of stack
arg calculated from its type with the alignment given by
FUNCTION_ARG_BOUNDARY.
(store_one_arg): Likewise.

From-SVN: r93179
gcc/ChangeLog
gcc/builtins.c
gcc/calls.c
gcc/expr.h
gcc/function.c