diff options
Diffstat (limited to 'clang/test/CodeGen/staticinit.c')
-rw-r--r-- | clang/test/CodeGen/staticinit.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/clang/test/CodeGen/staticinit.c b/clang/test/CodeGen/staticinit.c new file mode 100644 index 0000000..8c5cdd0 --- /dev/null +++ b/clang/test/CodeGen/staticinit.c @@ -0,0 +1,41 @@ +// RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm -o %t %s +// RUN: grep "g.b = internal global i8. getelementptr" %t + +struct AStruct { + int i; + char *s; + double d; +}; + +void f() { + static int i = 42; + static int is[] = { 1, 2, 3, 4 }; + static char* str = "forty-two"; + static char* strs[] = { "one", "two", "three", "four" }; + static struct AStruct myStruct = { 1, "two", 3.0 }; +} + +void g() { + static char a[10]; + static char *b = a; +} + +struct s { void *p; }; + +void foo(void) { + static struct s var = {((void*)&((char*)0)[0])}; +} + +// RUN: grep "f1.l0 = internal global i32 ptrtoint (i32 ()\* @f1 to i32)" %t +int f1(void) { static int l0 = (unsigned) f1; } + +// PR7044 +char *f2(char key) { + switch (key) { + static char _msg[40]; + case '\014': + return _msg; + } + + return 0; +} |