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