(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:
Richard Stallman 1993-10-26 06:41:41 +00:00
parent e174accc45
commit e700c8ecce
1 changed files with 18 additions and 17 deletions

View File

@ -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;
}