| // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -enable-objc-interop -emit-ir %s | %FileCheck %s |
| |
| // REQUIRES: CPU=x86_64 |
| |
| // CHECK: [[OBJCCLASS:%objc_class]] = type |
| // CHECK: [[OPAQUE:%swift.opaque]] = type opaque |
| // CHECK: [[TYPE:%swift.type]] = type |
| |
| // CHECK-LABEL: @"$s14ivar_destroyer17NonTrivialDerivedCMf" = internal global <{ {{.*}} }> <{ |
| // CHECK-SAME: i8* null, |
| // CHECK-SAME: i8** @"$sBoWV", |
| // CHECK-SAME: i64 ptrtoint ([[OBJCCLASS]]* @"$s14ivar_destroyer17NonTrivialDerivedCMm" to i64), |
| // CHECK-SAME: [[TYPE]]* bitcast (i64* getelementptr inbounds (<{ {{.*}} }>, <{ {{.*}} }>* @"$s14ivar_destroyer11TrivialBaseCMf", i32 0, i32 2) to [[TYPE]]*), |
| // CHECK-SAME: [[OPAQUE]]* @_objc_empty_cache, |
| // CHECK-SAME: [[OPAQUE]]* null, |
| // CHECK-SAME: i64 add (i64 ptrtoint ({{.*}}* @_DATA__TtC14ivar_destroyer17NonTrivialDerived to i64), i64 {{1|2}}), |
| // CHECK-SAME: i32 {{3|2}}, |
| // CHECK-SAME: i32 0, |
| // CHECK-SAME: i32 24, |
| // CHECK-SAME: i16 7, |
| // CHECK-SAME: i16 0, |
| // CHECK-SAME: i32 112, |
| // CHECK-SAME: i32 16, |
| // CHECK-SAME: <{ {{.*}} }>* @"$s14ivar_destroyer17NonTrivialDerivedCMn" |
| // CHECK-SAME: void (%T14ivar_destroyer17NonTrivialDerivedC*)* @"$s14ivar_destroyer17NonTrivialDerivedCfE", |
| // CHECK-SAME: %T14ivar_destroyer17NonTrivialDerivedC* ([[TYPE]]*)* @alloc_NonTrivialDerived |
| // CHECK-SAME: i64 16 |
| // CHECK-SAME: }> |
| |
| class Pachyderm {} |
| sil_vtable Pachyderm {} |
| |
| class TrivialBase {} |
| |
| sil public_external @alloc_TrivialBase : $@convention(method) (@thick TrivialBase.Type) -> @owned TrivialBase |
| |
| sil_vtable TrivialBase { |
| #TrivialBase.init!allocator.1: @alloc_TrivialBase |
| } |
| |
| class NonTrivialDerived : TrivialBase { |
| let p: Pachyderm |
| |
| required override init() |
| } |
| |
| sil public_external @alloc_NonTrivialDerived : $@convention(method) (@thick NonTrivialDerived.Type) -> @owned NonTrivialDerived |
| sil public_external @$s14ivar_destroyer17NonTrivialDerivedCfE : $@convention(method) (@guaranteed NonTrivialDerived) -> () |
| |
| sil_vtable NonTrivialDerived { |
| #TrivialBase.init!allocator.1: @alloc_NonTrivialDerived [override] |
| #NonTrivialDerived!ivardestroyer.1: @$s14ivar_destroyer17NonTrivialDerivedCfE |
| } |