• 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 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