re PR ada/19956 (ICE copy_tree_r, at tree-inline.c:2320 on simple Ada code)
2005-03-29 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> PR ada/19956 * utils.c (finish_record_type): Use variable_size when setting sizes. From-SVN: r97186
This commit is contained in:
parent
2813bb6b35
commit
a6de8e2167
1 changed files with 6 additions and 4 deletions
|
@ -668,10 +668,10 @@ finish_record_type (tree record_type, tree fieldlist, bool has_rep,
|
|||
TYPE_MODE (record_type) = BLKmode;
|
||||
|
||||
if (!had_size_unit)
|
||||
TYPE_SIZE_UNIT (record_type) = size_zero_node;
|
||||
|
||||
TYPE_SIZE_UNIT (record_type) = size_zero_node;
|
||||
if (!had_size)
|
||||
TYPE_SIZE (record_type) = bitsize_zero_node;
|
||||
|
||||
/* For all-repped records with a size specified, lay the QUAL_UNION_TYPE
|
||||
out just like a UNION_TYPE, since the size will be fixed. */
|
||||
else if (code == QUAL_UNION_TYPE)
|
||||
|
@ -796,9 +796,11 @@ finish_record_type (tree record_type, tree fieldlist, bool has_rep,
|
|||
: convert (sizetype, size_binop (CEIL_DIV_EXPR, size,
|
||||
bitsize_unit_node)));
|
||||
|
||||
TYPE_SIZE (record_type) = round_up (size, TYPE_ALIGN (record_type));
|
||||
TYPE_SIZE (record_type)
|
||||
= variable_size (round_up (size, TYPE_ALIGN (record_type)));
|
||||
TYPE_SIZE_UNIT (record_type)
|
||||
= round_up (size_unit, TYPE_ALIGN (record_type) / BITS_PER_UNIT);
|
||||
= variable_size (round_up (size_unit,
|
||||
TYPE_ALIGN (record_type) / BITS_PER_UNIT));
|
||||
|
||||
compute_record_mode (record_type);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue