1 // RUN: clang-cc -triple i386-unknown-unknown -emit-llvm %s -o %t &&
2 
3 void f1() {
4   // Scalars in braces.
5   int a = { 1 };
6 }
7 
8 void 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]} };
14   char ext[3][3] = {".Y",".U",".V"};
15 }
16 
17 typedef void (* F)(void);
18 extern void foo(void);
19 struct S { F f; };
20 void f3() {
21   struct S a[1] = { { foo } };
22 }
23 
24 // Constants
25 // RUN: grep '@g3 = constant i32 10' %t &&
26 // RUN: grep '@f4.g4 = internal constant i32 12' %t
27 const int g3 = 10;
28 int f4() {
29   static const int g4 = 12;
30   return g4;
31 }
32