------- 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

Reply via email to