Personally, I would have not had a DECL_SIZE, i would have made
    TYPE_SIZE express the type size properly (IE not always a multiple).

    What is the incredibly good reason we have them both, other than to save
    memory in the number of bitfield types we create?

Because we need to have a way to express the semantic concept of having
an object of the type that has a slightly different representation than
the type.  We could do this by making a new type for that object (Ada
does this in some cases) and having conversions all over the place, but
it's a mess.

Bitfields are one example of this and so is the programmer specifying that
some object have a larger alignment and/or size than its type would otherwise
require.

One hole in our typing system, by the way, is that there's no DECL_SIZE
equivalent for the component type in an array so if you want to have an
array of a type where the component is to be viewed as wider than the
size of the type, you *do* have to make a new type to do that,

Reply via email to