xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGen/tls-model.c (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-GD
2*f4a2713aSLionel Sambuc // RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -ftls-model=global-dynamic -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-GD
3*f4a2713aSLionel Sambuc // RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -ftls-model=local-dynamic -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-LD
4*f4a2713aSLionel Sambuc // RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -ftls-model=initial-exec -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-IE
5*f4a2713aSLionel Sambuc // RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -ftls-model=local-exec -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-LE
6*f4a2713aSLionel Sambuc 
7*f4a2713aSLionel Sambuc int __thread x;
f()8*f4a2713aSLionel Sambuc int f() {
9*f4a2713aSLionel Sambuc   static int __thread y;
10*f4a2713aSLionel Sambuc   return y++;
11*f4a2713aSLionel Sambuc }
12*f4a2713aSLionel Sambuc int __thread __attribute__((tls_model("initial-exec"))) z;
13*f4a2713aSLionel Sambuc 
14*f4a2713aSLionel Sambuc // CHECK-GD: @f.y = internal thread_local global i32 0
15*f4a2713aSLionel Sambuc // CHECK-GD: @x = thread_local global i32 0
16*f4a2713aSLionel Sambuc // CHECK-GD: @z = thread_local(initialexec) global i32 0
17*f4a2713aSLionel Sambuc 
18*f4a2713aSLionel Sambuc // CHECK-LD: @f.y = internal thread_local(localdynamic) global i32 0
19*f4a2713aSLionel Sambuc // CHECK-LD: @x = thread_local(localdynamic) global i32 0
20*f4a2713aSLionel Sambuc // CHECK-LD: @z = thread_local(initialexec) global i32 0
21*f4a2713aSLionel Sambuc 
22*f4a2713aSLionel Sambuc // CHECK-IE: @f.y = internal thread_local(initialexec) global i32 0
23*f4a2713aSLionel Sambuc // CHECK-IE: @x = thread_local(initialexec) global i32 0
24*f4a2713aSLionel Sambuc // CHECK-IE: @z = thread_local(initialexec) global i32 0
25*f4a2713aSLionel Sambuc 
26*f4a2713aSLionel Sambuc // CHECK-LE: @f.y = internal thread_local(localexec) global i32 0
27*f4a2713aSLionel Sambuc // CHECK-LE: @x = thread_local(localexec) global i32 0
28*f4a2713aSLionel Sambuc // CHECK-LE: @z = thread_local(initialexec) global i32 0
29