cudcv@warwick.ac.uk (Rob McMahon) (09/29/88)
GCC 1.28.
The subject says it all really. I only noticed this by inspection, but it
looks like a bug waiting to hit someone. store_one_arg() in expr.c calls
emit_block_move with an align argument of TYPE_ALIGN (...) which is in bits,
whereas it wants it in bytes.
Fix:
RCS file: expr.c,v
retrieving revision 1.9.1.7
diff -c -r1.9.1.7 expr.c
*** /tmp/,RCSt1a01426 Wed Sep 28 20:06:37 1988
--- expr.c Wed Sep 28 19:36:17 1988
***************
*** 4285,4291 ****
local variable or parameter. In that case, expand_expr
does not fill our suggested target. */
emit_block_move (arg->stack, arg->value, ARGS_SIZE_RTX (arg->size),
! TYPE_ALIGN (TREE_TYPE (pval)));
/* Now, if this value wanted to be partly in registers,
move the value from the stack to the registers
--- 4285,4291 ----
local variable or parameter. In that case, expand_expr
does not fill our suggested target. */
emit_block_move (arg->stack, arg->value, ARGS_SIZE_RTX (arg->size),
! TYPE_ALIGN (TREE_TYPE (pval)) / BITS_PER_UNIT);
/* Now, if this value wanted to be partly in registers,
move the value from the stack to the registers
Rob
--
UUCP: ...!mcvax!ukc!warwick!cudcv PHONE: +44 203 523037
JANET: cudcv@uk.ac.warwick ARPA: cudcv@warwick.ac.uk
Rob McMahon, Computing Services, Warwick University, Coventry CV4 7AL, England