blob: 2dee0432efcf5acc41ba76eda9fb755907028473 [file] [log] [blame]
Nuno Lopes247a1382010-04-18 19:06:43 +00001// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s
Daniel Dunbarf9f03982009-02-13 22:58:39 +00002
Lauro Ramos Venanciodec89732008-02-18 22:44:02 +00003void f1() {
4 // Scalars in braces.
5 int a = { 1 };
Lauro Ramos Venanciodec89732008-02-18 22:44:02 +00006}
7
8void f2() {
9 int a[2][2] = { { 1, 2 }, { 3, 4 } };
10 int b[3][3] = { { 1, 2 }, { 3, 4 } };
11 int *c[2] = { &a[1][1], &b[2][2] };
12 int *d[2][2] = { {&a[1][1], &b[2][2]}, {&a[0][0], &b[1][1]} };
13 int *e[3][3] = { {&a[1][1], &b[2][2]}, {&a[0][0], &b[1][1]} };
Lauro Ramos Venancioe2162c62008-02-19 19:27:31 +000014 char ext[3][3] = {".Y",".U",".V"};
Anders Carlsson0674a742008-01-29 01:28:48 +000015}
Chris Lattner033352b2008-05-04 00:56:25 +000016
17typedef void (* F)(void);
18extern void foo(void);
19struct S { F f; };
20void f3() {
21 struct S a[1] = { { foo } };
22}
23
Daniel Dunbarf9f03982009-02-13 22:58:39 +000024// Constants
Nuno Lopes247a1382010-04-18 19:06:43 +000025// CHECK: @g3 = constant i32 10
26// CHECK: @f4.g4 = internal constant i32 12
Daniel Dunbarf9f03982009-02-13 22:58:39 +000027const int g3 = 10;
28int f4() {
29 static const int g4 = 12;
30 return g4;
31}
Chris Lattnere18aaf22010-03-08 21:08:07 +000032
33// PR6537
34typedef union vec3 {
35 struct { double x, y, z; };
36 double component[3];
37} vec3;
38vec3 f5(vec3 value) {
39 return (vec3) {{
40 .x = value.x
41 }};
42}
John McCall11086fc2010-07-07 05:08:32 +000043
44// rdar://problem/8154689
45void f6() {
46 int x;
47 long ids[] = { (long) &x };
48}
Chris Lattner001b29c2010-10-10 17:49:49 +000049
50
51
52
53// CHECK: @test7 = global{{.*}}{ i32 0, [4 x i8] c"bar\00" }
54// PR8217
55struct a7 {
56 int b;
57 char v[];
58};
59
60struct a7 test7 = { .b = 0, .v = "bar" };
Chris Lattnere6af8862010-12-02 01:58:41 +000061
62
63// PR279 comment #3
64char test8(int X) {
65 char str[100000] = "abc"; // tail should be memset.
66 return str[X];
67// CHECK: @test8(
68// CHECK: call void @llvm.memset
69// CHECK: store i8 97
70// CHECK: store i8 98
71// CHECK: store i8 99
72}