xref: /llvm-project/llvm/test/CodeGen/ARM/dso-local-func.ll (revision 9a2b14afa02e46acbc7838bafa8d9e59b7cc86b8)
1;; Check that we emit a $local alias for a dso_local function definition
2; RUN: llc -mtriple=armv7-linux-gnueabi -relocation-model=static < %s \
3; RUN:   | FileCheck %s --check-prefixes=CHECK,STATIC
4; RUN: llc -mtriple=armv7-linux-gnueabi -relocation-model=pic < %s \
5; RUN:   | FileCheck %s --check-prefixes=CHECK,PIC
6
7define dso_local ptr @dsolocal_func() nounwind {
8; CHECK-LABEL: 	.globl	dsolocal_func
9; CHECK-NEXT: 	.p2align	2
10; CHECK-NEXT: 	.type	dsolocal_func,%function
11; CHECK-NEXT: 	.code	32
12; CHECK-NEXT: dsolocal_func:
13; PIC-NEXT: .Ldsolocal_func$local:
14; CHECK-NEXT: 	.fnstart
15; CHECK-NEXT: @ %bb.0:
16; STATIC-NEXT: 	movw	r0, :lower16:dsolocal_func
17; STATIC-NEXT: 	movt	r0, :upper16:dsolocal_func
18; STATIC-NEXT: 	bx	lr
19; PIC-NEXT:     ldr	r0, .LCPI0_0
20; PIC-NEXT:   .LPC0_0:
21; PIC-NEXT:     add	r0, pc, r0
22; PIC-NEXT:     bx	lr
23; PIC-NEXT:     .p2align	2
24; PIC-NEXT:   @ %bb.1:
25; PIC-NEXT:   .LCPI0_0:
26; PIC-NEXT:     .long	dsolocal_func-(.LPC0_0+8)
27; CHECK-NEXT: .Lfunc_end0:
28; CHECK-NEXT: 	.size	dsolocal_func, .Lfunc_end0-dsolocal_func
29; CHECK-NEXT: 	.cantunwind
30; CHECK-NEXT: 	.fnend
31  ret ptr @dsolocal_func
32}
33