1; RUN: llc -mtriple=x86_64 %s -o - | FileCheck --check-prefixes=CHECK %s 2 3;; -fpatchable-function-entry=0 -fcf-protection=branch 4define void @f0() "patchable-function-entry"="0" "branch-target-enforcement" { 5; CHECK-LABEL: f0: 6; CHECK-NEXT: .Lfunc_begin0: 7; CHECK: # %bb.0: 8; CHECK-NEXT: endbr64 9; CHECK-NEXT: retq 10; CHECK-NOT: .section __patchable_function_entries 11 ret void 12} 13 14;; -fpatchable-function-entry=1 -fcf-protection=branch 15define void @f1() "patchable-function-entry"="1" { 16; CHECK-LABEL: f1: 17; CHECK-NEXT: .Lfunc_begin1: 18; CHECK: endbr64 19; CHECK-NEXT: nop 20; CHECK-NEXT: retq 21; CHECK: .section __patchable_function_entries,"awo",@progbits,f1,unique,0 22; CHECK-NEXT: .p2align 3 23; CHECK-NEXT: .quad .Lfunc_begin1 24 ret void 25} 26 27;; -fpatchable-function-entry=2,1 -fcf-protection=branch 28define void @f2_1() "patchable-function-entry"="1" "patchable-function-prefix"="1" { 29; CHECK-LABEL: .type f2_1,@function 30; CHECK-NEXT: .Ltmp0: 31; CHECK-NEXT: nop 32; CHECK-NEXT: f2_1: 33; CHECK-NEXT: .Lfunc_begin2: 34; CHECK: # %bb.0: 35; CHECK-NEXT: endbr64 36; CHECK-NEXT: nop 37; CHECK-NEXT: retq 38; CHECK: .Lfunc_end2: 39; CHECK-NEXT: .size f2_1, .Lfunc_end2-f2_1 40; CHECK: .section __patchable_function_entries,"awo",@progbits,f1,unique,0 41; CHECK-NEXT: .p2align 3 42; CHECK-NEXT: .quad .Ltmp0 43 ret void 44} 45 46!llvm.module.flags = !{!0} 47 48!0 = !{i32 4, !"cf-protection-branch", i32 1} 49