1*67e74705SXin Li // RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li // CHECK: @b = external thread_local global 4*67e74705SXin Li // CHECK: @d.e = internal thread_local global 5*67e74705SXin Li // CHECK: @d.f = internal thread_local global 6*67e74705SXin Li // CHECK: @f.a = internal thread_local(initialexec) global 7*67e74705SXin Li // CHECK: @a = thread_local global 8*67e74705SXin Li // CHECK: @g = thread_local global 9*67e74705SXin Li // CHECK: @h = thread_local(localdynamic) global 10*67e74705SXin Li // CHECK: @i = thread_local(initialexec) global 11*67e74705SXin Li // CHECK: @j = thread_local(localexec) global 12*67e74705SXin Li 13*67e74705SXin Li // CHECK-NOT: @_ZTW 14*67e74705SXin Li // CHECK-NOT: @_ZTH 15*67e74705SXin Li 16*67e74705SXin Li __thread int a; 17*67e74705SXin Li extern __thread int b; c()18*67e74705SXin Liint c() { return *&b; } d()19*67e74705SXin Liint d() { 20*67e74705SXin Li __thread static int e; 21*67e74705SXin Li __thread static union {float a; int b;} f = {.b = 1}; 22*67e74705SXin Li return 0; 23*67e74705SXin Li } 24*67e74705SXin Li 25*67e74705SXin Li __thread int g __attribute__((tls_model("global-dynamic"))); 26*67e74705SXin Li __thread int h __attribute__((tls_model("local-dynamic"))); 27*67e74705SXin Li __thread int i __attribute__((tls_model("initial-exec"))); 28*67e74705SXin Li __thread int j __attribute__((tls_model("local-exec"))); 29*67e74705SXin Li f()30*67e74705SXin Liint f() { 31*67e74705SXin Li __thread static int a __attribute__((tls_model("initial-exec"))); 32*67e74705SXin Li return a++; 33*67e74705SXin Li } 34