https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61320

--- Comment #56 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to rguent...@suse.de from comment #55)
> On July 17, 2014 6:13:14 PM CEST, "thopre01 at gcc dot gnu.org"
> <gcc-bugzi...@gcc.gnu.org> wrote:
> >https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61320
> >
> >--- Comment #53 from thopre01 at gcc dot gnu.org ---
> >(In reply to thopre01 from comment #52)
> >> (In reply to Eric Botcazou from comment #51)
> >> > 
> >> > TARGET_MEM_REF is supposed to be a valid memory access for the
> >target though
> >> > and, by definition, an unaligned access is not valid for a strict
> >alignment
> >> > target (unless you have a movmisalign pattern), so the problem is
> >the
> >> > TARGET_MEM_REF.
> >> 
> >> So we just need to identify what changes the MEM_REF that bswap
> >introduce
> >> into a TARGET_MEM_REF without taking alignment into account.
> >> 
> >> After bswap it's only a MEM_REF:
> >> 
> >> load_dst_215 = MEM[(unsigned char *)load_src_277];
> >
> >So it changes from a MEM_REF to a TARGET_MEM_REF in ivopts from a quick
> >grep. I
> >don't know how much this system but I can take a look after Cauldron
> >where does
> >this happen and bring the right person into this discussion.
> 
> You need to fix may_be_unaligned (or similar) in ivopts.

So actually that function now looks completely sane (thanks Eric).  So
I still need preprocessed source and a target triplet to configure a cross
for.

There must be missing may_be_unaligned_p calls in IVOPTs.

Reply via email to