41 lines · c
1// RUN: %clang_cc1 %s -emit-llvm -o -2// REQUIRES: LP643 4// Aggregates of size zero should be dropped from argument list.5typedef long int Tlong;6struct S2411 {7 __attribute__((aligned)) Tlong:0;8};9 10extern struct S2411 a2411[5];11extern void checkx2411(struct S2411);12void test2411(void) {13 checkx2411(a2411[0]);14}15 16// Proper handling of zero sized fields during type conversion.17typedef unsigned long long int Tal2ullong __attribute__((aligned(2)));18struct S2525 {19 Tal2ullong: 0;20 struct {21 } e;22};23struct S2525 s2525;24 25struct {26 signed char f;27 char :0;28 struct{}h;29 char * i[5];30} data; 31 32// Taking address of a zero sized field.33struct Z {};34struct Y {35 int i;36 struct Z z;37};38void *f(struct Y *y) {39 return &y->z;40}41