@@ -13,17 +13,16 @@ class SubClass: BaseClass {
1313 override init()
1414}
1515
16- // CHECK-LABEL: sil [ossa] @test
16+ // CHECK-LABEL: sil [ossa] @test_alloc_ref_dynamic_with_upcast
1717// CHECK: bb0(%0 : $Int):
1818// CHECK: struct_extract %0 : $Int, #Int._value
1919// CHECK: builtin "truncOrBitCast_Int64_Word"({{.*}} : $Builtin.Int64) : $Builtin.Word
2020// CHECK: [[AL:%.*]] = alloc_ref [tail_elems $Int * {{.*}} : $Builtin.Word] $SubClass
2121// CHECK: [[UP:%.*]] = upcast [[AL]] : $SubClass to $BaseClass
2222// CHECK: [[MO:%.*]] = move_value [lexical] [var_decl] [[UP]] : $BaseClass
2323// CHECK: return [[MO]] : $BaseClass
24- // CHECK: } // end sil function 'test'
25- sil [ossa] @test : $@convention(thin) (Int) -> @owned BaseClass {
26- // %0 "minimumCapacity"
24+ // CHECK: } // end sil function 'test_alloc_ref_dynamic_with_upcast'
25+ sil [ossa] @test_alloc_ref_dynamic_with_upcast : $@convention(thin) (Int) -> @owned BaseClass {
2726bb0(%0 : $Int):
2827 %4 = metatype $@thick SubClass.Type
2928 %5 = upcast %4 : $@thick SubClass.Type to $@thick BaseClass.Type
@@ -33,3 +32,21 @@ bb0(%0 : $Int):
3332 %13 = move_value [lexical] [var_decl] %12 : $BaseClass
3433 return %13 : $BaseClass
3534}
35+
36+ // CHECK-LABEL: sil [ossa] @test_alloc_ref_dynamic_without_upcast
37+ // CHECK: bb0(%0 : $Int):
38+ // CHECK: struct_extract %0 : $Int, #Int._value
39+ // CHECK: builtin "truncOrBitCast_Int64_Word"({{.*}} : $Builtin.Int64) : $Builtin.Word
40+ // CHECK: [[AL:%.*]] = alloc_ref [tail_elems $Int * {{.*}} : $Builtin.Word] $BaseClass
41+ // CHECK: [[MO:%.*]] = move_value [lexical] [var_decl] [[AL]] : $BaseClass
42+ // CHECK: return [[MO]] : $BaseClass
43+ // CHECK: } // end sil function 'test_alloc_ref_dynamic_without_upcast'
44+ sil [ossa] @test_alloc_ref_dynamic_without_upcast : $@convention(thin) (Int) -> @owned BaseClass {
45+ bb0(%0 : $Int):
46+ %4 = metatype $@thick BaseClass.Type
47+ %10 = struct_extract %0 : $Int, #Int._value
48+ %11 = builtin "truncOrBitCast_Int64_Word"(%10 : $Builtin.Int64) : $Builtin.Word
49+ %12 = alloc_ref_dynamic [tail_elems $Int * %11 : $Builtin.Word] %4 : $@thick BaseClass.Type, $BaseClass
50+ %13 = move_value [lexical] [var_decl] %12 : $BaseClass
51+ return %13 : $BaseClass
52+ }
0 commit comments