xref: /llvm-project/llvm/test/CodeGen/MIR/Generic/frame-info.mir (revision cf2f32c97f8fece105557c2357be4809cb9c14a1)
1# RUN: llc -run-pass none -o - %s | FileCheck %s
2# This test ensures that the MIR parser parses machine frame info properties
3# correctly.
4
5--- |
6
7  define i32 @test(i32 %a) {
8  entry:
9    %b = alloca i32
10    store i32 %a, ptr %b
11    %c = load i32, ptr %b
12    ret i32 %c
13  }
14
15  define i32 @test2(i32 %a) {
16  entry:
17    %b = alloca i32
18    store i32 %a, ptr %b
19    %c = load i32, ptr %b
20    ret i32 %c
21  }
22
23...
24---
25name:            test
26tracksRegLiveness: true
27
28# CHECK: frameInfo:
29# CHECK-NEXT: isFrameAddressTaken: false
30# CHECK-NEXT: isReturnAddressTaken: false
31# CHECK-NEXT: hasStackMap: false
32# CHECK-NEXT: hasPatchPoint: false
33# CHECK-NEXT: stackSize: 0
34# CHECK-NEXT: offsetAdjustment: 0
35# Note: max alignment can be target specific when printed.
36# CHECK-NEXT: maxAlignment:
37# CHECK-NEXT: adjustsStack: false
38# CHECK-NEXT: hasCalls: false
39# CHECK-NEXT: stackProtector:  ''
40# CHECK-NEXT: functionContext:  ''
41# CHECK-NEXT: maxCallFrameSize:
42# CHECK-NEXT: cvBytesOfCalleeSavedRegisters: 0
43# CHECK-NEXT: hasOpaqueSPAdjustment: false
44# CHECK-NEXT: hasVAStart: false
45# CHECK-NEXT: hasMustTailInVarArgFunc: false
46# CHECK-NEXT: hasTailCall: false
47# CHECK-NEXT: isCalleeSavedInfoValid: false
48# CHECK-NEXT: localFrameSize: 0
49# CHECK-NEXT: savePoint:       ''
50# CHECK-NEXT: restorePoint:    ''
51# CHECK: body
52frameInfo:
53  maxAlignment:    4
54body: |
55  bb.0.entry:
56...
57---
58name:            test2
59tracksRegLiveness: true
60stack:
61  - { id: 0, offset: -40, size: 8, alignment: 8 }
62
63# CHECK: test2
64# CHECK: frameInfo:
65# CHECK-NEXT: isFrameAddressTaken: true
66# CHECK-NEXT: isReturnAddressTaken: true
67# CHECK-NEXT: hasStackMap: true
68# CHECK-NEXT: hasPatchPoint: true
69# CHECK-NEXT: stackSize: 4
70# CHECK-NEXT: offsetAdjustment: 4
71# Note: max alignment can be target specific when printed.
72# CHECK-NEXT: maxAlignment:
73# CHECK-NEXT: adjustsStack: true
74# CHECK-NEXT: hasCalls: true
75# CHECK-NEXT: stackProtector:  ''
76# CHECK-NEXT: functionContext:  '%stack.0'
77# CHECK-NEXT: maxCallFrameSize: 4
78# CHECK-NEXT: cvBytesOfCalleeSavedRegisters: 8
79# CHECK-NEXT: hasOpaqueSPAdjustment: true
80# CHECK-NEXT: hasVAStart: true
81# CHECK-NEXT: hasMustTailInVarArgFunc: true
82# CHECK-NEXT: hasTailCall: true
83# CHECK: body
84frameInfo:
85  isFrameAddressTaken: true
86  isReturnAddressTaken: true
87  hasStackMap:     true
88  hasPatchPoint:   true
89  stackSize:       4
90  offsetAdjustment: 4
91  maxAlignment:    4
92  adjustsStack:    true
93  hasCalls:        true
94  functionContext: '%stack.0'
95  maxCallFrameSize: 4
96  cvBytesOfCalleeSavedRegisters: 8
97  hasOpaqueSPAdjustment: true
98  hasVAStart:      true
99  hasTailCall:     true
100  hasMustTailInVarArgFunc: true
101  localFrameSize: 256
102body: |
103  bb.0.entry:
104...
105
106