blob: 3ffcc7b0c57876f5037cad1093935304c6468d28 [file] [log] [blame]
Eric Christopher3883e662011-07-26 22:17:02 +00001// RUN: %clang_cc1 %s -emit-llvm -o -
NAKAMURA Takumia0fed122012-09-12 14:26:34 +00002// REQUIRES: LP64
Eric Christopher3883e662011-07-26 22:17:02 +00003
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}