summaryrefslogtreecommitdiff
path: root/test/CodeGen/designated-initializers.c
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-09-06 00:13:11 +0000
committerChris Lattner <sabre@nondot.org>2010-09-06 00:13:11 +0000
commitbd7de38eae1fc20ee88db63f469c54241bc240f8 (patch)
treeeaff2dec2ed9ee1f82e1b6f4ae4ebbefc267e5a0 /test/CodeGen/designated-initializers.c
parentd0db03a561671b8b466b07026cc8fbbb037bb639 (diff)
downloadclang-bd7de38eae1fc20ee88db63f469c54241bc240f8.tar.gz
move the hackaround for PR6537 to catch unions as well,
fixing the ICE in PR7151 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113130 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/designated-initializers.c')
-rw-r--r--test/CodeGen/designated-initializers.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/test/CodeGen/designated-initializers.c b/test/CodeGen/designated-initializers.c
index 49f57ad062..312d785652 100644
--- a/test/CodeGen/designated-initializers.c
+++ b/test/CodeGen/designated-initializers.c
@@ -8,10 +8,10 @@ struct foo {
// CHECK: @u = global %union.anon zeroinitializer
union { int i; float f; } u = { };
-// CHECK: @u2 = global %0 { i32 0, [4 x i8] undef }
+// CHECK: @u2 = global %1 { i32 0, [4 x i8] undef }
union { int i; double f; } u2 = { };
-// CHECK: @u3 = global %1 zeroinitializer
+// CHECK: @u3 = global %2 zeroinitializer
union { double f; int i; } u3 = { };
// CHECK: @b = global [2 x i32] [i32 0, i32 22]
@@ -19,7 +19,7 @@ int b[2] = {
[1] = 22
};
-int main(int argc, char **argv)
+void test1(int argc, char **argv)
{
// CHECK: internal global %struct.foo { i8* null, i32 1024 }
static struct foo foo = {
@@ -33,5 +33,24 @@ int main(int argc, char **argv)
// CHECK-NOT: call void @llvm.memset
union { int i; float f; } u3;
- // CHECK: ret i32
+ // CHECK: ret void
+}
+
+
+// PR7151
+struct S {
+ int nkeys;
+ int *keys;
+ union {
+ void *data;
+ };
+};
+
+void test2() {
+ struct S *btkr;
+
+ *btkr = (struct S) {
+ .keys = 0,
+ { .data = 0 },
+ };
}