blob: 2d1b02a6d1ebef6870b97be5b1db4c37ed197298 [file] [log] [blame]
// RUN: %dragonegg -fpic -O -S %s -o - | FileCheck %s
__thread __attribute((tls_model("global-dynamic"))) int a;
__thread __attribute((tls_model("local-dynamic"))) int b;
__thread __attribute((tls_model("initial-exec"))) int c;
__thread __attribute((tls_model("local-exec"))) int d;
__thread int e;
// CHECK: @e = thread_local unnamed_addr global i32 0
// CHECK: @d = thread_local(localexec) unnamed_addr global i32 0
// CHECK: @c = thread_local(initialexec) unnamed_addr global i32 0
// CHECK: @b = thread_local(localdynamic) unnamed_addr global i32 0
// CHECK: @a = thread_local unnamed_addr global i32 0
extern __thread __attribute((tls_model("global-dynamic"))) int f;
extern __thread __attribute((tls_model("local-dynamic"))) int g;
extern __thread __attribute((tls_model("initial-exec"))) int h;
extern __thread __attribute((tls_model("local-exec"))) int i;
extern __thread int j;
// CHECK: @f = external thread_local global i32
// CHECK: @g = external thread_local(localdynamic) global i32
// CHECK: @h = external thread_local(initialexec) global i32
// CHECK: @i = external thread_local(localexec) global i32
// CHECK: @j = external thread_local global i32
int foo(void) {
return f + g + h + i + j;
}