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 7define i32 @f0() "patchable-function-entry"="0" { 8; CHECK-LABEL: f0: 9; CHECK-NEXT: .Lfunc_begin0: 10; CHECK-NOT: nop 11; CHECK: mov w0, wzr 12; CHECK: .section __patchable_function_entries,"awo",@progbits,f0,unique,0 13; CHECK-NEXT: .p2align 3 14; CHECK-NEXT: .xword .Lfunc_begin0 15 ret i32 0 16} 17 18define i32 @f1() "patchable-function-entry"="1" { 19; CHECK-LABEL: f1: 20; CHECK-NEXT: .Lfunc_begin1: 21; CHECK: nop 22; CHECK-NEXT: mov w0, wzr 23; NOFSECT: .section __patchable_function_entries,"awo",@progbits,f0,unique,0 24; FSECT: .section __patchable_function_entries,"awo",@progbits,f1,unique,1 25; CHECK-NEXT: .p2align 3 26; CHECK-NEXT: .xword .Lfunc_begin1 27 ret i32 0 28} 29 30$f3 = comdat any 31define void @f3() "patchable-function-entry"="3" comdat { 32; CHECK-LABEL: f3: 33; CHECK-NEXT: .Lfunc_begin2: 34; CHECK-COUNT-3: nop 35; CHECK-NEXT: ret 36; NOFSECT: .section __patchable_function_entries,"aGwo",@progbits,f3,comdat,f3,unique,1 37; FSECT: .section __patchable_function_entries,"aGwo",@progbits,f3,comdat,f3,unique,2 38; CHECK-NEXT: .p2align 3 39; CHECK-NEXT: .xword .Lfunc_begin2 40 ret void 41} 42 43$f5 = comdat any 44define void @f5() "patchable-function-entry"="5" comdat { 45; CHECK-LABEL: f5: 46; CHECK-NEXT: .Lfunc_begin3: 47; CHECK-COUNT-5: nop 48; CHECK-NEXT: sub sp, sp, #16 49; NOFSECT .section __patchable_function_entries,"aGwo",@progbits,f5,comdat,f5,unique,2 50; FSECT: .section __patchable_function_entries,"aGwo",@progbits,f5,comdat,f5,unique,3 51; CHECK: .p2align 3 52; CHECK-NEXT: .xword .Lfunc_begin3 53 %frame = alloca i8, i32 16 54 ret void 55} 56