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

--- Comment #12 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Eric Botcazou from comment #11)
> > So I am testing the patch right now and should be able to send it tomorrow.
> > However, the code already shall already mark the load with the actual
> > alignment the access is being done with. Therefore it seems to me that
> > something in the backend fails to split the unaligned load into several
> > aligned load.
> 
> But what would be the point of this round trip exactly?

I'd say

Index: tree-ssa-math-opts.c
===================================================================
--- tree-ssa-math-opts.c        (revision 211170)
+++ tree-ssa-math-opts.c        (working copy)
@@ -2149,7 +2149,8 @@ bswap_replace (gimple stmt, gimple_stmt_
       unsigned align;

       align = get_object_alignment (src);
-      if (bswap && SLOW_UNALIGNED_ACCESS (TYPE_MODE (load_type), align))
+      if (align < GET_MODE_ALIGNMENT (TYPE_MODE (load_type))
+         && SLOW_UNALIGNED_ACCESS (TYPE_MODE (load_type), align))
        return false;

       /*  Compute address to load from and cast according to the size

is obvious (and pre-approved).

Reply via email to