Skip to content

Commit 8067882

Browse files
committed
[Test] Added @out tuple rebuilding in SILGen.
1 parent 424174c commit 8067882

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

test/SILGen/opaque_values_silgen.swift

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,3 +499,59 @@ func duplicate_with_int4<Value>(condition: Bool, value: Value) -> (Int, Int, Int
499499
}
500500
}
501501

502+
// Verify tuple rebuilding.
503+
// CHECK-LABEL: sil private [ossa] @$s20opaque_values_silgen10duplicate15valuex_xtx_tlFx_xtyXEfU_ : {{.*}} {
504+
// CHECK: [[RETVAL:%[^,]+]] = tuple ({{%[^,]+}} : $Value, {{%[^,]+}} : $Value)
505+
// CHECK: return [[RETVAL]] : $(Value, Value)
506+
// CHECK-LABEL: } // end sil function '$s20opaque_values_silgen10duplicate15valuex_xtx_tlFx_xtyXEfU_'
507+
@_silgen_name("duplicate1")
508+
func duplicate1<Value>(value: Value) -> (Value, Value) {
509+
doit {
510+
(value, value)
511+
}
512+
}
513+
// CHECK-LABEL: sil private [ossa] @$s20opaque_values_silgen10duplicate25valuex3one_x3twotx_tlFxAD_xAEtyXEfU_ : {{.*}} {
514+
// CHECK: [[RETVAL:%[^,]+]] = tuple $(one: Value, two: Value) ({{%[^,]+}}, {{%[^,]+}})
515+
// CHECK: return [[RETVAL]] : $(one: Value, two: Value)
516+
// CHECK-LABEL: } // end sil function '$s20opaque_values_silgen10duplicate25valuex3one_x3twotx_tlFxAD_xAEtyXEfU_'
517+
@_silgen_name("duplicate2")
518+
func duplicate2<Value>(value: Value) -> (one: Value, two: Value) {
519+
doit {
520+
(one: value, two: value)
521+
}
522+
}
523+
// CHECK-LABEL: sil private [ossa] @$s20opaque_values_silgen19duplicate_with_int15valuex_xSitx_tlFx_xSityXEfU_ : {{.*}} {
524+
// CHECK: [[RETVAL:%[^,]+]] = tuple ({{%[^,]+}} : $Value, {{%[^,]+}} : $Value, {{%[^,]+}} : $Int)
525+
// CHECK: return [[RETVAL]]
526+
// CHECK-LABEL: } // end sil function '$s20opaque_values_silgen19duplicate_with_int15valuex_xSitx_tlFx_xSityXEfU_'
527+
@_silgen_name("duplicate_with_int1")
528+
func duplicate_with_int1<Value>(value: Value) -> (Value, Value, Int) {
529+
doit {
530+
(value, value, 42)
531+
}
532+
}
533+
534+
// CHECK-LABEL: sil private [ossa] @$s20opaque_values_silgen19duplicate_with_int25valuex_xt_Sitx_tlFx_xt_SityXEfU_ : {{.*}} {
535+
// CHECK: [[INNER:%[^,]+]] = tuple ({{%[^,]+}} : $Value, {{%[^,]+}} : $Value)
536+
// CHECK: [[RETVAL:%[^,]+]] = tuple ([[INNER]] : $(Value, Value), {{%[^,]+}} : $Int)
537+
// CHECK: return [[RETVAL]]
538+
// CHECK-LABEL: } // end sil function '$s20opaque_values_silgen19duplicate_with_int25valuex_xt_Sitx_tlFx_xt_SityXEfU_'
539+
@_silgen_name("duplicate_with_int2")
540+
func duplicate_with_int2<Value>(value: Value) -> ((Value, Value), Int) {
541+
doit {
542+
((value, value), 42)
543+
}
544+
}
545+
// CHECK-LABEL: sil private [ossa] @$s20opaque_values_silgen19duplicate_with_int35valueSi_x_x_x_SitxttSitx_tlFSi_x_x_x_SitxttSityXEfU_ : {{.*}} {
546+
// CHECK: [[INNERMOST:%[^,]+]] = tuple ({{%[^,]+}} : $Value, {{%[^,]+}} : $Int)
547+
// CHECK: [[INNERMIDDLE:%[^,]+]] = tuple ({{%[^,]+}} : $Value, [[INNERMOST]] : $(Value, Int), {{%[^,]+}} : $Value)
548+
// CHECK: [[INNERLEAST:%[^,]+]] = tuple ({{%[^,]+}} : $Value, [[INNERMIDDLE]] : $(Value, (Value, Int), Value))
549+
// CHECK: [[RETVAL:%[^,]+]] = tuple ({{%[^,]+}} : $Int, [[INNERLEAST]] : $(Value, (Value, (Value, Int), Value)), {{%[^,]+}} : $Int)
550+
// CHECK: return [[RETVAL]] : $(Int, (Value, (Value, (Value, Int), Value)), Int)
551+
// CHECK-LABEL: } // end sil function '$s20opaque_values_silgen19duplicate_with_int35valueSi_x_x_x_SitxttSitx_tlFSi_x_x_x_SitxttSityXEfU_'
552+
@_silgen_name("duplicate_with_int3")
553+
func duplicate_with_int3<Value>(value: Value) -> (Int, (Value, (Value, (Value, Int), Value)), Int) {
554+
doit {
555+
(42, (value, (value, (value, 43), value)), 44)
556+
}
557+
}

0 commit comments

Comments
 (0)