blob: 44be90851bc20e2afc7de6c4567bae49cb5774ac [file] [log] [blame]
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-objc-interop -emit-ir %s | %FileCheck %s
// REQUIRES: CPU=x86_64
// CHECK: [[SWIFT_TYPE:%swift.type]] = type { i64 }
sil_stage canonical
import Builtin
import Swift
import Foundation
// top_level_code
sil private @top_level_code : $@convention(thin) () -> () {
bb0:
%0 = tuple () // user: %1
return %0 : $() // id: %1
}
// CHECK-LABEL: define {{.*}} @_TFCSo4HiveCfMS_FT5queenGSQCSo3Bee__S_
sil @_TFCSo4HiveCfMS_FT5queenGSQCSo3Bee__S_ : $@convention(thin) (@owned Optional<Bee>, @thick Hive.Type) -> @owned Optional<Hive> {
bb0(%0 : $Optional<Bee>, %1 : $@thick Hive.Type):
%2 = thick_to_objc_metatype %1 : $@thick Hive.Type to $@objc_metatype Hive.Type // users: %3, %4
// CHECK: load i8*, i8** @"\01L_selector(hiveWithQueen:)"
%3 = objc_method %2 : $@objc_metatype Hive.Type, #Hive.init!allocator.1.foreign : (Hive.Type) -> (Bee!) -> Hive!, $@convention(objc_method) (Optional<Bee>, @objc_metatype Hive.Type) -> @autoreleased Optional<Hive> // user: %4
// CHECK: call {{.*}} @objc_msgSend
%4 = apply %3(%0, %2) : $@convention(objc_method) (Optional<Bee>, @objc_metatype Hive.Type) -> @autoreleased Optional<Hive> // users: %5, %6
// CHECK: call {{.*}} @llvm.objc.autorelease
autorelease_value %4 : $Optional<Hive>
return %4 : $Optional<Hive>
}