Slide 19
Slide 19 text
AnimalBox Metadata accessor
LLVM IR
define hidden swiftcc %swift.metadata_response @"$S9AnyAnimal0B3BoxCMa"(i64, %swift.type*, i8**) #1 {
entry:
%generic.arguments = alloca { %swift.type*, i8** }, align 8
%3 = bitcast { %swift.type*, i8** }* %generic.arguments to i8*
%4 = getelementptr inbounds { %swift.type*, i8** }, { %swift.type*, i8** }* %generic.arguments, i32 0, i32 0
store %swift.type* %1, %swift.type** %4, align 8
%5 = getelementptr inbounds { %swift.type*, i8** }, { %swift.type*, i8** }* %generic.arguments, i32 0, i32 1
store i8** %2, i8*** %5, align 8
%6 = bitcast { %swift.type*, i8** }* %generic.arguments to i8*
%7 = call swiftcc %swift.metadata_response @swift_getGenericMetadata(
i64 %0,
i8* %6, %swift.type_descriptor* @"$S9AnyAnimal0B3BoxCMn"
)
%9 = extractvalue %swift.metadata_response %7, 0
%10 = extractvalue %swift.metadata_response %7, 1
%11 = insertvalue %swift.metadata_response undef, %swift.type* %9, 0
%12 = insertvalue %swift.metadata_response %11, i64 %10, 1
ret %swift.metadata_response %12
}
18