xref: /aosp_15_r20/external/clang/test/CodeGen/staticinit.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm -o %t %s
2*67e74705SXin Li // RUN: grep "g.b = internal global i8. getelementptr" %t
3*67e74705SXin Li 
4*67e74705SXin Li struct AStruct {
5*67e74705SXin Li   int i;
6*67e74705SXin Li   char *s;
7*67e74705SXin Li   double d;
8*67e74705SXin Li };
9*67e74705SXin Li 
f()10*67e74705SXin Li void f() {
11*67e74705SXin Li   static int i = 42;
12*67e74705SXin Li   static int is[] = { 1, 2, 3, 4 };
13*67e74705SXin Li   static char* str = "forty-two";
14*67e74705SXin Li   static char* strs[] = { "one", "two", "three", "four" };
15*67e74705SXin Li   static struct AStruct myStruct = { 1, "two", 3.0 };
16*67e74705SXin Li }
17*67e74705SXin Li 
g()18*67e74705SXin Li void g() {
19*67e74705SXin Li   static char a[10];
20*67e74705SXin Li   static char *b = a;
21*67e74705SXin Li }
22*67e74705SXin Li 
23*67e74705SXin Li struct s { void *p; };
24*67e74705SXin Li 
foo(void)25*67e74705SXin Li void foo(void) {
26*67e74705SXin Li   static struct s var = {((void*)&((char*)0)[0])};
27*67e74705SXin Li }
28*67e74705SXin Li 
29*67e74705SXin Li // RUN: grep "f1.l0 = internal global i32 ptrtoint (i32 ()\* @f1 to i32)" %t
f1(void)30*67e74705SXin Li int f1(void) { static int l0 = (unsigned) f1; }
31*67e74705SXin Li 
32*67e74705SXin Li // PR7044
f2(char key)33*67e74705SXin Li char *f2(char key) {
34*67e74705SXin Li   switch (key) {
35*67e74705SXin Li     static char _msg[40];
36*67e74705SXin Li   case '\014':
37*67e74705SXin Li     return _msg;
38*67e74705SXin Li   }
39*67e74705SXin Li 
40*67e74705SXin Li   return 0;
41*67e74705SXin Li }
42