Slide 25
Slide 25 text
define hidden void @_TFC14ViewController14ViewController8testFuncfT_T_(%C14ViewController14ViewController*) #0 {
%2 = alloca %P13CoolFramework12CoolProtocol_, align 4
%3 = alloca %P13CoolFramework12CoolProtocol_, align 4
%4 = call %swift.type* @_TMaC13CoolFramework13CoolTestClass() #2
%5 = call %C13CoolFramework13CoolTestClass* @_TFC13CoolFramework13CoolTestClassCfT_S0_(%swift.type* %4)
%6 = bitcast %C13CoolFramework13CoolTestClass* %5 to %swift.type**
%7 = load %swift.type*, %swift.type** %6, align 4
%8 = bitcast %swift.type* %7 to i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)**
%9 = getelementptr inbounds i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)*, i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)** %8, i32 14
%10 = load i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)*, i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)** %9, align 4, !invariant.load !34
%11 = bitcast i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)* %10 to i8*
%12 = bitcast %P13CoolFramework12CoolProtocol_* %2 to i8*
call void @llvm.lifetime.start(i64 20, i8* %12)
%13 = call %swift.type* @_TMaC14ViewController10CProtoImpl() #2
%14 = getelementptr inbounds %P13CoolFramework12CoolProtocol_, %P13CoolFramework12CoolProtocol_* %2, i32 0, i32 1
store %swift.type* %13, %swift.type** %14, align 4
%15 = getelementptr inbounds %P13CoolFramework12CoolProtocol_, %P13CoolFramework12CoolProtocol_* %2, i32 0, i32 2
store i8** getelementptr inbounds ([1 x i8*], [1 x i8*]* @_TWPC14ViewController10CProtoImpl13CoolFramework12CoolProtocolS_, i32 0, i32 0), i8*** %15, align 4
%16 = getelementptr inbounds %P13CoolFramework12CoolProtocol_, %P13CoolFramework12CoolProtocol_* %2, i32 0, i32 0
%17 = bitcast [12 x i8]* %16 to %C14ViewController10CProtoImpl**
%18 = bitcast %C14ViewController14ViewController* %0 to %swift.type**
%19 = load %swift.type*, %swift.type** %18, align 4
%20 = bitcast %swift.type* %19 to %C14ViewController10CProtoImpl* (%C14ViewController14ViewController*)**
%21 = getelementptr inbounds %C14ViewController10CProtoImpl* (%C14ViewController14ViewController*)*, %C14ViewController10CProtoImpl* (%C14ViewController14ViewController*)** %20, i32 13
%22 = load %C14ViewController10CProtoImpl* (%C14ViewController14ViewController*)*, %C14ViewController10CProtoImpl* (%C14ViewController14ViewController*)** %21, align 4, !invariant.load !34
%23 = bitcast %C14ViewController10CProtoImpl* (%C14ViewController14ViewController*)* %22 to i8*
%24 = bitcast i8* %23 to %C14ViewController10CProtoImpl* (%C14ViewController14ViewController*)*
%25 = call %C14ViewController10CProtoImpl* %24(%C14ViewController14ViewController* %0)
store %C14ViewController10CProtoImpl* %25, %C14ViewController10CProtoImpl** %17, align 4
%26 = bitcast i8* %11 to i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)*
%27 = call i64 %26(%P13CoolFramework12CoolProtocol_* noalias nocapture dereferenceable(20) %2, i32 1, %C13CoolFramework13CoolTestClass* %5)
%28 = bitcast %P13CoolFramework12CoolProtocol_* %2 to i8*
call void @llvm.lifetime.end(i64 20, i8* %28)
%29 = bitcast %C13CoolFramework13CoolTestClass* %5 to %swift.type**
%30 = load %swift.type*, %swift.type** %29, align 4
%31 = bitcast %swift.type* %30 to i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)**
%32 = getelementptr inbounds i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)*, i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)** %31, i32 14
%33 = load i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)*, i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)** %32, align 4, !invariant.load !34
%34 = bitcast i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)* %33 to i8*
%35 = bitcast %P13CoolFramework12CoolProtocol_* %3 to i8*
call void @llvm.lifetime.start(i64 20, i8* %35)
%36 = getelementptr inbounds %P13CoolFramework12CoolProtocol_, %P13CoolFramework12CoolProtocol_* %3, i32 0, i32 1
store %swift.type* bitcast (i32* getelementptr inbounds (<{ i8**, i32, i32, %swift.type* }>, <{ i8**, i32, i32, %swift.type* }>* @_TMfV14ViewController10SProtoImpl, i32 0, i32 1) to %swift.type*), %swift.type** %36, align 4
%37 = getelementptr inbounds %P13CoolFramework12CoolProtocol_, %P13CoolFramework12CoolProtocol_* %3, i32 0, i32 2
store i8** getelementptr inbounds ([1 x i8*], [1 x i8*]* @_TWPV14ViewController10SProtoImpl13CoolFramework12CoolProtocolS_, i32 0, i32 0), i8*** %37, align 4
%38 = getelementptr inbounds %P13CoolFramework12CoolProtocol_, %P13CoolFramework12CoolProtocol_* %3, i32 0, i32 0
%39 = bitcast [12 x i8]* %38 to %V14ViewController10SProtoImpl*
%40 = bitcast %C14ViewController14ViewController* %0 to %swift.type**
%41 = load %swift.type*, %swift.type** %40, align 4
%42 = bitcast %swift.type* %41 to void (%C14ViewController14ViewController*)**
%43 = getelementptr inbounds void (%C14ViewController14ViewController*)*, void (%C14ViewController14ViewController*)** %42, i32 16
%44 = load void (%C14ViewController14ViewController*)*, void (%C14ViewController14ViewController*)** %43, align 4, !invariant.load !34
%45 = bitcast void (%C14ViewController14ViewController*)* %44 to i8*
%46 = bitcast i8* %45 to void (%C14ViewController14ViewController*)*
call void %46(%C14ViewController14ViewController* %0)
%47 = bitcast i8* %34 to i64 (%P13CoolFramework12CoolProtocol_*, i32, %C13CoolFramework13CoolTestClass*)*
%48 = call i64 %47(%P13CoolFramework12CoolProtocol_* noalias nocapture dereferenceable(20) %3, i32 2, %C13CoolFramework13CoolTestClass* %5)
%49 = bitcast %P13CoolFramework12CoolProtocol_* %3 to i8*
call void @llvm.lifetime.end(i64 20, i8* %49)
%50 = call %swift.type* @_TMaP_() #2
%51 = call { %swift.bridge*, i8* } @_TFs27_allocateUninitializedArrayurFBwTGSax_Bp_(i32 2, %swift.type* %50)
%52 = extractvalue { %swift.bridge*, i8* } %51, 0
%53 = extractvalue { %swift.bridge*, i8* } %51, 1
%54 = bitcast i8* %53 to %Any*
%55 = getelementptr inbounds %Any, %Any* %54, i32 0, i32 1
store %swift.type* @_TMVs5Int64, %swift.type** %55, align 4
%56 = getelementptr inbounds %Any, %Any* %54, i32 0, i32 0
%57 = call noalias i8* @rt_swift_slowAlloc(i32 8, i32 7) #1
%58 = bitcast [12 x i8]* %56 to i8**
store i8* %57, i8** %58, align 4
%59 = bitcast i8* %57 to %Vs5Int64*
%60 = getelementptr inbounds %Vs5Int64, %Vs5Int64* %59, i32 0, i32 0
store i64 %27, i64* %60, align 8
%61 = getelementptr inbounds %Any, %Any* %54, i32 1
%62 = getelementptr inbounds %Any, %Any* %61, i32 0, i32 1
store %swift.type* @_TMVs5Int64, %swift.type** %62, align 4
%63 = getelementptr inbounds %Any, %Any* %61, i32 0, i32 0
%64 = call noalias i8* @rt_swift_slowAlloc(i32 8, i32 7) #1
%65 = bitcast [12 x i8]* %63 to i8**
store i8* %64, i8** %65, align 4
%66 = bitcast i8* %64 to %Vs5Int64*
%67 = getelementptr inbounds %Vs5Int64, %Vs5Int64* %66, i32 0, i32 0
store i64 %48, i64* %67, align 8
%68 = call { i32, i32, i32 } @_TIFs5printFTGSaP__9separatorSS10terminatorSS_T_A0_()
%69 = extractvalue { i32, i32, i32 } %68, 0
%70 = extractvalue { i32, i32, i32 } %68, 1
%71 = extractvalue { i32, i32, i32 } %68, 2
%72 = call { i32, i32, i32 } @_TIFs5printFTGSaP__9separatorSS10terminatorSS_T_A1_()
%73 = extractvalue { i32, i32, i32 } %72, 0
%74 = extractvalue { i32, i32, i32 } %72, 1
%75 = extractvalue { i32, i32, i32 } %72, 2
call void @_TFs5printFTGSaP__9separatorSS10terminatorSS_T_(%swift.bridge* %52, i32 %69, i32 %70, i32 %71, i32 %73, i32 %74, i32 %75)
call void bitcast (void (%swift.refcounted*)* @rt_swift_release to void (%C13CoolFramework13CoolTestClass*)*)(%C13CoolFramework13CoolTestClass* %5) #1
ret void
}