From 222e2a7620e6520ffaf4fc4e69d79c18da31542e Mon Sep 17 00:00:00 2001 From: "Zancanaro; Carlo" Date: Mon, 24 Sep 2012 09:58:17 +1000 Subject: Add the clang library to the repo (with some of my changes, too). --- clang/test/CodeGen/2008-01-25-ZeroSizedAggregate.c | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 clang/test/CodeGen/2008-01-25-ZeroSizedAggregate.c (limited to 'clang/test/CodeGen/2008-01-25-ZeroSizedAggregate.c') diff --git a/clang/test/CodeGen/2008-01-25-ZeroSizedAggregate.c b/clang/test/CodeGen/2008-01-25-ZeroSizedAggregate.c new file mode 100644 index 0000000..d905985 --- /dev/null +++ b/clang/test/CodeGen/2008-01-25-ZeroSizedAggregate.c @@ -0,0 +1,39 @@ +// RUN: %clang_cc1 %s -emit-llvm -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; +} -- cgit v1.2.3