| // RUN: %empty-directory(%t) |
| // RUN: %build-irgen-test-overlays |
| // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s -DINT=i%target-ptrsize |
| |
| // REQUIRES: objc_interop |
| |
| import gizmo |
| |
| sil @use_metatype : $@convention(thin) <T> (@thin T.Type) -> () |
| |
| // CHECK-LABEL: define swiftcc void @test(%TSo014OuterTypeInnerB0C* swiftself, %swift.type* %Self, i8** %SelfWitnessTable) |
| // CHECK: [[T0:%.*]] = call swiftcc %swift.metadata_response @"$SSo9OuterTypeCMa"([[INT]] 0) |
| // CHECK: [[TMP:%.*]] = extractvalue %swift.metadata_response [[T0]], 0 |
| // CHECK: call swiftcc void @use_metatype(%swift.type* [[TMP]]) |
| // CHECK: ret void |
| |
| sil @test : $@convention(witness_method: NSRuncing) (@guaranteed OuterType.InnerType) -> () { |
| bb0(%0 : @guaranteed $OuterType.InnerType): |
| %1 = function_ref @use_metatype : $@convention(thin) <τ_0_0> (@thin τ_0_0.Type) -> () |
| %2 = metatype $@thin OuterType.Type |
| %3 = apply %1<OuterType>(%2) : $@convention(thin) <τ_0_0> (@thin τ_0_0.Type) -> () |
| return %3 : $() |
| } |
| |
| // CHECK-LABEL: define {{.*}}swiftcc %swift.metadata_response @"$SSo9OuterTypeCMa" |
| // CHECK-SAME: ([[INT]]) |
| // CHECK: [[TMP:%.*]] = call %objc_class* @swift_getInitializedObjCClass( |
| // CHECK: call %swift.type* @swift_getObjCClassMetadata(%objc_class* [[TMP]]) |
| // CHECK: ret |