blob: a2d3e62c8c5d9d62a66ab55bb26e4b5cb915bd8d [file] [log] [blame]
Eric Christopher7b3982b2010-12-02 02:30:43 +00001// RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s
Eli Friedman56ebe502009-04-19 21:05:03 +00002
Eric Christopher7b3982b2010-12-02 02:30:43 +00003// CHECK: @b = external thread_local global
4// CHECK: @d.e = internal thread_local global
5// CHECK: @d.f = internal thread_local global
Hans Wennborg5e2d5de2012-06-23 11:51:46 +00006// CHECK: @f.a = internal thread_local(initialexec) global
Eric Christopher7b3982b2010-12-02 02:30:43 +00007// CHECK: @a = thread_local global
Hans Wennborg5e2d5de2012-06-23 11:51:46 +00008// CHECK: @g = thread_local global
9// CHECK: @h = thread_local(localdynamic) global
10// CHECK: @i = thread_local(initialexec) global
11// CHECK: @j = thread_local(localexec) global
12
Eli Friedman56ebe502009-04-19 21:05:03 +000013__thread int a;
14extern __thread int b;
Eric Christopher7b3982b2010-12-02 02:30:43 +000015int c() { return *&b; }
Eli Friedman56ebe502009-04-19 21:05:03 +000016int d() {
17 __thread static int e;
18 __thread static union {float a; int b;} f = {.b = 1};
Eric Christopher7b3982b2010-12-02 02:30:43 +000019 return 0;
Eli Friedman56ebe502009-04-19 21:05:03 +000020}
21
Hans Wennborg5e2d5de2012-06-23 11:51:46 +000022__thread int g __attribute__((tls_model("global-dynamic")));
23__thread int h __attribute__((tls_model("local-dynamic")));
24__thread int i __attribute__((tls_model("initial-exec")));
25__thread int j __attribute__((tls_model("local-exec")));
26
27int f() {
28 __thread static int a __attribute__((tls_model("initial-exec")));
29 return a++;
30}