• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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