1# RUN: llc -o - %s -mtriple=aarch64-windows -start-before=prologepilog \ 2# RUN: -stop-after=prologepilog | FileCheck %s 3 4# Check that an unpaired register that is even isn't paired with lr. 5 6# CHECK: early-clobber $sp = frame-setup STPXpre killed $x19, killed $x20, $sp, -4 7# CHECK-NEXT: frame-setup SEH_SaveRegP_X 19, 20, -32 8# CHECK-NEXT: frame-setup STRXui killed $x22, $sp, 2 9# CHECK-NEXT: frame-setup SEH_SaveReg 22, 16 10# CHECK-NEXT: frame-setup STRXui killed $lr, $sp, 3 11# CHECK-NEXT: frame-setup SEH_SaveReg 30, 24 12# CHECK-NEXT: frame-setup SEH_PrologEnd 13 14--- | 15 16 define dso_local i32 @func(i32 %a) { ret i32 %a } 17 declare dso_local i32 @other() 18 19... 20--- 21name: func 22alignment: 4 23exposesReturnsTwice: false 24legalized: false 25regBankSelected: false 26selected: false 27failedISel: false 28tracksRegLiveness: true 29hasWinCFI: false 30registers: [] 31liveins: [] 32frameInfo: 33 isFrameAddressTaken: false 34 isReturnAddressTaken: false 35 hasStackMap: false 36 hasPatchPoint: false 37 stackSize: 0 38 offsetAdjustment: 0 39 maxAlignment: 4 40 adjustsStack: false 41 hasCalls: false 42 stackProtector: '' 43 maxCallFrameSize: 0 44 cvBytesOfCalleeSavedRegisters: 0 45 hasOpaqueSPAdjustment: false 46 hasVAStart: false 47 hasMustTailInVarArgFunc: false 48 localFrameSize: 4 49 savePoint: '' 50 restorePoint: '' 51fixedStack: [] 52stack: [] 53callSites: [] 54constants: [] 55machineFunctionInfo: {} 56body: | 57 bb.0: 58 liveins: $x0, $x22, $x19, $x20 59 60 BL @other, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $w0, implicit-def $sp, implicit-def $w0 61 $x19 = ADDXrr $x0, $x0 62 $x20 = ADDXrr $x19, $x0 63 $x22 = ADDXrr $x20, killed $x19 64 $x0 = ADDXrr $x0, killed $x22 65 66 RET_ReallyLR 67 68... 69