On Tue, 7 Feb 2012, Richard Guenther wrote: > If the C frontend would stop using DECL_INITIAL temporarily for > bitfield FIELD_DECLs we could avoid adding a new member to struct > tree_field_decl - Joseph, is it possible to avoid using DECL_INITIAL?
C++ does the same thing with DECL_INITIAL so I'd expect that to need to change as well - Jason? C only needs an integer width within a limited range; C++ may actually need a general expression here. C currently uses a TREE_LIST of field declarations when parsing a structure. It should be reasonably straightforward to change that to a VEC of structures storing both the declaration and the width, so the width no longer need go in DECL_INITIAL of the declaration, though it will be necessary to check for other code using DECL_INITIAL to check for bit-fields. For example, c-common.c:handle_packed_attribute uses DECL_INITIAL like that; it should be possible to make both C and C++ set DECL_C_BIT_FIELD early enough that such DECL_INITIAL checks can be replaced by a more meaningful DECL_C_BIT_FIELD check. -- Joseph S. Myers jos...@codesourcery.com