Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / MIR / Generic / frame-info.mir
blobc666482219e892de3dedcaa9dcbc25d0b3953158
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.
5 --- |
7   define i32 @test(i32 %a) {
8   entry:
9     %b = alloca i32
10     store i32 %a, i32* %b
11     %c = load i32, i32* %b
12     ret i32 %c
13   }
15   define i32 @test2(i32 %a) {
16   entry:
17     %b = alloca i32
18     store i32 %a, i32* %b
19     %c = load i32, i32* %b
20     ret i32 %c
21   }
23 ...
24 ---
25 name:            test
26 tracksRegLiveness: true
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: localFrameSize: 0
48 # CHECK-NEXT: savePoint:       ''
49 # CHECK-NEXT: restorePoint:    ''
50 # CHECK: body
51 frameInfo:
52   maxAlignment:    4
53 body: |
54   bb.0.entry:
55 ...
56 ---
57 name:            test2
58 tracksRegLiveness: true
59 stack:
60   - { id: 0, offset: -40, size: 8, alignment: 8 }
62 # CHECK: test2
63 # CHECK: frameInfo:
64 # CHECK-NEXT: isFrameAddressTaken: true
65 # CHECK-NEXT: isReturnAddressTaken: true
66 # CHECK-NEXT: hasStackMap: true
67 # CHECK-NEXT: hasPatchPoint: true
68 # CHECK-NEXT: stackSize: 4
69 # CHECK-NEXT: offsetAdjustment: 4
70 # Note: max alignment can be target specific when printed.
71 # CHECK-NEXT: maxAlignment:
72 # CHECK-NEXT: adjustsStack: true
73 # CHECK-NEXT: hasCalls: true
74 # CHECK-NEXT: stackProtector:  ''
75 # CHECK-NEXT: functionContext:  '%stack.0'
76 # CHECK-NEXT: maxCallFrameSize: 4
77 # CHECK-NEXT: cvBytesOfCalleeSavedRegisters: 8
78 # CHECK-NEXT: hasOpaqueSPAdjustment: true
79 # CHECK-NEXT: hasVAStart: true
80 # CHECK-NEXT: hasMustTailInVarArgFunc: true
81 # CHECK-NEXT: hasTailCall: true
82 # CHECK: body
83 frameInfo:
84   isFrameAddressTaken: true
85   isReturnAddressTaken: true
86   hasStackMap:     true
87   hasPatchPoint:   true
88   stackSize:       4
89   offsetAdjustment: 4
90   maxAlignment:    4
91   adjustsStack:    true
92   hasCalls:        true
93   functionContext: '%stack.0'
94   maxCallFrameSize: 4
95   cvBytesOfCalleeSavedRegisters: 8
96   hasOpaqueSPAdjustment: true
97   hasVAStart:      true
98   hasTailCall:     true
99   hasMustTailInVarArgFunc: true
100   localFrameSize: 256
101 body: |
102   bb.0.entry: