alignment: store_one_arg vs emit_push_insn
DJ Delorie
dj@redhat.com
Mon May 12 22:47:00 GMT 2003
> On Mon, May 12, 2003 at 02:16:49PM -0400, DJ Delorie wrote:
> > Would it be sufficient if it just
> > chose the minimum of the available alignment? If so, then most of the
> > "reorg" would just be commenting the new semantics.
>
> Yes, that would be fine.
How does this look? The tests are still running, but so far no regressions.
2003-05-12 DJ Delorie <dj@redhat.com>
* expr.c (move_by_pieces): Honor the alignment inherent in the
source and destination if available.
Index: expr.c
===================================================================
RCS file: /cvs/uberbaum/gcc/expr.c,v
retrieving revision 1.538
diff -p -2 -r1.538 expr.c
*** expr.c 9 May 2003 06:37:18 -0000 1.538
--- expr.c 12 May 2003 22:43:24 -0000
*************** convert_modes (mode, oldmode, x, unsigne
*** 1464,1468 ****
used to push FROM to the stack.
! ALIGN is maximum alignment we can assume. */
void
--- 1464,1468 ----
used to push FROM to the stack.
! ALIGN is maximum stack alignment we can assume. */
void
*************** move_by_pieces (to, from, len, align)
*** 1477,1480 ****
--- 1477,1485 ----
enum machine_mode mode = VOIDmode, tmode;
enum insn_code icode;
+
+ if (to && MEM_ALIGN (to) > 0)
+ align = MEM_ALIGN (to);
+ if (align < MEM_ALIGN (from) && MEM_ALIGN (from) > 0)
+ align = MEM_ALIGN (from);
data.offset = 0;
More information about the Gcc
mailing list