| // RUN: %target-sil-nm -assume-parsing-unqualified-ownership-sil %s | %FileCheck -check-prefix=SIL-NM -check-prefix=CHECK %s |
| // RUN: %target-sil-nm -demangle -assume-parsing-unqualified-ownership-sil %s | %FileCheck -check-prefix=DEMANGLE %s |
| // RUN: rm -rfv %t |
| // RUN: mkdir %t |
| // RUN: %target-sil-opt -module-name main -assume-parsing-unqualified-ownership-sil -emit-sib -o %t/out.sib %s |
| // RUN: %target-sil-nm -module-name main -assume-parsing-unqualified-ownership-sil %t/out.sib | %FileCheck %s |
| // RUN: %target-sil-nm -module-name main -demangle -assume-parsing-unqualified-ownership-sil %t/out.sib | %FileCheck -check-prefix=DEMANGLE %s |
| |
| import Builtin |
| |
| public class C { |
| deinit |
| init() |
| } |
| |
| struct ConformingGenericStruct<T> : ResilientProtocol { |
| func defaultA() |
| } |
| |
| public protocol ResilientProtocol { |
| func defaultA() |
| } |
| |
| // CHECK: F c_deinit |
| sil [serialized] @c_deinit : $@convention(method) (@owned C) -> () { |
| bb0(%0 : $C): |
| %1 = tuple() |
| return %1 : $() |
| } |
| |
| // CHECK: F defaultA |
| sil [serialized] @defaultA : $@convention(witness_method: ResilientProtocol) <Self where Self : ResilientProtocol> (@in_guaranteed Self) -> () { |
| bb0(%0 : $*Self): |
| %result = tuple () |
| return %result : $() |
| } |
| |
| // CHECK: F f1 |
| sil [serialized] @f1 : $@convention(thin) () -> () { |
| bb0: |
| %0 = tuple() |
| return %0 : $() |
| } |
| |
| // CHECK: F globalinit |
| sil [serialized] @globalinit : $@convention(thin) () -> () { |
| bb0: |
| %0 = tuple() |
| return %0 : $() |
| } |
| |
| // CHECK: G global_var |
| sil_global [serialized] @global_var : $Builtin.Int32 |
| |
| // CHECK: W _T04main23ConformingGenericStructVyxGAA17ResilientProtocolAAWP |
| // DEMANGLE: W protocol witness table for main.ConformingGenericStruct<A> : main.ResilientProtocol in main |
| sil_witness_table [serialized] <T> ConformingGenericStruct<T> : ResilientProtocol module protocol_resilience { |
| method #ResilientProtocol.defaultA!1: @defaultA |
| } |
| |
| // vtables cannot be serialized from SIL. |
| // SIL-NM: V C |
| sil_vtable [serialized] C { |
| #C.deinit!deallocator: c_deinit |
| } |
| |
| |