------- Comment #12 from rguenth at gcc dot gnu dot org 2010-07-11 22:37 ------- (In reply to comment #11) > Subject: Re: [4.6 Regression] FAIL: gcc.dg/pr35258.c execution test > > > > The above testcase doesn't work with 4.5 and I doubt it ever worked on > > > PA. The pointer passed to foo is used as is. It's only the memcpy > > > special > > > case that is handled by 4.5 and earlier. > > > > On i?86 we get correct 1-byte alignment for the pointer access while on > > my ia64-cross the MEM has 4-byte alignment which is wrong. t is properly > > 1-byte aligned (and pointer-to packed structs for example will work only > > because there's a handled_component_ref around the pointer dereference). > > On hppa64, I see > > (insn 7 6 8 3 xxx.c:3 (set (reg:SI 71) > (mem:SI (reg/v/f:DI 69 [ p ]) [0 *p_1(D)+0 S4 A32])) -1 (nil)) > > in expand. The alignment is passed into the move expander.
For reference, on i?86 I see (on the 4.5 branch): (insn 6 5 7 3 t.c:3 (set (reg:SI 62) (mem:SI (reg/v/f:DI 60 [ p ]) [0 S4 A8])) -1 (nil)) and on trunk: (insn 6 5 7 3 t.c:3 (set (reg:SI 62) (mem:SI (reg/v/f:DI 60 [ p ]) [0 *p_1(D)+0 S4 A8])) -1 (nil)) Richard. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44903