13573b2c84372d9484296fa658f5276f6c09acb92Daniel Dunbar// RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm -o %t %s
2a4996b889ffe46f13e7f81d14a31bc22342ed368Daniel Dunbar// RUN: grep "g.b = internal global i8. getelementptr" %t
32ecd9011b3bcb1a76c7a12f19a74443869e16664Devang Patel
4253e0a7a1192cea6d4e684a27e7d723915d07a4fOliver Huntstruct AStruct {
525cf760b54d3b88633827501013bc51a29b28abaMike Stump  int i;
625cf760b54d3b88633827501013bc51a29b28abaMike Stump  char *s;
725cf760b54d3b88633827501013bc51a29b28abaMike Stump  double d;
8253e0a7a1192cea6d4e684a27e7d723915d07a4fOliver Hunt};
9253e0a7a1192cea6d4e684a27e7d723915d07a4fOliver Hunt
102ecd9011b3bcb1a76c7a12f19a74443869e16664Devang Patelvoid f() {
112ecd9011b3bcb1a76c7a12f19a74443869e16664Devang Patel  static int i = 42;
12253e0a7a1192cea6d4e684a27e7d723915d07a4fOliver Hunt  static int is[] = { 1, 2, 3, 4 };
13253e0a7a1192cea6d4e684a27e7d723915d07a4fOliver Hunt  static char* str = "forty-two";
14253e0a7a1192cea6d4e684a27e7d723915d07a4fOliver Hunt  static char* strs[] = { "one", "two", "three", "four" };
15253e0a7a1192cea6d4e684a27e7d723915d07a4fOliver Hunt  static struct AStruct myStruct = { 1, "two", 3.0 };
162ecd9011b3bcb1a76c7a12f19a74443869e16664Devang Patel}
17934fb023ee1feadb9e2225c46a8d816f921b8b12Lauro Ramos Venancio
18934fb023ee1feadb9e2225c46a8d816f921b8b12Lauro Ramos Venanciovoid g() {
19934fb023ee1feadb9e2225c46a8d816f921b8b12Lauro Ramos Venancio  static char a[10];
20934fb023ee1feadb9e2225c46a8d816f921b8b12Lauro Ramos Venancio  static char *b = a;
21934fb023ee1feadb9e2225c46a8d816f921b8b12Lauro Ramos Venancio}
22a7fa2aa49c075fe5fc82f37fc4ff447be0a492bbAnders Carlsson
23a7fa2aa49c075fe5fc82f37fc4ff447be0a492bbAnders Carlssonstruct s { void *p; };
24a7fa2aa49c075fe5fc82f37fc4ff447be0a492bbAnders Carlsson
25a7fa2aa49c075fe5fc82f37fc4ff447be0a492bbAnders Carlssonvoid foo(void) {
26a7fa2aa49c075fe5fc82f37fc4ff447be0a492bbAnders Carlsson  static struct s var = {((void*)&((char*)0)[0])};
27a7fa2aa49c075fe5fc82f37fc4ff447be0a492bbAnders Carlsson}
28f69d19e634d76a675a6efba85af57a6eebeea7d7Daniel Dunbar
29f69d19e634d76a675a6efba85af57a6eebeea7d7Daniel Dunbar// RUN: grep "f1.l0 = internal global i32 ptrtoint (i32 ()\* @f1 to i32)" %t
30f69d19e634d76a675a6efba85af57a6eebeea7d7Daniel Dunbarint f1(void) { static int l0 = (unsigned) f1; }
31f69d19e634d76a675a6efba85af57a6eebeea7d7Daniel Dunbar
32396b4afdad9cadf40d745f0be8156c2e80b8bc9dJohn McCall// PR7044
33396b4afdad9cadf40d745f0be8156c2e80b8bc9dJohn McCallchar *f2(char key) {
34396b4afdad9cadf40d745f0be8156c2e80b8bc9dJohn McCall  switch (key) {
35396b4afdad9cadf40d745f0be8156c2e80b8bc9dJohn McCall    static char _msg[40];
36396b4afdad9cadf40d745f0be8156c2e80b8bc9dJohn McCall  case '\014':
37396b4afdad9cadf40d745f0be8156c2e80b8bc9dJohn McCall    return _msg;
38396b4afdad9cadf40d745f0be8156c2e80b8bc9dJohn McCall  }
39396b4afdad9cadf40d745f0be8156c2e80b8bc9dJohn McCall
40396b4afdad9cadf40d745f0be8156c2e80b8bc9dJohn McCall  return 0;
41396b4afdad9cadf40d745f0be8156c2e80b8bc9dJohn McCall}
42