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