Slide 80
Slide 80 text
define hidden swiftcc void @"$S3aaa5takeXyyxlF"(%swift.opaque* noalias nocapture, %swift.type* %X) #0 {
entry:
%X1 = alloca %swift.type*, align 8
%x2.addr = alloca i8*, align 8
%1 = bitcast i8** %x2.addr to %swift.opaque**
store %swift.opaque* null, %swift.opaque** %1, align 8
store %swift.type* %X, %swift.type** %X1, align 8
%2 = bitcast %swift.type* %X to i8***
%3 = getelementptr inbounds i8**, i8*** %2, i64 -1
%X.valueWitnesses = load i8**, i8*** %3, align 8, !invariant.load !13, !dereferenceable !14
%4 = getelementptr inbounds i8*, i8** %X.valueWitnesses, i32 8
%5 = load i8*, i8** %4, align 8, !invariant.load !13
%size = ptrtoint i8* %5 to i64
%x2 = alloca i8, i64 %size, align 16
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x2)
%6 = bitcast i8* %x2 to %swift.opaque*
store i8* %x2, i8** %x2.addr, align 8
%7 = getelementptr inbounds i8*, i8** %X.valueWitnesses, i32 2
%8 = load i8*, i8** %7, align 8, !invariant.load !13
%initializeWithCopy = bitcast i8* %8 to %swift.opaque* (%swift.opaque*, %swift.opaque*, %swift.type*)*
%9 = call %swift.opaque* %initializeWithCopy(%swift.opaque* noalias %6, %swift.opaque* noalias %0, %swift.type* %X) #3
%10 = getelementptr inbounds i8*, i8** %X.valueWitnesses, i32 1
%11 = load i8*, i8** %10, align 8, !invariant.load !13
%destroy = bitcast i8* %11 to void (%swift.opaque*, %swift.type*)*
call void %destroy(%swift.opaque* noalias %6, %swift.type* %X) #3
%12 = bitcast %swift.opaque* %6 to i8*
call void @llvm.lifetime.end.p0i8(i64 -1, i8* %12)
ret void
}
80