@@ -13,17 +13,16 @@ class SubClass: BaseClass {
13
13
override init()
14
14
}
15
15
16
- // CHECK-LABEL: sil [ossa] @test
16
+ // CHECK-LABEL: sil [ossa] @test_alloc_ref_dynamic_with_upcast
17
17
// CHECK: bb0(%0 : $Int):
18
18
// CHECK: struct_extract %0 : $Int, #Int._value
19
19
// CHECK: builtin "truncOrBitCast_Int64_Word"({{.*}} : $Builtin.Int64) : $Builtin.Word
20
20
// CHECK: [[AL:%.*]] = alloc_ref [tail_elems $Int * {{.*}} : $Builtin.Word] $SubClass
21
21
// CHECK: [[UP:%.*]] = upcast [[AL]] : $SubClass to $BaseClass
22
22
// CHECK: [[MO:%.*]] = move_value [lexical] [var_decl] [[UP]] : $BaseClass
23
23
// 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 {
27
26
bb0(%0 : $Int):
28
27
%4 = metatype $@thick SubClass.Type
29
28
%5 = upcast %4 : $@thick SubClass.Type to $@thick BaseClass.Type
@@ -33,3 +32,21 @@ bb0(%0 : $Int):
33
32
%13 = move_value [lexical] [var_decl] %12 : $BaseClass
34
33
return %13 : $BaseClass
35
34
}
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