; 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}