@@ -72,15 +72,15 @@ struct double_float_s {
7272// CHECK: define{{.*}} void @f_double_double_s_arg([4 x i32] %a.coerce)
7373void f_double_double_s_arg (struct double_double_s a ) {}
7474
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)
7676struct double_double_s f_ret_double_double_s (void ) {
7777 return (struct double_double_s ){1.0 , 2.0 };
7878}
7979
8080// CHECK: define{{.*}} void @f_double_float_s_arg([3 x i32] %a.coerce)
8181void f_double_float_s_arg (struct double_float_s a ) {}
8282
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)
8484struct double_float_s f_ret_double_float_s (void ) {
8585 return (struct double_float_s ){1.0 , 2.0 };
8686}
@@ -118,47 +118,47 @@ struct double_int8_zbf_s {
118118// CHECK: define{{.*}} @f_double_int8_s_arg([3 x i32] %a.coerce)
119119void f_double_int8_s_arg (struct double_int8_s a ) {}
120120
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)
122122struct double_int8_s f_ret_double_int8_s (void ) {
123123 return (struct double_int8_s ){1.0 , 2 };
124124}
125125
126126// CHECK: define{{.*}} void @f_double_uint8_s_arg([3 x i32] %a.coerce)
127127void f_double_uint8_s_arg (struct double_uint8_s a ) {}
128128
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)
130130struct double_uint8_s f_ret_double_uint8_s (void ) {
131131 return (struct double_uint8_s ){1.0 , 2 };
132132}
133133
134134// CHECK: define{{.*}} void @f_double_int32_s_arg([3 x i32] %a.coerce)
135135void f_double_int32_s_arg (struct double_int32_s a ) {}
136136
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)
138138struct double_int32_s f_ret_double_int32_s (void ) {
139139 return (struct double_int32_s ){1.0 , 2 };
140140}
141141
142142// CHECK: define{{.*}} void @f_double_int64_s_arg([4 x i32] %a.coerce)
143143void f_double_int64_s_arg (struct double_int64_s a ) {}
144144
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)
146146struct double_int64_s f_ret_double_int64_s (void ) {
147147 return (struct double_int64_s ){1.0 , 2 };
148148}
149149
150150// CHECK: define{{.*}} void @f_double_int64bf_s_arg([3 x i32] %a.coerce)
151151void f_double_int64bf_s_arg (struct double_int64bf_s a ) {}
152152
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)
154154struct double_int64bf_s f_ret_double_int64bf_s (void ) {
155155 return (struct double_int64bf_s ){1.0 , 2 };
156156}
157157
158158// CHECK: define{{.*}} void @f_double_int8_zbf_s([3 x i32] %a.coerce)
159159void f_double_int8_zbf_s (struct double_int8_zbf_s a ) {}
160160
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)
162162struct double_int8_zbf_s f_ret_double_int8_zbf_s (void ) {
163163 return (struct double_int8_zbf_s ){1.0 , 2 };
164164}
@@ -179,7 +179,7 @@ void f_struct_double_int8_insufficient_fprs(float a, double b, double c, double
179179// CHECK: define{{.*}} void @f_doublecomplex(double noundef %a.coerce0, double noundef %a.coerce1)
180180void f_doublecomplex (double __complex__ a ) {}
181181
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)
183183double __complex__ f_ret_doublecomplex (void ) {
184184 return 1.0 ;
185185}
@@ -191,7 +191,7 @@ struct doublecomplex_s {
191191// CHECK: define{{.*}} void @f_doublecomplex_s_arg([4 x i32] %a.coerce)
192192void f_doublecomplex_s_arg (struct doublecomplex_s a ) {}
193193
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)
195195struct doublecomplex_s f_ret_doublecomplex_s (void ) {
196196 return (struct doublecomplex_s ){1.0 };
197197}
@@ -218,7 +218,7 @@ struct doublearr2_s {
218218// CHECK: define{{.*}} void @f_doublearr2_s_arg([4 x i32] %a.coerce)
219219void f_doublearr2_s_arg (struct doublearr2_s a ) {}
220220
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)
222222struct doublearr2_s f_ret_doublearr2_s (void ) {
223223 return (struct doublearr2_s ){{1.0 , 2.0 }};
224224}
@@ -232,7 +232,7 @@ struct doublearr2_tricky1_s {
232232// CHECK: define{{.*}} void @f_doublearr2_tricky1_s_arg([4 x i32] %a.coerce)
233233void f_doublearr2_tricky1_s_arg (struct doublearr2_tricky1_s a ) {}
234234
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)
236236struct doublearr2_tricky1_s f_ret_doublearr2_tricky1_s (void ) {
237237 return (struct doublearr2_tricky1_s ){{{{1.0 }}, {{2.0 }}}};
238238}
@@ -247,7 +247,7 @@ struct doublearr2_tricky2_s {
247247// CHECK: define{{.*}} void @f_doublearr2_tricky2_s_arg([4 x i32] %a.coerce)
248248void f_doublearr2_tricky2_s_arg (struct doublearr2_tricky2_s a ) {}
249249
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)
251251struct doublearr2_tricky2_s f_ret_doublearr2_tricky2_s (void ) {
252252 return (struct doublearr2_tricky2_s ){{}, {{{1.0 }}, {{2.0 }}}};
253253}
@@ -262,7 +262,7 @@ struct doublearr2_tricky3_s {
262262// CHECK: define{{.*}} void @f_doublearr2_tricky3_s_arg([4 x i32] %a.coerce)
263263void f_doublearr2_tricky3_s_arg (struct doublearr2_tricky3_s a ) {}
264264
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)
266266struct doublearr2_tricky3_s f_ret_doublearr2_tricky3_s (void ) {
267267 return (struct doublearr2_tricky3_s ){{}, {{{1.0 }}, {{2.0 }}}};
268268}
@@ -278,7 +278,7 @@ struct doublearr2_tricky4_s {
278278// CHECK: define{{.*}} void @f_doublearr2_tricky4_s_arg([4 x i32] %a.coerce)
279279void f_doublearr2_tricky4_s_arg (struct doublearr2_tricky4_s a ) {}
280280
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)
282282struct doublearr2_tricky4_s f_ret_doublearr2_tricky4_s (void ) {
283283 return (struct doublearr2_tricky4_s ){{}, {{{}, {1.0 }}, {{}, {2.0 }}}};
284284}
@@ -292,7 +292,7 @@ struct int_double_int_s {
292292// CHECK: define{{.*}} void @f_int_double_int_s_arg([4 x i32] %a.coerce)
293293void f_int_double_int_s_arg (struct int_double_int_s a ) {}
294294
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)
296296struct int_double_int_s f_ret_int_double_int_s (void ) {
297297 return (struct int_double_int_s ){1 , 2.0 , 3 };
298298}
@@ -305,7 +305,7 @@ struct int64_double_s {
305305// CHECK: define{{.*}} void @f_int64_double_s_arg([4 x i32] %a.coerce)
306306void f_int64_double_s_arg (struct int64_double_s a ) {}
307307
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)
309309struct int64_double_s f_ret_int64_double_s (void ) {
310310 return (struct int64_double_s ){1 , 2.0 };
311311}
@@ -319,7 +319,7 @@ struct char_char_double_s {
319319// CHECK-LABEL: define{{.*}} void @f_char_char_double_s_arg([3 x i32] %a.coerce)
320320void f_char_char_double_s_arg (struct char_char_double_s a ) {}
321321
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)
323323struct char_char_double_s f_ret_char_char_double_s (void ) {
324324 return (struct char_char_double_s ){1 , 2 , 3.0 };
325325}
@@ -338,19 +338,19 @@ union double_u f_ret_double_u(void) {
338338 return (union double_u ){1.0 };
339339}
340340
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)
342342struct double_int32_s f_ret_double_int32_s_double_int32_s_just_sufficient_gprs (
343343 int a , int b , int c , int d , int e , int f , int g , struct double_int32_s h ) {
344344 return (struct double_int32_s ){1.0 , 2 };
345345}
346346
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)
348348struct double_double_s f_ret_double_double_s_double_int32_s_just_sufficient_gprs (
349349 int a , int b , int c , int d , int e , int f , int g , struct double_int32_s h ) {
350350 return (struct double_double_s ){1.0 , 2.0 };
351351}
352352
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)
354354double __complex__ f_ret_doublecomplex_double_int32_s_just_sufficient_gprs (
355355 int a , int b , int c , int d , int e , int f , int g , struct double_int32_s h ) {
356356 return 1.0 ;
@@ -376,7 +376,7 @@ struct large {
376376// the presence of large return values that consume a register due to the need
377377// to pass a pointer.
378378
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)
380380struct large f_scalar_stack_2 (float a , int64_t b , double c , long double d ,
381381 uint8_t e , int8_t f , uint8_t g ) {
382382 return (struct large ){a , e , f , g };
0 commit comments