| // 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: @"$S14ivar_destroyer17NonTrivialDerivedCMf" = internal global <{ {{.*}} }> <{ |
| // \ CHECK: i8* null, |
| // \ CHECK: i8** @"$SBoWV", |
| // \ CHECK: i64 ptrtoint ([[OBJCCLASS]]* @"$S14ivar_destroyer17NonTrivialDerivedCMm" to i64), |
| // \ CHECK: [[TYPE]]* bitcast (i64* getelementptr inbounds (<{ {{.*}} }>, <{ {{.*}} }>* @"$S14ivar_destroyer11TrivialBaseCMf", i32 0, i32 2) to [[TYPE]]*), |
| // \ CHECK: [[OPAQUE]]* @_objc_empty_cache, |
| // \ CHECK: [[OPAQUE]]* null, |
| // \ CHECK: i64 add (i64 ptrtoint ({{.*}}* @_DATA__TtC14ivar_destroyer17NonTrivialDerived to i64), i64 {{1|2}}), |
| // \ CHECK: i32 {{3|2}}, |
| // \ CHECK: i32 0, |
| // \ CHECK: i32 24, |
| // \ CHECK: i16 7, |
| // \ CHECK: i16 0, |
| // \ CHECK: i32 120, |
| // \ CHECK: i32 16, |
| // \ CHECK: <{ {{.*}} }>* @"$S14ivar_destroyer17NonTrivialDerivedCMn" |
| // \ CHECK: void (%T14ivar_destroyer17NonTrivialDerivedC*)* @"$S14ivar_destroyer17NonTrivialDerivedCfE", |
| // \ CHECK: i8* bitcast (void ()* @swift_deletedMethodError to i8*), |
| // \ CHECK: %T14ivar_destroyer17NonTrivialDerivedC* ([[TYPE]]*)* @alloc_NonTrivialDerived, |
| // \ CHECK: i64 16 |
| // \ CHECK: }> |
| |
| class Pachyderm {} |
| sil_vtable Pachyderm {} |
| |
| class TrivialBase {} |
| |
| sil public_external @init_TrivialBase : $@convention(method) (@owned TrivialBase) -> @owned TrivialBase |
| |
| sil_vtable TrivialBase { |
| #TrivialBase.init!initializer.1: @init_TrivialBase |
| } |
| |
| class NonTrivialDerived : TrivialBase { |
| let p: Pachyderm |
| |
| required override init() |
| } |
| |
| sil public_external @init_NonTrivialDerived : $@convention(method) (@owned NonTrivialDerived) -> @owned NonTrivialDerived |
| sil public_external @alloc_NonTrivialDerived : $@convention(method) (@thick NonTrivialDerived.Type) -> @owned NonTrivialDerived |
| sil public_external @$S14ivar_destroyer17NonTrivialDerivedCfE : $@convention(method) (@guaranteed NonTrivialDerived) -> () |
| |
| sil_vtable NonTrivialDerived { |
| #NonTrivialDerived.init!initializer.1: @init_NonTrivialDerived |
| #NonTrivialDerived.init!allocator.1: @alloc_NonTrivialDerived |
| #NonTrivialDerived!ivardestroyer.1: @$S14ivar_destroyer17NonTrivialDerivedCfE |
| } |