// REQUIRES: objc_interop

// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -I %S/../Inputs/custom-modules %s -emit-ir | %FileCheck %s

sil_stage raw

import Builtin
import Swift
import SwiftShims
import ObjCRuntimeVisible

// CHECK: [[CLASS_NAME:@.*]] = private unnamed_addr constant [22 x i8] c"MyRuntimeVisibleClass\00"

// CHECK: define swiftcc %objc_class* @getClassA() #0 {
sil @getClassA : $@convention(thin) () -> @objc_metatype A.Type {
bb0:
  // CHECK: call %objc_class* @objc_lookUpClass(i8* getelementptr inbounds ([22 x i8], [22 x i8]* [[CLASS_NAME]],
  %0 = metatype $@objc_metatype A.Type

  // CHECK-NEXT:  ret %objc_class*
  return %0 : $@objc_metatype A.Type
}

// CHECK: define swiftcc void @deallocA(%TSo1AC*) #0 {
sil @deallocA : $@convention(thin) (@owned A) -> () {
bb0(%0 : $A):
  %1 = metatype $@thick A.Type

  // CHECK: call %objc_object* @object_dispose
  dealloc_partial_ref %0 : $A, %1 : $@thick A.Type

  %2 = tuple ()

  // CHECK-NEXT: ret
  return %2 : $()
}
