stor-layout.c (layout_decl): Don't misalign field of variable size for packed record.
* stor-layout.c (layout_decl): Don't misalign field of variable size for packed record. From-SVN: r48384
This commit is contained in:
parent
f11c304305
commit
6790d1bd90
@ -1,5 +1,8 @@
|
|||||||
Sat Dec 29 15:48:54 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
Sat Dec 29 15:48:54 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||||
|
|
||||||
|
* stor-layout.c (layout_decl): Don't misalign field of variable size
|
||||||
|
for packed record.
|
||||||
|
|
||||||
* dwarf2out.c (compute_section_prefix): Avoid cast warning.
|
* dwarf2out.c (compute_section_prefix): Avoid cast warning.
|
||||||
(gen_decl_die): Only check DECL_IGNORED_P on decls.
|
(gen_decl_die): Only check DECL_IGNORED_P on decls.
|
||||||
(dwarf2out_decl): Check for DECL_IGNORED_P only when needed.
|
(dwarf2out_decl): Check for DECL_IGNORED_P only when needed.
|
||||||
|
@ -389,7 +389,15 @@ layout_decl (decl, known_align)
|
|||||||
DECL_BIT_FIELD_TYPE (decl) = DECL_BIT_FIELD (decl) ? type : 0;
|
DECL_BIT_FIELD_TYPE (decl) = DECL_BIT_FIELD (decl) ? type : 0;
|
||||||
if (maximum_field_alignment != 0)
|
if (maximum_field_alignment != 0)
|
||||||
DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), maximum_field_alignment);
|
DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), maximum_field_alignment);
|
||||||
else if (DECL_PACKED (decl))
|
|
||||||
|
/* If the field is of variable size, we can't misalign it since we
|
||||||
|
have no way to make a temporary to align the result. But this
|
||||||
|
isn't an issue if the decl is not addressable. Likewise if it
|
||||||
|
is of unknown size. */
|
||||||
|
else if (DECL_PACKED (decl)
|
||||||
|
&& (DECL_NONADDRESSABLE_P (decl)
|
||||||
|
|| DECL_SIZE_UNIT (decl) == 0
|
||||||
|
|| TREE_CODE (DECL_SIZE_UNIT (decl)) == INTEGER_CST))
|
||||||
{
|
{
|
||||||
DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), BITS_PER_UNIT);
|
DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), BITS_PER_UNIT);
|
||||||
DECL_USER_ALIGN (decl) = 0;
|
DECL_USER_ALIGN (decl) = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user