90 lines · plain
1# RUN: llc --run-pass=arm-branch-targets %s -o - | FileCheck %s2--- |3 target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"4 target triple = "thumbv8.1m.main-arm-unknown-eabi"5 6 define hidden i32 @_Z1fi(i32 %x) "sign-return-address"="non-leaf" "sign-return-address-key"="a_key" "branch-target-enforcement" {7 entry:8 %add = add nsw i32 %x, 19 %call = tail call i32 @_Z1gi(i32 %add)10 %sub = add nsw i32 %call, -111 ret i32 %sub12 }13 14 declare dso_local i32 @_Z1gi(i32)15 16...17---18name: _Z1fi19alignment: 420exposesReturnsTwice: false21legalized: false22regBankSelected: false23selected: false24failedISel: false25tracksRegLiveness: true26hasWinCFI: false27registers: []28liveins:29 - { reg: '$r0', virtual-reg: '' }30frameInfo:31 isFrameAddressTaken: false32 isReturnAddressTaken: false33 hasStackMap: false34 hasPatchPoint: false35 stackSize: 1636 offsetAdjustment: 037 maxAlignment: 438 adjustsStack: true39 hasCalls: true40 stackProtector: ''41 maxCallFrameSize: 042 cvBytesOfCalleeSavedRegisters: 043 hasOpaqueSPAdjustment: false44 hasVAStart: false45 hasMustTailInVarArgFunc: false46 localFrameSize: 047 savePoint: []48 restorePoint: []49fixedStack: []50stack:51 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,52 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true,53 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }54 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,55 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,56 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }57 - { id: 2, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,58 stack-id: default, callee-saved-register: '$r12', callee-saved-restored: true,59 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }60callSites: []61debugValueSubstitutions: []62constants: []63machineFunctionInfo: {}64body: |65 bb.0.entry:66 liveins: $r0, $r7, $lr, $r1267 68 frame-setup t2PAC implicit-def $r12, implicit $lr, implicit $sp69 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp70 frame-setup CFI_INSTRUCTION def_cfa_offset 871 frame-setup CFI_INSTRUCTION offset $lr, -472 frame-setup CFI_INSTRUCTION offset $r7, -873 early-clobber $sp = frame-setup t2STR_PRE killed $r12, $sp, -4, 14 /* CC::al */, $noreg74 frame-setup CFI_INSTRUCTION def_cfa_offset 1275 frame-setup CFI_INSTRUCTION offset $ra_auth_code, -1276 $sp = frame-setup tSUBspi $sp, 1, 14 /* CC::al */, $noreg77 frame-setup CFI_INSTRUCTION def_cfa_offset 1678 renamable $r0, dead $cpsr = nsw tADDi8 killed renamable $r0, 1, 14 /* CC::al */, $noreg79 tBL 14 /* CC::al */, $noreg, @_Z1gi, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $r0, implicit-def $sp, implicit-def $r080 renamable $r0, dead $cpsr = nsw tSUBi8 killed renamable $r0, 1, 14 /* CC::al */, $noreg81 $sp = frame-destroy tADDspi $sp, 1, 14 /* CC::al */, $noreg82 $r12, $sp = frame-destroy t2LDR_POST $sp, 4, 14 /* CC::al */, $noreg83 $sp = frame-destroy t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr84 t2AUT implicit $r12, implicit $lr, implicit $sp85 tBX_RET 14 /* CC::al */, $noreg, implicit killed $r086 87...88# Check PAC is replaces with PACBTI and it has the frame-setup flag89# CHECK-LABEL: bb.0.entry:90# CHECK: frame-setup t2PACBTI