diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2001-06-02 11:14:06 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2001-06-02 07:14:06 -0400 |
commit | e0cea8d93a0760335c5c5fa8269bb3633196c227 (patch) | |
tree | 5fa74511443ee609e45e64f0848bb19aa235a285 /gcc/tree.h | |
parent | 3af78b060b5ec8bf79a2d1460ed12d7501c91c35 (diff) | |
download | gcc-e0cea8d93a0760335c5c5fa8269bb3633196c227.zip gcc-e0cea8d93a0760335c5c5fa8269bb3633196c227.tar.gz gcc-e0cea8d93a0760335c5c5fa8269bb3633196c227.tar.bz2 |
tree.h (struct record_layout_info_s): New field unpadded_align.
* tree.h (struct record_layout_info_s): New field unpadded_align.
(set_lang_adjust_rli): New declaration.
* stor-layout.c (layout_decl): If DECL is packed, but at alignment
it would have if not packed, do not downgrade DECL_ALIGN.
(lang_adjust_rli, set_lang_adjust_rli): New.
(start_record_layout): Initialize new field unpadded_align.
(debug_rli): Display it.
(place_union_field, place_field): Set it.
(layout_type, case RECORD_TYPE): Call via lang_adjust_rli if set.
From-SVN: r42796
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -2118,12 +2118,17 @@ typedef struct record_layout_info_s unsigned int record_align; /* The alignment of the record so far, not including padding, in bits. */ unsigned int unpacked_align; + /* The alignment of the record so far, allowing for the record to be + padded only at the end, in bits. */ + unsigned int unpadded_align; /* The static variables (i.e., class variables, as opposed to instance variables) encountered in T. */ tree pending_statics; int packed_maybe_necessary; } *record_layout_info; +extern void set_lang_adjust_rli PARAMS ((void (*) PARAMS + ((record_layout_info)))); extern record_layout_info start_record_layout PARAMS ((tree)); extern tree bit_from_pos PARAMS ((tree, tree)); extern tree byte_from_pos PARAMS ((tree, tree)); |