------- Comment #16 from ubizjak at gmail dot com 2008-03-10 12:48 ------- (In reply to comment #14) > Does MS bitfield struct require 8byte alignment for long long field > for 32bit target?
Can you try following patch (this will aling DImode values to their natural alignment - if bigger than default alignment - when MS bitfield is used): Index: stor-layout.c =================================================================== --- stor-layout.c (revision 133071) +++ stor-layout.c (working copy) @@ -699,6 +699,9 @@ update_alignment_for_field (record_layou && ! integer_zerop (DECL_SIZE (rli->prev_field))))) { unsigned int type_align = TYPE_ALIGN (type); + unsigned int type_size + = tree_low_cst (TYPE_SIZE_UNIT (type), 1) * BITS_PER_UNIT; + type_align = MAX (type_align, type_size); type_align = MAX (type_align, desired_align); if (maximum_field_alignment != 0) type_align = MIN (type_align, maximum_field_alignment); -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35496