[cfe-dev] Even more clang ideas
mrs at apple.com
Mon Aug 4 12:53:09 PDT 2008
On Aug 3, 2008, at 3:52 PM, John Engelhart wrote:
> Type punning was always frowned upon, and is now
> strictly forbidden in C99. Except for 'union's, C doesn't really
> provide a means for multi-type pointer representations. It's not
> really a question of what proper OO design paradigm is, it's a
> question of "where the rubber meets the road": How do you represent
> the concept in C.
We need not represent it in C. We only need to be able to represent
it in an AST for clang. For gcc, we only need to be able to represent
it in trees/gimple.
> To return anything other than a struct NSArray * breaks C99 type
> aliasing rules. And because ObjC is so tightly integrated with C, and
> the fact that the bulk of the GCC compiler is geared towards C, one
> can not simply dismiss this as 'Well, that's how ObjC defines
Actually, one can. Please see the notion of alias sets in gcc for
> So, my question isn't really what the Objective-C 2.0 manual says
> (which is very little, and definitely not 'standards definition'
> quality), it's more about 'how do you do it?' (in the context of a
> modern, C99 optimizing compiler).
In gcc, easy, TYPE_ALIAS_SET (x) = 0;.
More information about the cfe-dev