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