Home | History | Annotate | Download | only in X86
      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 
     14 define i32* @get_external_x() {
     15 entry:
     16   ret i32* @external_x
     17 }
     18 
     19 define i32* @get_external_y() {
     20 entry:
     21   ret i32* @external_y
     22 }
     23 
     24 define i32* @get_internal_y() {
     25 entry:
     26   ret i32* @internal_y
     27 }
     28 
     29 define i32* @get_internal_y0() {
     30 entry:
     31   ret i32* @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