blob: d963335b753750fba97cdf6b7bd86500b7276913 [file] [log] [blame]
// RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -external-func-definition-elim %s | %FileCheck %s
// Check that public_external transparent methods referenced from vtables
// and witness tables are not removed by ExternalFunctionDefinitionsElimination.
sil_stage canonical
import Builtin
import Swift
import SwiftShims
private class Base {
init()
func foo()
}
private class Derived : Base {
}
sil private @BaseInit : $@convention(method) (@owned Base) -> @owned Base {
bb0(%4 : $Base):
return %4 : $Base
}
sil private @DerivedInit : $@convention(method) (@owned Derived) -> @owned Derived {
bb0(%4 : $Derived):
return %4 : $Derived
}
sil public_external [transparent] @foo : $@convention(method) (@guaranteed Base) -> () {
bb0(%0 : $Base):
%2 = tuple ()
return %2 : $()
} // end sil function 'foo'
sil_vtable Base {
#Base.init!initializer.1: BaseInit
#Base.foo!1: foo
}
sil_vtable Derived {
#Base.init!initializer.1: DerivedInit
#Base.foo!1: foo
}
// CHECK-LABEL: sil public_external [transparent] @foo
// CHECK: end sil function 'foo'
// CHECK-LABEL: sil_vtable Base
// CHECK-: BaseInit
// CHECK-LABEL: sil_vtable Derived
// CHECK: DerivedInit