// RUN: %llvmgcc %s -S -o - // Aggregates of size zero should be dropped from argument list. typedef long int Tlong; struct S2411 { __attribute__((aligned)) Tlong:0; }; extern struct S2411 a2411[5]; extern void checkx2411(struct S2411); void test2411(void) { checkx2411(a2411[0]); } // Proper handling of zero sized fields during type conversion. typedef unsigned long long int Tal2ullong __attribute__((aligned(2))); struct S2525 { Tal2ullong: 0; struct { } e; }; struct S2525 s2525; struct { signed char f; char :0; struct{}h; char * i[5]; } data; // Taking address of a zero sized field. struct Z {}; struct Y { int i; struct Z z; }; void *f(struct Y *y) { return &y->z; }