(push_init_level): Align here for element of record.
(process_init_element): Not here (was before call to push_init_level). From-SVN: r5891
This commit is contained in:
parent
e174accc45
commit
e700c8ecce
|
@ -5018,6 +5018,24 @@ push_init_level (implicit)
|
|||
break;
|
||||
}
|
||||
|
||||
/* Structure elements may require alignment. Do this now
|
||||
if necessary for the subaggregate. */
|
||||
if (constructor_incremental && TREE_CODE (constructor_type) == RECORD_TYPE)
|
||||
{
|
||||
/* 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);
|
||||
}
|
||||
}
|
||||
|
||||
p = (struct constructor_stack *) xmalloc (sizeof (struct constructor_stack));
|
||||
p->type = constructor_type;
|
||||
p->fields = constructor_fields;
|
||||
|
@ -5831,23 +5849,6 @@ 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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue