This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: representation of struct field offsets
On 9/28/06, Richard Kenner <kenner@vlsi1.ultra.nyu.edu> wrote:
> The only trouble you'll probably run into is with fields whose offset
> from the start of a structure is variable.
Exactly. That's the reason it's defined the way it is. There is no way
to synthesize that field from any other in the FIELD_DECL in the most
general case: it is unique information.
Unique, but uncommon.
Thus, it would make sense to make it a union with the other
information with a discriminator. As a plus, you'd be able to tell
variable offset fields by checking a single bit instead of a load
(TREE_CODE <whatevever>).
IE
unsigned int: offset_is_variable:1;
union {
tree offset_when_variable;
unsigned HOST_WIDE_INT offset_when constant;
}
Most of our optimizers just want to know "is this variable
size/variable offset", not "what is the variable offset".