@@ -72,15 +72,15 @@ struct double_float_s {
72
72
// CHECK: define{{.*}} void @f_double_double_s_arg([4 x i32] %a.coerce)
73
73
void f_double_double_s_arg (struct double_double_s a ) {}
74
74
75
- // CHECK: define{{.*}} void @f_ret_double_double_s(ptr noalias sret(%struct.double_double_s) align 4 %agg.result)
75
+ // CHECK: define{{.*}} void @f_ret_double_double_s(ptr dead_on_unwind noalias writable sret(%struct.double_double_s) align 4 %agg.result)
76
76
struct double_double_s f_ret_double_double_s (void ) {
77
77
return (struct double_double_s ){1.0 , 2.0 };
78
78
}
79
79
80
80
// CHECK: define{{.*}} void @f_double_float_s_arg([3 x i32] %a.coerce)
81
81
void f_double_float_s_arg (struct double_float_s a ) {}
82
82
83
- // CHECK: define{{.*}} void @f_ret_double_float_s(ptr noalias sret(%struct.double_float_s) align 4 %agg.result)
83
+ // CHECK: define{{.*}} void @f_ret_double_float_s(ptr dead_on_unwind noalias writable sret(%struct.double_float_s) align 4 %agg.result)
84
84
struct double_float_s f_ret_double_float_s (void ) {
85
85
return (struct double_float_s ){1.0 , 2.0 };
86
86
}
@@ -118,47 +118,47 @@ struct double_int8_zbf_s {
118
118
// CHECK: define{{.*}} @f_double_int8_s_arg([3 x i32] %a.coerce)
119
119
void f_double_int8_s_arg (struct double_int8_s a ) {}
120
120
121
- // CHECK: define{{.*}} void @f_ret_double_int8_s(ptr noalias sret(%struct.double_int8_s) align 4 %agg.result)
121
+ // CHECK: define{{.*}} void @f_ret_double_int8_s(ptr dead_on_unwind noalias writable sret(%struct.double_int8_s) align 4 %agg.result)
122
122
struct double_int8_s f_ret_double_int8_s (void ) {
123
123
return (struct double_int8_s ){1.0 , 2 };
124
124
}
125
125
126
126
// CHECK: define{{.*}} void @f_double_uint8_s_arg([3 x i32] %a.coerce)
127
127
void f_double_uint8_s_arg (struct double_uint8_s a ) {}
128
128
129
- // CHECK: define{{.*}} void @f_ret_double_uint8_s(ptr noalias sret(%struct.double_uint8_s) align 4 %agg.result)
129
+ // CHECK: define{{.*}} void @f_ret_double_uint8_s(ptr dead_on_unwind noalias writable sret(%struct.double_uint8_s) align 4 %agg.result)
130
130
struct double_uint8_s f_ret_double_uint8_s (void ) {
131
131
return (struct double_uint8_s ){1.0 , 2 };
132
132
}
133
133
134
134
// CHECK: define{{.*}} void @f_double_int32_s_arg([3 x i32] %a.coerce)
135
135
void f_double_int32_s_arg (struct double_int32_s a ) {}
136
136
137
- // CHECK: define{{.*}} void @f_ret_double_int32_s(ptr noalias sret(%struct.double_int32_s) align 4 %agg.result)
137
+ // CHECK: define{{.*}} void @f_ret_double_int32_s(ptr dead_on_unwind noalias writable sret(%struct.double_int32_s) align 4 %agg.result)
138
138
struct double_int32_s f_ret_double_int32_s (void ) {
139
139
return (struct double_int32_s ){1.0 , 2 };
140
140
}
141
141
142
142
// CHECK: define{{.*}} void @f_double_int64_s_arg([4 x i32] %a.coerce)
143
143
void f_double_int64_s_arg (struct double_int64_s a ) {}
144
144
145
- // CHECK: define{{.*}} void @f_ret_double_int64_s(ptr noalias sret(%struct.double_int64_s) align 4 %agg.result)
145
+ // CHECK: define{{.*}} void @f_ret_double_int64_s(ptr dead_on_unwind noalias writable sret(%struct.double_int64_s) align 4 %agg.result)
146
146
struct double_int64_s f_ret_double_int64_s (void ) {
147
147
return (struct double_int64_s ){1.0 , 2 };
148
148
}
149
149
150
150
// CHECK: define{{.*}} void @f_double_int64bf_s_arg([3 x i32] %a.coerce)
151
151
void f_double_int64bf_s_arg (struct double_int64bf_s a ) {}
152
152
153
- // CHECK: define{{.*}} void @f_ret_double_int64bf_s(ptr noalias sret(%struct.double_int64bf_s) align 4 %agg.result)
153
+ // CHECK: define{{.*}} void @f_ret_double_int64bf_s(ptr dead_on_unwind noalias writable sret(%struct.double_int64bf_s) align 4 %agg.result)
154
154
struct double_int64bf_s f_ret_double_int64bf_s (void ) {
155
155
return (struct double_int64bf_s ){1.0 , 2 };
156
156
}
157
157
158
158
// CHECK: define{{.*}} void @f_double_int8_zbf_s([3 x i32] %a.coerce)
159
159
void f_double_int8_zbf_s (struct double_int8_zbf_s a ) {}
160
160
161
- // CHECK: define{{.*}} void @f_ret_double_int8_zbf_s(ptr noalias sret(%struct.double_int8_zbf_s) align 4 %agg.result)
161
+ // CHECK: define{{.*}} void @f_ret_double_int8_zbf_s(ptr dead_on_unwind noalias writable sret(%struct.double_int8_zbf_s) align 4 %agg.result)
162
162
struct double_int8_zbf_s f_ret_double_int8_zbf_s (void ) {
163
163
return (struct double_int8_zbf_s ){1.0 , 2 };
164
164
}
@@ -179,7 +179,7 @@ void f_struct_double_int8_insufficient_fprs(float a, double b, double c, double
179
179
// CHECK: define{{.*}} void @f_doublecomplex(double noundef %a.coerce0, double noundef %a.coerce1)
180
180
void f_doublecomplex (double __complex__ a ) {}
181
181
182
- // CHECK: define{{.*}} void @f_ret_doublecomplex(ptr noalias sret({ double, double }) align 4 %agg.result)
182
+ // CHECK: define{{.*}} void @f_ret_doublecomplex(ptr dead_on_unwind noalias writable sret({ double, double }) align 4 %agg.result)
183
183
double __complex__ f_ret_doublecomplex (void ) {
184
184
return 1.0 ;
185
185
}
@@ -191,7 +191,7 @@ struct doublecomplex_s {
191
191
// CHECK: define{{.*}} void @f_doublecomplex_s_arg([4 x i32] %a.coerce)
192
192
void f_doublecomplex_s_arg (struct doublecomplex_s a ) {}
193
193
194
- // CHECK: define{{.*}} void @f_ret_doublecomplex_s(ptr noalias sret(%struct.doublecomplex_s) align 4 %agg.result)
194
+ // CHECK: define{{.*}} void @f_ret_doublecomplex_s(ptr dead_on_unwind noalias writable sret(%struct.doublecomplex_s) align 4 %agg.result)
195
195
struct doublecomplex_s f_ret_doublecomplex_s (void ) {
196
196
return (struct doublecomplex_s ){1.0 };
197
197
}
@@ -218,7 +218,7 @@ struct doublearr2_s {
218
218
// CHECK: define{{.*}} void @f_doublearr2_s_arg([4 x i32] %a.coerce)
219
219
void f_doublearr2_s_arg (struct doublearr2_s a ) {}
220
220
221
- // CHECK: define{{.*}} void @f_ret_doublearr2_s(ptr noalias sret(%struct.doublearr2_s) align 4 %agg.result)
221
+ // CHECK: define{{.*}} void @f_ret_doublearr2_s(ptr dead_on_unwind noalias writable sret(%struct.doublearr2_s) align 4 %agg.result)
222
222
struct doublearr2_s f_ret_doublearr2_s (void ) {
223
223
return (struct doublearr2_s ){{1.0 , 2.0 }};
224
224
}
@@ -232,7 +232,7 @@ struct doublearr2_tricky1_s {
232
232
// CHECK: define{{.*}} void @f_doublearr2_tricky1_s_arg([4 x i32] %a.coerce)
233
233
void f_doublearr2_tricky1_s_arg (struct doublearr2_tricky1_s a ) {}
234
234
235
- // CHECK: define{{.*}} void @f_ret_doublearr2_tricky1_s(ptr noalias sret(%struct.doublearr2_tricky1_s) align 4 %agg.result)
235
+ // CHECK: define{{.*}} void @f_ret_doublearr2_tricky1_s(ptr dead_on_unwind noalias writable sret(%struct.doublearr2_tricky1_s) align 4 %agg.result)
236
236
struct doublearr2_tricky1_s f_ret_doublearr2_tricky1_s (void ) {
237
237
return (struct doublearr2_tricky1_s ){{{{1.0 }}, {{2.0 }}}};
238
238
}
@@ -247,7 +247,7 @@ struct doublearr2_tricky2_s {
247
247
// CHECK: define{{.*}} void @f_doublearr2_tricky2_s_arg([4 x i32] %a.coerce)
248
248
void f_doublearr2_tricky2_s_arg (struct doublearr2_tricky2_s a ) {}
249
249
250
- // CHECK: define{{.*}} void @f_ret_doublearr2_tricky2_s(ptr noalias sret(%struct.doublearr2_tricky2_s) align 4 %agg.result)
250
+ // CHECK: define{{.*}} void @f_ret_doublearr2_tricky2_s(ptr dead_on_unwind noalias writable sret(%struct.doublearr2_tricky2_s) align 4 %agg.result)
251
251
struct doublearr2_tricky2_s f_ret_doublearr2_tricky2_s (void ) {
252
252
return (struct doublearr2_tricky2_s ){{}, {{{1.0 }}, {{2.0 }}}};
253
253
}
@@ -262,7 +262,7 @@ struct doublearr2_tricky3_s {
262
262
// CHECK: define{{.*}} void @f_doublearr2_tricky3_s_arg([4 x i32] %a.coerce)
263
263
void f_doublearr2_tricky3_s_arg (struct doublearr2_tricky3_s a ) {}
264
264
265
- // CHECK: define{{.*}} void @f_ret_doublearr2_tricky3_s(ptr noalias sret(%struct.doublearr2_tricky3_s) align 4 %agg.result)
265
+ // CHECK: define{{.*}} void @f_ret_doublearr2_tricky3_s(ptr dead_on_unwind noalias writable sret(%struct.doublearr2_tricky3_s) align 4 %agg.result)
266
266
struct doublearr2_tricky3_s f_ret_doublearr2_tricky3_s (void ) {
267
267
return (struct doublearr2_tricky3_s ){{}, {{{1.0 }}, {{2.0 }}}};
268
268
}
@@ -278,7 +278,7 @@ struct doublearr2_tricky4_s {
278
278
// CHECK: define{{.*}} void @f_doublearr2_tricky4_s_arg([4 x i32] %a.coerce)
279
279
void f_doublearr2_tricky4_s_arg (struct doublearr2_tricky4_s a ) {}
280
280
281
- // CHECK: define{{.*}} void @f_ret_doublearr2_tricky4_s(ptr noalias sret(%struct.doublearr2_tricky4_s) align 4 %agg.result)
281
+ // CHECK: define{{.*}} void @f_ret_doublearr2_tricky4_s(ptr dead_on_unwind noalias writable sret(%struct.doublearr2_tricky4_s) align 4 %agg.result)
282
282
struct doublearr2_tricky4_s f_ret_doublearr2_tricky4_s (void ) {
283
283
return (struct doublearr2_tricky4_s ){{}, {{{}, {1.0 }}, {{}, {2.0 }}}};
284
284
}
@@ -292,7 +292,7 @@ struct int_double_int_s {
292
292
// CHECK: define{{.*}} void @f_int_double_int_s_arg([4 x i32] %a.coerce)
293
293
void f_int_double_int_s_arg (struct int_double_int_s a ) {}
294
294
295
- // CHECK: define{{.*}} void @f_ret_int_double_int_s(ptr noalias sret(%struct.int_double_int_s) align 4 %agg.result)
295
+ // CHECK: define{{.*}} void @f_ret_int_double_int_s(ptr dead_on_unwind noalias writable sret(%struct.int_double_int_s) align 4 %agg.result)
296
296
struct int_double_int_s f_ret_int_double_int_s (void ) {
297
297
return (struct int_double_int_s ){1 , 2.0 , 3 };
298
298
}
@@ -305,7 +305,7 @@ struct int64_double_s {
305
305
// CHECK: define{{.*}} void @f_int64_double_s_arg([4 x i32] %a.coerce)
306
306
void f_int64_double_s_arg (struct int64_double_s a ) {}
307
307
308
- // CHECK: define{{.*}} void @f_ret_int64_double_s(ptr noalias sret(%struct.int64_double_s) align 4 %agg.result)
308
+ // CHECK: define{{.*}} void @f_ret_int64_double_s(ptr dead_on_unwind noalias writable sret(%struct.int64_double_s) align 4 %agg.result)
309
309
struct int64_double_s f_ret_int64_double_s (void ) {
310
310
return (struct int64_double_s ){1 , 2.0 };
311
311
}
@@ -319,7 +319,7 @@ struct char_char_double_s {
319
319
// CHECK-LABEL: define{{.*}} void @f_char_char_double_s_arg([3 x i32] %a.coerce)
320
320
void f_char_char_double_s_arg (struct char_char_double_s a ) {}
321
321
322
- // CHECK: define{{.*}} void @f_ret_char_char_double_s(ptr noalias sret(%struct.char_char_double_s) align 4 %agg.result)
322
+ // CHECK: define{{.*}} void @f_ret_char_char_double_s(ptr dead_on_unwind noalias writable sret(%struct.char_char_double_s) align 4 %agg.result)
323
323
struct char_char_double_s f_ret_char_char_double_s (void ) {
324
324
return (struct char_char_double_s ){1 , 2 , 3.0 };
325
325
}
@@ -338,19 +338,19 @@ union double_u f_ret_double_u(void) {
338
338
return (union double_u ){1.0 };
339
339
}
340
340
341
- // CHECK: define{{.*}} void @f_ret_double_int32_s_double_int32_s_just_sufficient_gprs(ptr noalias sret(%struct.double_int32_s) align 4 %agg.result, i32 noundef %a, i32 noundef %b, i32 noundef %c, i32 noundef %d, i32 noundef %e, i32 noundef %f, i32 noundef %g, [3 x i32] %h.coerce)
341
+ // CHECK: define{{.*}} void @f_ret_double_int32_s_double_int32_s_just_sufficient_gprs(ptr dead_on_unwind noalias writable sret(%struct.double_int32_s) align 4 %agg.result, i32 noundef %a, i32 noundef %b, i32 noundef %c, i32 noundef %d, i32 noundef %e, i32 noundef %f, i32 noundef %g, [3 x i32] %h.coerce)
342
342
struct double_int32_s f_ret_double_int32_s_double_int32_s_just_sufficient_gprs (
343
343
int a , int b , int c , int d , int e , int f , int g , struct double_int32_s h ) {
344
344
return (struct double_int32_s ){1.0 , 2 };
345
345
}
346
346
347
- // CHECK: define{{.*}} void @f_ret_double_double_s_double_int32_s_just_sufficient_gprs(ptr noalias sret(%struct.double_double_s) align 4 %agg.result, i32 noundef %a, i32 noundef %b, i32 noundef %c, i32 noundef %d, i32 noundef %e, i32 noundef %f, i32 noundef %g, [3 x i32] %h.coerce)
347
+ // CHECK: define{{.*}} void @f_ret_double_double_s_double_int32_s_just_sufficient_gprs(ptr dead_on_unwind noalias writable sret(%struct.double_double_s) align 4 %agg.result, i32 noundef %a, i32 noundef %b, i32 noundef %c, i32 noundef %d, i32 noundef %e, i32 noundef %f, i32 noundef %g, [3 x i32] %h.coerce)
348
348
struct double_double_s f_ret_double_double_s_double_int32_s_just_sufficient_gprs (
349
349
int a , int b , int c , int d , int e , int f , int g , struct double_int32_s h ) {
350
350
return (struct double_double_s ){1.0 , 2.0 };
351
351
}
352
352
353
- // CHECK: define{{.*}} void @f_ret_doublecomplex_double_int32_s_just_sufficient_gprs(ptr noalias sret({ double, double }) align 4 %agg.result, i32 noundef %a, i32 noundef %b, i32 noundef %c, i32 noundef %d, i32 noundef %e, i32 noundef %f, i32 noundef %g, [3 x i32] %h.coerce)
353
+ // CHECK: define{{.*}} void @f_ret_doublecomplex_double_int32_s_just_sufficient_gprs(ptr dead_on_unwind noalias writable sret({ double, double }) align 4 %agg.result, i32 noundef %a, i32 noundef %b, i32 noundef %c, i32 noundef %d, i32 noundef %e, i32 noundef %f, i32 noundef %g, [3 x i32] %h.coerce)
354
354
double __complex__ f_ret_doublecomplex_double_int32_s_just_sufficient_gprs (
355
355
int a , int b , int c , int d , int e , int f , int g , struct double_int32_s h ) {
356
356
return 1.0 ;
@@ -376,7 +376,7 @@ struct large {
376
376
// the presence of large return values that consume a register due to the need
377
377
// to pass a pointer.
378
378
379
- // CHECK-LABEL: define{{.*}} void @f_scalar_stack_2(ptr noalias sret(%struct.large) align 4 %agg.result, float noundef %a, i64 noundef %b, double noundef %c, double noundef %d, i8 noundef zeroext %e, i8 noundef signext %f, i8 noundef zeroext %g)
379
+ // CHECK-LABEL: define{{.*}} void @f_scalar_stack_2(ptr dead_on_unwind noalias writable sret(%struct.large) align 4 %agg.result, float noundef %a, i64 noundef %b, double noundef %c, double noundef %d, i8 noundef zeroext %e, i8 noundef signext %f, i8 noundef zeroext %g)
380
380
struct large f_scalar_stack_2 (float a , int64_t b , double c , long double d ,
381
381
uint8_t e , int8_t f , uint8_t g ) {
382
382
return (struct large ){a , e , f , g };
0 commit comments