entry: %classFields = alloca [1 x i8**], align 8 %T1 = alloca %swift.type*, align 8 %2 = bitcast %swift.type* %"RefBox<T>" to i64* %3 = getelementptr inbounds i64, i64* %2, i64 15 %4 = bitcast [1 x i8**]* %classFields to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %4) %5 = getelementptr inbounds [1 x i8**], [1 x i8**]* %classFields, i32 0, i32 0 %6 = bitcast %swift.type* %"RefBox<T>" to %swift.type** %7 = getelementptr inbounds %swift.type*, %swift.type** %6, i64 10 %T = load %swift.type*, %swift.type** %7, align 8, !invariant.load !33 %8 = call swiftcc %swift.metadata_response @swift_checkMetadataState(i64 319, %swift.type* %T) %9 = extractvalue %swift.metadata_response %8, 0 %10 = extractvalue %swift.metadata_response %8, 1 %11 = icmp ule i64 %10, 63 br i1 %11, label %dependency-satisfied, label %metadata-dependencies.cont dependency-satisfied: ; preds = %entry store %swift.type* %9, %swift.type** %T1, align 8 %12 = bitcast %swift.type* %9 to i8*** %13 = getelementptr inbounds i8**, i8*** %12, i64 -1 %.valueWitnesses = load i8**, i8*** %13, align 8, !invariant.load !33, !dereferenceable !34 %14 = getelementptr inbounds i8*, i8** %.valueWitnesses, i32 8 %15 = getelementptr inbounds i8**, i8*** %5, i32 0 store i8** %14, i8*** %15, align 8 call void @swift_initClassMetadata(%swift.type* %"RefBox<T>", %swift.type* null, i64 0, i64 1, i8*** %5, i64* %3) %16 = bitcast i8*** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %16) br label %metadata-dependencies.cont metadata-dependencies.cont: ; preds = %dependency-satisfied, %entry %17 = phi %swift.type* [ %9, %entry ], [ null, %dependency-satisfied ] %18 = phi i64 [ 63, %entry ], [ 0, %dependency-satisfied ] %19 = insertvalue %swift.metadata_response undef, %swift.type* %17, 0 %20 = insertvalue %swift.metadata_response %19, i64 %18, 1 ret %swift.metadata_response %20 } 41