@@ -26,17 +26,17 @@ define float @test_return_f1(float %f.coerce) {
26
26
entry:
27
27
%retval = alloca %struct.f1 , align 4
28
28
%f = alloca %struct.f1 , align 4
29
- %coerce.dive = getelementptr inbounds %struct.f1 , %struct.f1* %f , i32 0 , i32 0
30
- store float %f.coerce , float * %coerce.dive , align 4
31
- %0 = bitcast %struct.f1* %retval to i8*
32
- %1 = bitcast %struct.f1* %f to i8*
33
- call void @llvm.memcpy.p0i8.p0i8 .i64 (i8* align 4 %0 , i8* align 4 %1 , i64 4 , i1 false )
34
- %coerce.dive1 = getelementptr inbounds %struct.f1 , %struct.f1* %retval , i32 0 , i32 0
35
- %2 = load float , float * %coerce.dive1 , align 4
29
+ %coerce.dive = getelementptr inbounds %struct.f1 , ptr %f , i32 0 , i32 0
30
+ store float %f.coerce , ptr %coerce.dive , align 4
31
+ %0 = bitcast ptr %retval to ptr
32
+ %1 = bitcast ptr %f to ptr
33
+ call void @llvm.memcpy.p0.p0 .i64 (ptr align 4 %0 , ptr align 4 %1 , i64 4 , i1 false )
34
+ %coerce.dive1 = getelementptr inbounds %struct.f1 , ptr %retval , i32 0 , i32 0
35
+ %2 = load float , ptr %coerce.dive1 , align 4
36
36
ret float %2
37
37
}
38
38
39
- declare void @llvm.memcpy.p0i8.p0i8 .i64 (i8* nocapture writeonly , i8* nocapture readonly , i64 , i1 ) #1
39
+ declare void @llvm.memcpy.p0.p0 .i64 (ptr nocapture writeonly , ptr nocapture readonly , i64 , i1 ) #1
40
40
41
41
define double @test_return_d1 (double %d.coerce ) {
42
42
; ALL-LABEL: name: test_return_d1
@@ -55,13 +55,13 @@ define double @test_return_d1(double %d.coerce) {
55
55
entry:
56
56
%retval = alloca %struct.d1 , align 8
57
57
%d = alloca %struct.d1 , align 8
58
- %coerce.dive = getelementptr inbounds %struct.d1 , %struct.d1* %d , i32 0 , i32 0
59
- store double %d.coerce , double * %coerce.dive , align 8
60
- %0 = bitcast %struct.d1* %retval to i8*
61
- %1 = bitcast %struct.d1* %d to i8*
62
- call void @llvm.memcpy.p0i8.p0i8 .i64 (i8* align 8 %0 , i8* align 8 %1 , i64 8 , i1 false )
63
- %coerce.dive1 = getelementptr inbounds %struct.d1 , %struct.d1* %retval , i32 0 , i32 0
64
- %2 = load double , double * %coerce.dive1 , align 8
58
+ %coerce.dive = getelementptr inbounds %struct.d1 , ptr %d , i32 0 , i32 0
59
+ store double %d.coerce , ptr %coerce.dive , align 8
60
+ %0 = bitcast ptr %retval to ptr
61
+ %1 = bitcast ptr %d to ptr
62
+ call void @llvm.memcpy.p0.p0 .i64 (ptr align 8 %0 , ptr align 8 %1 , i64 8 , i1 false )
63
+ %coerce.dive1 = getelementptr inbounds %struct.d1 , ptr %retval , i32 0 , i32 0
64
+ %2 = load double , ptr %coerce.dive1 , align 8
65
65
ret double %2
66
66
}
67
67
@@ -89,16 +89,16 @@ define { double, double } @test_return_d2(double %d.coerce0, double %d.coerce1)
89
89
entry:
90
90
%retval = alloca %struct.d2 , align 8
91
91
%d = alloca %struct.d2 , align 8
92
- %0 = bitcast %struct.d2* %d to { double , double }*
93
- %1 = getelementptr inbounds { double , double }, { double , double }* %0 , i32 0 , i32 0
94
- store double %d.coerce0 , double * %1 , align 8
95
- %2 = getelementptr inbounds { double , double }, { double , double }* %0 , i32 0 , i32 1
96
- store double %d.coerce1 , double * %2 , align 8
97
- %3 = bitcast %struct.d2* %retval to i8*
98
- %4 = bitcast %struct.d2* %d to i8*
99
- call void @llvm.memcpy.p0i8.p0i8 .i64 (i8* align 8 %3 , i8* align 8 %4 , i64 16 , i1 false )
100
- %5 = bitcast %struct.d2* %retval to { double , double }*
101
- %6 = load { double , double }, { double , double }* %5 , align 8
92
+ %0 = bitcast ptr %d to ptr
93
+ %1 = getelementptr inbounds { double , double }, ptr %0 , i32 0 , i32 0
94
+ store double %d.coerce0 , ptr %1 , align 8
95
+ %2 = getelementptr inbounds { double , double }, ptr %0 , i32 0 , i32 1
96
+ store double %d.coerce1 , ptr %2 , align 8
97
+ %3 = bitcast ptr %retval to ptr
98
+ %4 = bitcast ptr %d to ptr
99
+ call void @llvm.memcpy.p0.p0 .i64 (ptr align 8 %3 , ptr align 8 %4 , i64 16 , i1 false )
100
+ %5 = bitcast ptr %retval to ptr
101
+ %6 = load { double , double }, ptr %5 , align 8
102
102
ret { double , double } %6
103
103
}
104
104
@@ -119,13 +119,13 @@ define i32 @test_return_i1(i32 %i.coerce) {
119
119
entry:
120
120
%retval = alloca %struct.i1 , align 4
121
121
%i = alloca %struct.i1 , align 4
122
- %coerce.dive = getelementptr inbounds %struct.i1 , %struct.i1* %i , i32 0 , i32 0
123
- store i32 %i.coerce , i32* %coerce.dive , align 4
124
- %0 = bitcast %struct.i1* %retval to i8*
125
- %1 = bitcast %struct.i1* %i to i8*
126
- call void @llvm.memcpy.p0i8.p0i8 .i64 (i8* align 4 %0 , i8* align 4 %1 , i64 4 , i1 false )
127
- %coerce.dive1 = getelementptr inbounds %struct.i1 , %struct.i1* %retval , i32 0 , i32 0
128
- %2 = load i32 , i32* %coerce.dive1 , align 4
122
+ %coerce.dive = getelementptr inbounds %struct.i1 , ptr %i , i32 0 , i32 0
123
+ store i32 %i.coerce , ptr %coerce.dive , align 4
124
+ %0 = bitcast ptr %retval to ptr
125
+ %1 = bitcast ptr %i to ptr
126
+ call void @llvm.memcpy.p0.p0 .i64 (ptr align 4 %0 , ptr align 4 %1 , i64 4 , i1 false )
127
+ %coerce.dive1 = getelementptr inbounds %struct.i1 , ptr %retval , i32 0 , i32 0
128
+ %2 = load i32 , ptr %coerce.dive1 , align 4
129
129
ret i32 %2
130
130
}
131
131
@@ -146,13 +146,13 @@ define i64 @test_return_i2(i64 %i.coerce) {
146
146
entry:
147
147
%retval = alloca %struct.i2 , align 4
148
148
%i = alloca %struct.i2 , align 4
149
- %0 = bitcast %struct.i2* %i to i64*
150
- store i64 %i.coerce , i64* %0 , align 4
151
- %1 = bitcast %struct.i2* %retval to i8*
152
- %2 = bitcast %struct.i2* %i to i8*
153
- call void @llvm.memcpy.p0i8.p0i8 .i64 (i8* align 4 %1 , i8* align 4 %2 , i64 8 , i1 false )
154
- %3 = bitcast %struct.i2* %retval to i64*
155
- %4 = load i64 , i64* %3 , align 4
149
+ %0 = bitcast ptr %i to ptr
150
+ store i64 %i.coerce , ptr %0 , align 4
151
+ %1 = bitcast ptr %retval to ptr
152
+ %2 = bitcast ptr %i to ptr
153
+ call void @llvm.memcpy.p0.p0 .i64 (ptr align 4 %1 , ptr align 4 %2 , i64 8 , i1 false )
154
+ %3 = bitcast ptr %retval to ptr
155
+ %4 = load i64 , ptr %3 , align 4
156
156
ret i64 %4
157
157
}
158
158
@@ -186,20 +186,20 @@ entry:
186
186
%i = alloca %struct.i3 , align 4
187
187
%coerce = alloca { i64 , i32 }, align 4
188
188
%tmp = alloca { i64 , i32 }, align 8
189
- %0 = getelementptr inbounds { i64 , i32 }, { i64 , i32 }* %coerce , i32 0 , i32 0
190
- store i64 %i.coerce0 , i64* %0 , align 4
191
- %1 = getelementptr inbounds { i64 , i32 }, { i64 , i32 }* %coerce , i32 0 , i32 1
192
- store i32 %i.coerce1 , i32* %1 , align 4
193
- %2 = bitcast %struct.i3* %i to i8*
194
- %3 = bitcast { i64 , i32 }* %coerce to i8*
195
- call void @llvm.memcpy.p0i8.p0i8 .i64 (i8* align 4 %2 , i8* align 4 %3 , i64 12 , i1 false )
196
- %4 = bitcast %struct.i3* %retval to i8*
197
- %5 = bitcast %struct.i3* %i to i8*
198
- call void @llvm.memcpy.p0i8.p0i8 .i64 (i8* align 4 %4 , i8* align 4 %5 , i64 12 , i1 false )
199
- %6 = bitcast { i64 , i32 }* %tmp to i8*
200
- %7 = bitcast %struct.i3* %retval to i8*
201
- call void @llvm.memcpy.p0i8.p0i8 .i64 (i8* align 8 %6 , i8* align 4 %7 , i64 12 , i1 false )
202
- %8 = load { i64 , i32 }, { i64 , i32 }* %tmp , align 8
189
+ %0 = getelementptr inbounds { i64 , i32 }, ptr %coerce , i32 0 , i32 0
190
+ store i64 %i.coerce0 , ptr %0 , align 4
191
+ %1 = getelementptr inbounds { i64 , i32 }, ptr %coerce , i32 0 , i32 1
192
+ store i32 %i.coerce1 , ptr %1 , align 4
193
+ %2 = bitcast ptr %i to ptr
194
+ %3 = bitcast ptr %coerce to ptr
195
+ call void @llvm.memcpy.p0.p0 .i64 (ptr align 4 %2 , ptr align 4 %3 , i64 12 , i1 false )
196
+ %4 = bitcast ptr %retval to ptr
197
+ %5 = bitcast ptr %i to ptr
198
+ call void @llvm.memcpy.p0.p0 .i64 (ptr align 4 %4 , ptr align 4 %5 , i64 12 , i1 false )
199
+ %6 = bitcast ptr %tmp to ptr
200
+ %7 = bitcast ptr %retval to ptr
201
+ call void @llvm.memcpy.p0.p0 .i64 (ptr align 8 %6 , ptr align 4 %7 , i64 12 , i1 false )
202
+ %8 = load { i64 , i32 }, ptr %tmp , align 8
203
203
ret { i64 , i32 } %8
204
204
}
205
205
@@ -227,15 +227,15 @@ define { i64, i64 } @test_return_i4(i64 %i.coerce0, i64 %i.coerce1) {
227
227
entry:
228
228
%retval = alloca %struct.i4 , align 4
229
229
%i = alloca %struct.i4 , align 4
230
- %0 = bitcast %struct.i4* %i to { i64 , i64 }*
231
- %1 = getelementptr inbounds { i64 , i64 }, { i64 , i64 }* %0 , i32 0 , i32 0
232
- store i64 %i.coerce0 , i64* %1 , align 4
233
- %2 = getelementptr inbounds { i64 , i64 }, { i64 , i64 }* %0 , i32 0 , i32 1
234
- store i64 %i.coerce1 , i64* %2 , align 4
235
- %3 = bitcast %struct.i4* %retval to i8*
236
- %4 = bitcast %struct.i4* %i to i8*
237
- call void @llvm.memcpy.p0i8.p0i8 .i64 (i8* align 4 %3 , i8* align 4 %4 , i64 16 , i1 false )
238
- %5 = bitcast %struct.i4* %retval to { i64 , i64 }*
239
- %6 = load { i64 , i64 }, { i64 , i64 }* %5 , align 4
230
+ %0 = bitcast ptr %i to ptr
231
+ %1 = getelementptr inbounds { i64 , i64 }, ptr %0 , i32 0 , i32 0
232
+ store i64 %i.coerce0 , ptr %1 , align 4
233
+ %2 = getelementptr inbounds { i64 , i64 }, ptr %0 , i32 0 , i32 1
234
+ store i64 %i.coerce1 , ptr %2 , align 4
235
+ %3 = bitcast ptr %retval to ptr
236
+ %4 = bitcast ptr %i to ptr
237
+ call void @llvm.memcpy.p0.p0 .i64 (ptr align 4 %3 , ptr align 4 %4 , i64 16 , i1 false )
238
+ %5 = bitcast ptr %retval to ptr
239
+ %6 = load { i64 , i64 }, ptr %5 , align 4
240
240
ret { i64 , i64 } %6
241
241
}
0 commit comments