File: unreachable-emergency-spill-slot.mir

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (41 lines) | stat: -rw-r--r-- 1,324 bytes parent folder | download | duplicates (23)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#RUN: llc -mtriple=aarch64-- -run-pass prologepilog %s -o - | FileCheck %s
# Check that we use the frame pointer to address the emergency spill slot.
# Using the base pointer will result in an assert with "Emergency spill slot is
# out of reach".
---
name: hugeStack
# CHECK-LABEL: name: hugeStack
tracksRegLiveness: true
frameInfo:
  localFrameSize:  256
stack:
  - { id: 0, type: variable-sized,  alignment: 1 }
  - { id: 1, name: '', size: 32761, alignment: 8 }
body: |
  bb.0:
    liveins: $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28

    STRXui undef $x8, %stack.0, 0
    ; CHECK: STRXui undef $x8, $fp, 0
    B %bb.1
  bb.1:
    liveins: $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28

    RET_ReallyLR implicit $x19, implicit $x20, implicit $x21, implicit $x22, implicit $x23, implicit $x24, implicit $x25, implicit $x26, implicit $x27, implicit $x28
...
---
name: fpDoesNotFit
# CHECK-LABEL: name: fpDoesNotFit
tracksRegLiveness: true
frameInfo:
  hasStackMap: true
# set to true to force hasFP to true.
stack:
  - { id: 0, name: '', size: 4096, alignment: 8 }
  - { id: 1, name: '', size: 32761, alignment: 8 }
body: |
  bb.0:
    STRXui undef $x8, %stack.0, -34
    ; Pick SP here. Picking FP will require scavenging a register.
    ; CHECK: STRXui undef $x8, $sp, 4062
    RET_ReallyLR