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