1; RUN: llc -mtriple=aarch64 %s -o - | FileCheck --check-prefixes=CHECK,NOFSECT %s
2; RUN: llc -mtriple=aarch64 -function-sections %s -o - | FileCheck --check-prefixes=CHECK,FSECT %s
3; RUN: llc -mtriple=aarch64 -no-integrated-as %s -o - | FileCheck --check-prefix=NOLINK %s
4
5; NOLINK-NOT: "awo"
6; NOLINK-NOT: ,unique,0
7
8define i32 @f0() "patchable-function-entry"="0" {
9; CHECK-LABEL: f0:
10; CHECK-NEXT: .Lfunc_begin0:
11; CHECK-NOT:   nop
12; CHECK:       mov w0, wzr
13; CHECK-NOT:   .section __patchable_function_entries
14  ret i32 0
15}
16
17define i32 @f1() "patchable-function-entry"="1" {
18; CHECK-LABEL: f1:
19; CHECK-NEXT: .Lfunc_begin1:
20; CHECK:       nop
21; CHECK-NEXT:  mov w0, wzr
22; CHECK:       .section __patchable_function_entries,"awo",@progbits,f1,unique,0
23; CHECK-NEXT:  .p2align 3
24; CHECK-NEXT:  .xword .Lfunc_begin1
25  ret i32 0
26}
27
28define void @f2() "patchable-function-entry"="2" {
29; CHECK-LABEL: f2:
30; CHECK-NEXT: .Lfunc_begin2:
31; CHECK-COUNT-2: nop
32; CHECK-NEXT:  ret
33; NOFSECT:     .section __patchable_function_entries,"awo",@progbits,f1,unique,0
34; FSECT:       .section __patchable_function_entries,"awo",@progbits,f2,unique,1
35; CHECK-NEXT:  .p2align 3
36; CHECK-NEXT:  .xword .Lfunc_begin2
37  ret void
38}
39
40$f3 = comdat any
41define void @f3() "patchable-function-entry"="3" comdat {
42; CHECK-LABEL: f3:
43; CHECK-NEXT: .Lfunc_begin3:
44; CHECK-COUNT-3: nop
45; CHECK-NEXT:  ret
46; NOFSECT:     .section __patchable_function_entries,"aGwo",@progbits,f3,comdat,f3,unique,1
47; FSECT:       .section __patchable_function_entries,"aGwo",@progbits,f3,comdat,f3,unique,2
48; CHECK-NEXT:  .p2align 3
49; CHECK-NEXT:  .xword .Lfunc_begin3
50  ret void
51}
52
53$f5 = comdat any
54define void @f5() "patchable-function-entry"="5" comdat {
55; CHECK-LABEL: f5:
56; CHECK-NEXT: .Lfunc_begin4:
57; CHECK-COUNT-5: nop
58; CHECK-NEXT:  sub sp, sp, #16
59; NOFSECT      .section __patchable_function_entries,"aGwo",@progbits,f5,comdat,f5,unique,2
60; FSECT:       .section __patchable_function_entries,"aGwo",@progbits,f5,comdat,f5,unique,3
61; CHECK:       .p2align 3
62; CHECK-NEXT:  .xword .Lfunc_begin4
63  %frame = alloca i8, i32 16
64  ret void
65}
66