Commit e700c8ec by Richard Stallman

(push_init_level): Align here for element of record.

(process_init_element): Not here (was before call to push_init_level).

From-SVN: r5891
parent e174accc
...@@ -5018,6 +5018,24 @@ push_init_level (implicit) ...@@ -5018,6 +5018,24 @@ push_init_level (implicit)
break; 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 = (struct constructor_stack *) xmalloc (sizeof (struct constructor_stack));
p->type = constructor_type; p->type = constructor_type;
p->fields = constructor_fields; p->fields = constructor_fields;
...@@ -5831,23 +5849,6 @@ process_init_element (value) ...@@ -5831,23 +5849,6 @@ process_init_element (value)
&& (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
|| fieldcode == UNION_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); push_init_level (1);
continue; continue;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment