4
4
# On RISC-V, the MinStackArgumentAlignment is 1 and the ABI Alignment for p0 is
5
5
# greater than 1, so we will always generate code to adjust for this alignment.
6
6
7
- --- |
8
- define void @va_arg_i32(ptr %0, ptr %1, ptr %2, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7, ...) {
9
- %va = alloca ptr, align 8
10
- %p = va_arg ptr %va, i32
11
- ret void
12
- }
13
- define void @va_arg_i64(ptr %0, ptr %1, ptr %2, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7, ...) {
14
- %va = alloca ptr, align 8
15
- %p = va_arg ptr %va, i32
16
- ret void
17
- }
18
- define void @va_arg_ptr(ptr %0, ptr %1, ptr %2, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7, ...) {
19
- %va = alloca ptr, align 8
20
- %p = va_arg ptr %va, ptr
21
- ret void
22
- }
23
- ...
24
7
---
25
8
name : va_arg_i32
26
9
legalized : false
@@ -29,14 +12,14 @@ fixedStack:
29
12
- { id: 0, type: default, offset: 0, size: 8, alignment: 16,
30
13
isImmutable : true, isAliased: false }
31
14
stack :
32
- - { id: 0, name: va, type: default, offset: 0, size: 8, alignment: 8 }
15
+ - { id: 0, type: default, offset: 0, size: 8, alignment: 8 }
33
16
machineFunctionInfo :
34
17
varArgsFrameIndex : -1
35
18
varArgsSaveSize : 0
36
19
body : |
37
- bb.1 (%ir-block.8) :
20
+ bb.1:
38
21
; CHECK-LABEL: name: va_arg_i32
39
- ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0.va
22
+ ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0
40
23
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0))
41
24
; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
42
25
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[LOAD]], [[C]](s64)
@@ -46,7 +29,7 @@ body: |
46
29
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTRMASK]], [[C2]](s64)
47
30
; CHECK-NEXT: G_STORE [[PTR_ADD1]](p0), [[FRAME_INDEX]](p0) :: (store (p0))
48
31
; CHECK-NEXT: PseudoRET
49
- %0:_(p0) = G_FRAME_INDEX %stack.0.va
32
+ %0:_(p0) = G_FRAME_INDEX %stack.0
50
33
%1:_(s32) = G_VAARG %0(p0), 4
51
34
PseudoRET
52
35
...
@@ -58,14 +41,14 @@ fixedStack:
58
41
- { id: 0, type: default, offset: 0, size: 8, alignment: 16,
59
42
isImmutable : true, isAliased: false }
60
43
stack :
61
- - { id: 0, name: va, type: default, offset: 0, size: 8, alignment: 8 }
44
+ - { id: 0, type: default, offset: 0, size: 8, alignment: 8 }
62
45
machineFunctionInfo :
63
46
varArgsFrameIndex : -1
64
47
varArgsSaveSize : 0
65
48
body : |
66
- bb.1 (%ir-block.8) :
49
+ bb.1:
67
50
; CHECK-LABEL: name: va_arg_i64
68
- ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0.va
51
+ ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0
69
52
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0))
70
53
; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
71
54
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[LOAD]], [[C]](s64)
@@ -75,7 +58,7 @@ body: |
75
58
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTRMASK]], [[C2]](s64)
76
59
; CHECK-NEXT: G_STORE [[PTR_ADD1]](p0), [[FRAME_INDEX]](p0) :: (store (p0))
77
60
; CHECK-NEXT: PseudoRET
78
- %0:_(p0) = G_FRAME_INDEX %stack.0.va
61
+ %0:_(p0) = G_FRAME_INDEX %stack.0
79
62
%1:_(s64) = G_VAARG %0(p0), 4
80
63
PseudoRET
81
64
...
@@ -87,14 +70,14 @@ fixedStack:
87
70
- { id: 0, type: default, offset: 0, size: 8, alignment: 16,
88
71
isImmutable : true, isAliased: false }
89
72
stack :
90
- - { id: 0, name: va, type: default, offset: 0, size: 8, alignment: 8 }
73
+ - { id: 0, type: default, offset: 0, size: 8, alignment: 8 }
91
74
machineFunctionInfo :
92
75
varArgsFrameIndex : -1
93
76
varArgsSaveSize : 0
94
77
body : |
95
- bb.1 (%ir-block.8) :
78
+ bb.1:
96
79
; CHECK-LABEL: name: va_arg_ptr
97
- ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0.va
80
+ ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0
98
81
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0))
99
82
; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
100
83
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[LOAD]], [[C]](s64)
@@ -104,7 +87,7 @@ body: |
104
87
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTRMASK]], [[C2]](s64)
105
88
; CHECK-NEXT: G_STORE [[PTR_ADD1]](p0), [[FRAME_INDEX]](p0) :: (store (p0))
106
89
; CHECK-NEXT: PseudoRET
107
- %0:_(p0) = G_FRAME_INDEX %stack.0.va
90
+ %0:_(p0) = G_FRAME_INDEX %stack.0
108
91
%1:_(s64) = G_VAARG %0(p0), 4
109
92
PseudoRET
110
93
...
0 commit comments