xref: /llvm-project/llvm/test/CodeGen/X86/tls-android-negative.ll (revision 2f448bf509432c1a19ec46ab8cbc7353c03c6280)
1; RUN: llc < %s -emulated-tls -mtriple=i686-linux-android -relocation-model=pic | FileCheck  %s
2; RUN: llc < %s -emulated-tls -mtriple=x86_64-linux-android -relocation-model=pic | FileCheck  %s
3
4; RUN: llc < %s -mtriple=i686-linux-android -relocation-model=pic | FileCheck  %s
5; RUN: llc < %s -mtriple=x86_64-linux-android -relocation-model=pic | FileCheck  %s
6
7; Make sure that some symboles are not emitted in emulated TLS model.
8
9@external_x = external thread_local global i32
10@external_y = thread_local global i32 7
11@internal_y = internal thread_local global i32 9
12@internal_y0 = internal thread_local global i32 0
13
14define ptr @get_external_x() {
15entry:
16  ret ptr @external_x
17}
18
19define ptr @get_external_y() {
20entry:
21  ret ptr @external_y
22}
23
24define ptr @get_internal_y() {
25entry:
26  ret ptr @internal_y
27}
28
29define ptr @get_internal_y0() {
30entry:
31  ret ptr @internal_y0
32}
33
34; no direct access to emulated TLS variables.
35; no definition of emulated TLS variables.
36; no initializer for external TLS variables, __emutls_t.external_x
37; no initializer for 0-initialized TLS variables, __emutls_t.internal_y0
38; not global linkage for __emutls_t.external_y
39
40; CHECK-NOT: external_x@TLS
41; CHECK-NOT: external_y@TLS
42; CHECK-NOT: internal_y@TLS
43; CHECK-NOT: .size external_x
44; CHECK-NOT: .size external_y
45; CHECK-NOT: .size internal_y
46; CHECK-NOT: .size internal_y0
47; CHECK-NOT: __emutls_v.external_x:
48; CHECK-NOT: __emutls_t.external_x:
49; CHECK-NOT: __emutls_t.internal_y0:
50; CHECK-NOT: global __emutls_t.external_y
51; CHECK-NOT: global __emutls_v.internal_y
52; CHECK-NOT: global __emutls_v.internal_y0
53
54; CHECK:     __emutls_t.external_y
55
56; CHECK-NOT: external_x@TLS
57; CHECK-NOT: external_y@TLS
58; CHECK-NOT: internal_y@TLS
59; CHECK-NOT: .size external_x
60; CHECK-NOT: .size external_y
61; CHECK-NOT: .size internal_y
62; CHECK-NOT: .size internal_y0
63; CHECK-NOT: __emutls_v.external_x:
64; CHECK-NOT: __emutls_t.external_x:
65; CHECK-NOT: __emutls_t.internal_y0:
66; CHECK-NOT: global __emutls_t.external_y
67; CHECK-NOT: global __emutls_v.internal_y
68; CHECK-NOT: global __emutls_v.internal_y0
69