| // RUN: %target-swift-frontend -emit-ir %s | %FileCheck %s -DINT=i%target-ptrsize |
| |
| sil_stage canonical |
| |
| import Builtin |
| |
| // Note: This test is trivial now that structs inside classes don't require dynamic |
| // metadata instantiation. |
| |
| class Outer { |
| struct Inner { |
| } |
| } |
| |
| sil_vtable Outer {} |
| |
| sil @test0 : $@convention(thin) (@thick Outer.Inner.Type) -> (@thick Outer.Type) { |
| bb0(%0 : $@thick Outer.Inner.Type): |
| %1 = metatype $@thick Outer.Type |
| return %1 : $@thick Outer.Type |
| } |
| // CHECK-LABEL: define{{ | dllexport | protected }}swiftcc %swift.type* @test0(%swift.type*) |
| // CHECK: [[T0:%.*]] = call swiftcc %swift.metadata_response @"$s12nested_types5OuterCMa"([[INT]] 0) |
| // CHECK-NEXT: [[T1:%.*]] = extractvalue %swift.metadata_response [[T0]], 0 |
| // CHECK-NEXT: ret %swift.type* [[T1]] |
| |
| // CHECK-LABEL: define hidden swiftcc %swift.metadata_response @"$s12nested_types5OuterC5InnerVMa"( |
| // CHECK: ret %swift.metadata_response { %swift.type* bitcast {{.*}}@"$s12nested_types5OuterC5InnerVMf"{{.*}}, [[INT]] 0 } |