; RUN: llc < %s | FileCheck %s | |
; Don't try to emit a direct call through a TLS global. | |
; This fixes PR22103 | |
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
@a = external thread_local global i64 | |
; Function Attrs: nounwind | |
define void @_Z1fv() { | |
; CHECK-NOT: callq *$a | |
; CHECK: movq %fs:0, [[RAX:%r..]] | |
; CHECK-NEXT: addq a@GOTTPOFF(%rip), [[RAX]] | |
; CHECK-NEXT: callq *[[RAX]] | |
entry: | |
call void bitcast (i64* @a to void ()*)() | |
ret void | |
} |