// 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

// REQUIRES: CPU=x86_64
// REQUIRES: objc_interop

import Swift
import gizmo

//
// A pure Swift class. We can access its isa directly.
//

class Purebred {
  func method() {}
}
sil_vtable Purebred {}

// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @purebred_method(%T18class_isa_pointers8PurebredC*) {{.*}} {
// CHECK:         [[ISA_PTR:%.*]] = bitcast %T18class_isa_pointers8PurebredC* %0 to %swift.type**
// CHECK:         [[ISA:%.*]] = load %swift.type*, %swift.type** [[ISA_PTR]]
// CHECK:         [[VTABLE:%.*]] = bitcast %swift.type* [[ISA]]
// CHECK:         getelementptr inbounds {{.*}} [[VTABLE]]
sil @purebred_method : $@convention(thin) (@owned Purebred) -> () {
entry(%0 : @owned $Purebred):
  %m = class_method %0 : $Purebred, #Purebred.method!1 : (Purebred) -> () -> (), $@convention(method) (@guaranteed Purebred) -> ()
  %z = apply %m(%0) : $@convention(method) (@guaranteed Purebred) -> ()
  return %z : $()
}

//
// A mixed Swift/ObjC class. We have to mask when reading its isa.
//

class Mongrel: Gizmo {
  func method() {}
}
sil_vtable Mongrel {}

// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @mongrel_method(%T18class_isa_pointers7MongrelC*) {{.*}} {
// CHECK:         [[T0:%.*]] = bitcast {{.*}} %0 to i64*
// CHECK-NEXT:    [[T1:%.*]] = load i64, i64* [[T0]], align 8
// CHECK-NEXT:    [[T2:%.*]] = load i64, i64* @swift_isaMask, align 8
// CHECK-NEXT:    [[T3:%.*]] = and i64 [[T1]], [[T2]]
// CHECK:         [[ISA:%.*]] = inttoptr i64 [[T3]] to %swift.type*
// CHECK:         [[VTABLE:%.*]] = bitcast %swift.type* [[ISA]]
// CHECK:         getelementptr inbounds {{.*}} [[VTABLE]]
sil @mongrel_method : $@convention(thin) (@owned Mongrel) -> () {
entry(%0 : @owned $Mongrel):
  %m = class_method %0 : $Mongrel, #Mongrel.method!1 : (Mongrel) -> () -> (), $@convention(method) (@guaranteed Mongrel) -> ()
  %z = apply %m(%0) : $@convention(method) (@guaranteed Mongrel) -> ()
  return %z : $()
}

// ObjC stubs expected by ObjC metadata emission

sil private @$s18class_isa_pointers7MongrelC6methodyyFTo : $@convention(objc_method) (Purebred) -> () {
entry(%0 : @unowned $Purebred):
  unreachable
}
sil private @$s18class_isa_pointers7MongrelC7bellsOnACSgSi_tcfcTo : $@convention(objc_method) (Int, Purebred) -> () {
entry(%0 : @trivial $Int, %1 : @unowned $Purebred):
  unreachable
}
sil private @$s18class_isa_pointers7MongrelCACycfcTo : $@convention(objc_method) (Purebred) -> () {
entry(%0 : @unowned $Purebred):
  unreachable
}
