[cfe-commits] r64239 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.def lib/Sema/SemaType.cpp test/Sema/array-constraint.c test/Sema/flexible-array-init.c

Fariborz Jahanian fjahanian at apple.com
Tue Feb 10 17:50:38 PST 2009


BTW, nonfragile abi uses this style of struct definition for many of  
its meta-data.

- Fariborz

On Feb 10, 2009, at 5:25 PM, Mike Stump wrote:

> On Feb 10, 2009, at 2:47 PM, Daniel Dunbar wrote:
>> Agh! Do we really need to accept this!?
>>
>> What does f0 compute:
>> --
>> struct S0 {
>> int a;
>> int b[];
>> };
>
> Note, it _must_ be at the end of the struct.  And the semantics are it
> is of 0 size.  This is useful for malloc (sizeof (base) + n *sizeof
> (elt)) style allocations.  They allow nesting, not because all
> compositions work, but because some do, for example:
>
> struct SB {
>   int i;
> };
>
> struct SD {
>   int a;
>   int b[];
> };
>
> struct S1 {
>   struct SB x;
>   struct SD y;
> };
>
> Hard errors in the cases that don't make sense I think should be fine;
> any existing code, I bet doesn't make that sort of use, and we can
> file a bug report against gcc to slightly tighten up the cases we know
> are insane.
>
> They use array, and array always works, just so long as you only ever
> have 1 element.  I suspect they do this, because C doesn't have
> references.  :-)
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list