Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/Thumb2/bti-pac-replace-1.mir
- This file was added.
# RUN: llc --run-pass=arm-branch-targets %s -o - | FileCheck %s | |||||
--- | | |||||
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64" | |||||
target triple = "thumbv8.1m.main-arm-unknown-eabi" | |||||
define hidden i32 @_Z1fi(i32 %x) { | |||||
entry: | |||||
%add = add nsw i32 %x, 1 | |||||
%call = tail call i32 @_Z1gi(i32 %add) | |||||
%sub = add nsw i32 %call, -1 | |||||
ret i32 %sub | |||||
} | |||||
declare dso_local i32 @_Z1gi(i32) | |||||
!llvm.module.flags = !{!0, !1, !2} | |||||
!0 = !{i32 1, !"branch-target-enforcement", i32 1} | |||||
!1 = !{i32 1, !"sign-return-address", i32 1} | |||||
!2 = !{i32 1, !"sign-return-address-all", i32 0} | |||||
... | |||||
--- | |||||
name: _Z1fi | |||||
alignment: 4 | |||||
exposesReturnsTwice: false | |||||
legalized: false | |||||
regBankSelected: false | |||||
selected: false | |||||
failedISel: false | |||||
tracksRegLiveness: true | |||||
hasWinCFI: false | |||||
registers: [] | |||||
liveins: | |||||
- { reg: '$r0', virtual-reg: '' } | |||||
frameInfo: | |||||
isFrameAddressTaken: false | |||||
isReturnAddressTaken: false | |||||
hasStackMap: false | |||||
hasPatchPoint: false | |||||
stackSize: 16 | |||||
offsetAdjustment: 0 | |||||
maxAlignment: 4 | |||||
adjustsStack: true | |||||
hasCalls: true | |||||
stackProtector: '' | |||||
maxCallFrameSize: 0 | |||||
cvBytesOfCalleeSavedRegisters: 0 | |||||
hasOpaqueSPAdjustment: false | |||||
hasVAStart: false | |||||
hasMustTailInVarArgFunc: false | |||||
localFrameSize: 0 | |||||
savePoint: '' | |||||
restorePoint: '' | |||||
fixedStack: [] | |||||
stack: | |||||
- { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, | |||||
stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true, | |||||
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } | |||||
- { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4, | |||||
stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true, | |||||
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } | |||||
- { id: 2, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4, | |||||
stack-id: default, callee-saved-register: '$r12', callee-saved-restored: true, | |||||
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } | |||||
callSites: [] | |||||
debugValueSubstitutions: [] | |||||
constants: [] | |||||
machineFunctionInfo: {} | |||||
body: | | |||||
bb.0.entry: | |||||
liveins: $r0, $r7, $lr, $r12 | |||||
frame-setup t2PAC implicit-def $r12, implicit $lr, implicit $sp | |||||
frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp | |||||
frame-setup CFI_INSTRUCTION def_cfa_offset 8 | |||||
frame-setup CFI_INSTRUCTION offset $lr, -4 | |||||
frame-setup CFI_INSTRUCTION offset $r7, -8 | |||||
early-clobber $sp = frame-setup t2STR_PRE killed $r12, $sp, -4, 14 /* CC::al */, $noreg | |||||
frame-setup CFI_INSTRUCTION def_cfa_offset 12 | |||||
frame-setup CFI_INSTRUCTION offset $ra_auth_code, -12 | |||||
$sp = frame-setup tSUBspi $sp, 1, 14 /* CC::al */, $noreg | |||||
frame-setup CFI_INSTRUCTION def_cfa_offset 16 | |||||
renamable $r0, dead $cpsr = nsw tADDi8 killed renamable $r0, 1, 14 /* CC::al */, $noreg | |||||
tBL 14 /* CC::al */, $noreg, @_Z1gi, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $r0, implicit-def $sp, implicit-def $r0 | |||||
renamable $r0, dead $cpsr = nsw tSUBi8 killed renamable $r0, 1, 14 /* CC::al */, $noreg | |||||
$sp = frame-destroy tADDspi $sp, 1, 14 /* CC::al */, $noreg | |||||
$r12, $sp = frame-destroy t2LDR_POST $sp, 4, 14 /* CC::al */, $noreg | |||||
$sp = frame-destroy t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr | |||||
t2AUT implicit $r12, implicit $lr, implicit $sp | |||||
tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0 | |||||
... | |||||
# Check PAC is replaces with PACBTI and it has the frame-setup flag | |||||
# CHECK-LABEL: bb.0.entry: | |||||
# CHECK: frame-setup t2PACBTI | |||||
No newline at end of file |