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

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Conservative patch:

Index: gcc/tree-predcom.c
===================================================================
--- gcc/tree-predcom.c  (revision 236159)
+++ gcc/tree-predcom.c  (working copy)
@@ -1391,9 +1395,10 @@ ref_at_iteration (data_reference_p dr, i
       && DECL_BIT_FIELD (TREE_OPERAND (DR_REF (dr), 1)))
     {
       tree field = TREE_OPERAND (DR_REF (dr), 1);
+      tree type = build_aligned_type (DECL_BIT_FIELD_TYPE (field),
+                                     BITS_PER_UNIT);
       return build3 (BIT_FIELD_REF, TREE_TYPE (DR_REF (dr)),
-                    build2 (MEM_REF, DECL_BIT_FIELD_TYPE (field),
-                            addr, alias_ptr),
+                    build2 (MEM_REF, type, addr, alias_ptr),
                     DECL_SIZE (field), bitsize_zero_node);
     }
   else


better for archs where unaligned matters for code-gen would be to
base the ref off DECL_BIT_FIELD_REPRESENTATIVE (though that doesn't
seem to have meaningful alignment either in this case).

Reply via email to