mirror of git://gcc.gnu.org/git/gcc.git
stor-layout.c (place_field): Finalize non-constant offset for the field, if any.
* stor-layout.c (place_field): Finalize non-constant offset for the field, if any. ada/ * gcc-interface/decl.c (create_field_decl_from): Finalize non-constant offset for the field, if any. From-SVN: r209369
This commit is contained in:
parent
069fdd05da
commit
cb27986c9b
|
|
@ -1,3 +1,8 @@
|
||||||
|
2014-04-14 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
|
* stor-layout.c (place_field): Finalize non-constant offset for the
|
||||||
|
field, if any.
|
||||||
|
|
||||||
2014-04-14 Richard Biener <rguenther@suse.de>
|
2014-04-14 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
* tree-switch-conversion.c (lshift_cheap_p): Get speed_p
|
* tree-switch-conversion.c (lshift_cheap_p): Get speed_p
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2014-04-14 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
|
* gcc-interface/decl.c (create_field_decl_from): Finalize non-constant
|
||||||
|
offset for the field, if any.
|
||||||
|
|
||||||
2014-04-09 Eric Botcazou <ebotcazou@adacore.com>
|
2014-04-09 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
Svante Signell <svante.signell@gmail.com>
|
Svante Signell <svante.signell@gmail.com>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8443,7 +8443,8 @@ create_field_decl_from (tree old_field, tree field_type, tree record_type,
|
||||||
if (!new_pos)
|
if (!new_pos)
|
||||||
{
|
{
|
||||||
normalize_offset (&pos, &bitpos, offset_align);
|
normalize_offset (&pos, &bitpos, offset_align);
|
||||||
DECL_FIELD_OFFSET (new_field) = pos;
|
/* Finalize the position. */
|
||||||
|
DECL_FIELD_OFFSET (new_field) = variable_size (pos);
|
||||||
DECL_FIELD_BIT_OFFSET (new_field) = bitpos;
|
DECL_FIELD_BIT_OFFSET (new_field) = bitpos;
|
||||||
SET_DECL_OFFSET_ALIGN (new_field, offset_align);
|
SET_DECL_OFFSET_ALIGN (new_field, offset_align);
|
||||||
DECL_SIZE (new_field) = size;
|
DECL_SIZE (new_field) = size;
|
||||||
|
|
|
||||||
|
|
@ -1417,6 +1417,10 @@ place_field (record_layout_info rli, tree field)
|
||||||
DECL_FIELD_BIT_OFFSET (field) = rli->bitpos;
|
DECL_FIELD_BIT_OFFSET (field) = rli->bitpos;
|
||||||
SET_DECL_OFFSET_ALIGN (field, rli->offset_align);
|
SET_DECL_OFFSET_ALIGN (field, rli->offset_align);
|
||||||
|
|
||||||
|
/* Evaluate nonconstant offsets only once, either now or as soon as safe. */
|
||||||
|
if (TREE_CODE (DECL_FIELD_OFFSET (field)) != INTEGER_CST)
|
||||||
|
DECL_FIELD_OFFSET (field) = variable_size (DECL_FIELD_OFFSET (field));
|
||||||
|
|
||||||
/* If this field ended up more aligned than we thought it would be (we
|
/* If this field ended up more aligned than we thought it would be (we
|
||||||
approximate this by seeing if its position changed), lay out the field
|
approximate this by seeing if its position changed), lay out the field
|
||||||
again; perhaps we can use an integral mode for it now. */
|
again; perhaps we can use an integral mode for it now. */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue