blob: 6562d864d1ba7de42213ea77fcef8af499307f1a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
; RUN: llc -verify-machineinstrs -relocation-model=pic < %s | FileCheck %s
target triple = "powerpc-unknown-linux-gnu"
; Test that LR is preserved when PPC32PICGOT clobbers it with a local "bl".
@TLS = external thread_local global i8
; CHECK-LABEL: tls_addr:
; CHECK: mflr [[SAVED_REG:[0-9]+]]
; CHECK: bl [[JUMP:\.L[[:alnum:]_]+]]
; CHECK-NEXT: [[OFFSET:\.L[[:alnum:]_]+]]:
; CHECK-NEXT: .long _GLOBAL_OFFSET_TABLE_-[[OFFSET]]
; CHECK-NEXT: [[JUMP]]
; CHECK-NEXT: mflr {{[0-9]+}}
; CHECK: mtlr [[SAVED_REG]]
; CHECK-NEXT: blr
define ptr @tls_addr() unnamed_addr {
%1 = call ptr @llvm.threadlocal.address.p0(ptr @TLS)
ret ptr %1
}
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)
!llvm.module.flags = !{!0, !1}
!0 = !{i32 8, !"PIC Level", i32 2}
!1 = !{i32 7, !"PIE Level", i32 2}
|