From: Richard Stallman Date: Tue, 19 Oct 1993 03:06:44 +0000 (+0000) Subject: (process_init_element): Align structure elements that are subaggregates. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=88687ce983a9e7b6266ae27e3f0a1e782dcdcc8e;p=gcc.git (process_init_element): Align structure elements that are subaggregates. From-SVN: r5798 --- diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 189f3bc5d85..cea82f3a97b 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -5828,6 +5828,23 @@ process_init_element (value) && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE || fieldcode == UNION_TYPE)) { + /* Structure elements may require alignment. Do this now + if necessary for the subaggregate. */ + if (constructor_incremental) + { + /* Advance to offset of this element. */ + if (! tree_int_cst_equal (constructor_bit_index, + DECL_FIELD_BITPOS (constructor_fields))) + { + int next = (TREE_INT_CST_LOW + (DECL_FIELD_BITPOS (constructor_fields)) + / BITS_PER_UNIT); + int here = (TREE_INT_CST_LOW (constructor_bit_index) + / BITS_PER_UNIT); + + assemble_zeros (next - here); + } + } push_init_level (1); continue; }