entry: %arr.debug = alloca ptr, align 8 call void @llvm.memset.p0.i64(ptr align 8 %arr.debug, i8 0, i64 8, i1 false) %accumulator.debug = alloca i64, align 8 call void @llvm.memset.p0.i64(ptr align 8 %accumulator.debug, i8 0, i64 8, i1 false) %2 = alloca %TSa, align 8 %3 = alloca %TSi, align 8 %4 = alloca %TSiSg, align 8 %5 = alloca %TSa, align 8 %6 = alloca %TSiSg, align 8 %first.debug = alloca i64, align 8 call void @llvm.memset.p0.i64(ptr align 8 %first.debug, i8 0, i64 8, i1 false) %7 = alloca %Ts10ArraySliceV, align 8 %8 = alloca %TSa, align 8 %9 = alloca %Ts10ArraySliceV, align 8 %rest.debug = alloca ptr, align 8 call void @llvm.memset.p0.i64(ptr align 8 %rest.debug, i8 0, i64 8, i1 false) store ptr %0, ptr %arr.debug, align 8 store i64 %1, ptr %accumulator.debug, align 8 %10 = call ptr @swift_bridgeObjectRetain(ptr returned %0) #9 call void @llvm.lifetime.start.p0(i64 8, ptr %2) %._buffer = getelementptr inbounds %TSa, ptr %2, i32 0, i32 0 %._buffer._storage = getelementptr inbounds %Ts12_ArrayBufferV, ptr %._buffer, i32 0, i32 0 %._buffer._storage.rawValue = getelementptr inbounds %Ts14_BridgeStorageV, ptr %._buffer._storage, i32 0, i32 0 store ptr %0, ptr %._buffer._storage.rawValue, align 8 %11 = call ptr @__swift_instantiateConcreteTypeFromMangledName(ptr @"$sSaySiGMD") #8 %12 = call ptr @"$sSaySiGSayxGSlsWl"() #14 %13 = call swiftcc i1 @"$sSlsE7isEmptySbvg"(ptr %11, ptr %12, ptr noalias nocapture swiftself %2) %14 = call ptr @"$sSaySiGWOh"(ptr %2) call void @llvm.lifetime.end.p0(i64 8, ptr %2) br i1 %13, label %15, label %16 15: ; preds = %entry br label %48 16: ; preds = %entry call void @llvm.lifetime.start.p0(i64 8, ptr %3) %17 = call ptr @swift_bridgeObjectRetain(ptr returned %0) #9 call void @llvm.lifetime.start.p0(i64 9, ptr %4) call void @llvm.lifetime.start.p0(i64 8, ptr %5) %._buffer1 = getelementptr inbounds %TSa, ptr %5, i32 0, i32 0 %._buffer1._storage = getelementptr inbounds %Ts12_ArrayBufferV, ptr %._buffer1, i32 0, i32 0 %._buffer1._storage.rawValue = getelementptr inbounds %Ts14_BridgeStorageV, ptr %._buffer1._storage, i32 0, i32 0 store ptr %0, ptr %._buffer1._storage.rawValue, align 8 call swiftcc void @"$sSlsE5first7ElementQzSgvg"(ptr noalias nocapture sret(%swift.opaque) %4, ptr %11, ptr %12, ptr noalias nocapture swiftself %5) %18 = call ptr @"$sSaySiGWOh"(ptr %5) call void @llvm.lifetime.end.p0(i64 8, ptr %5) %19 = load i64, ptr %4, align 8 %20 = getelementptr inbounds %TSiSg, ptr %4, i32 0, i32 1 %21 = load i1, ptr %20, align 8 call void @llvm.lifetime.start.p0(i64 9, ptr %6) store i64 %19, ptr %6, align 8 %22 = getelementptr inbounds %TSiSg, ptr %6, i32 0, i32 1 store i1 %21, ptr %22, align 8 %23 = load i64, ptr %6, align 8 %24 = getelementptr inbounds %TSiSg, ptr %6, i32 0, i32 1 %25 = load i1, ptr %24, align 8 br i1 %25, label %28, label %26 26: ; preds = %16 %._value6 = getelementptr inbounds %TSi, ptr %6, i32 0, i32 0 %27 = load i64, ptr %._value6, align 8 %._value7 = getelementptr inbounds %TSi, ptr %3, i32 0, i32 0 store i64 %27, ptr %._value7, align 8 call void @llvm.lifetime.end.p0(i64 9, ptr %6) br label %29 28: ; preds = %16 %._value = getelementptr inbounds %TSi, ptr %3, i32 0, i32 0 store i64 0, ptr %._value, align 8 call void @llvm.lifetime.end.p0(i64 9, ptr %6) br label %29 29: ; preds = %26, %28 call void @llvm.lifetime.end.p0(i64 9, ptr %4) %._value2 = getelementptr inbounds %TSi, ptr %3, i32 0, i32 0 %30 = load i64, ptr %._value2, align 8 store i64 %30, ptr %first.debug, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr %3) call void @llvm.lifetime.start.p0(i64 32, ptr %7) %31 = call ptr @swift_bridgeObjectRetain(ptr returned %0) #9 call void @llvm.lifetime.start.p0(i64 8, ptr %8) %._buffer3 = getelementptr inbounds %TSa, ptr %8, i32 0, i32 0 %._buffer3._storage = getelementptr inbounds %Ts12_ArrayBufferV, ptr %._buffer3, i32 0, i32 0 %._buffer3._storage.rawValue = getelementptr inbounds %Ts14_BridgeStorageV, ptr %._buffer3._storage, i32 0, i32 0 store ptr %0, ptr %._buffer3._storage.rawValue, align 8 %32 = call swiftcc i64 @"$sSlsE9dropFirsty11SubSequenceQzSiFfA_"(ptr %11, ptr %12) call swiftcc void @"$sSlsE9dropFirsty11SubSequenceQzSiF"(ptr noalias nocapture sret(%swift.opaque) %7, i64 %32, ptr %11, ptr %12, ptr noalias nocapture swiftself %8) call void @llvm.lifetime.end.p0(i64 8, ptr %8) %._buffer4 = getelementptr inbounds %Ts10ArraySliceV, ptr %7, i32 0, i32 0 %._buffer4.owner = getelementptr inbounds %Ts12_SliceBufferV, ptr %._buffer4, i32 0, i32 0 %33 = getelementptr inbounds %AnyObject, ptr %._buffer4.owner, i32 0, i32 0 %34 = load ptr, ptr %33, align 8 %._buffer4.subscriptBaseAddress = getelementptr inbounds %Ts12_SliceBufferV, ptr %._buffer4, i32 0, i32 1 %._buffer4.subscriptBaseAddress._rawValue = getelementptr inbounds %TSp, ptr %._buffer4.subscriptBaseAddress, i32 0, i32 0 %35 = load ptr, ptr %._buffer4.subscriptBaseAddress._rawValue, align 8 %._buffer4.startIndex = getelementptr inbounds %Ts12_SliceBufferV, ptr %._buffer4, i32 0, i32 2 %._buffer4.startIndex._value = getelementptr inbounds %TSi, ptr %._buffer4.startIndex, i32 0, i32 0 %36 = load i64, ptr %._buffer4.startIndex._value, align 8 %._buffer4.endIndexAndFlags = getelementptr inbounds %Ts12_SliceBufferV, ptr %._buffer4, i32 0, i32 3 %._buffer4.endIndexAndFlags._value = getelementptr inbounds %TSu, ptr %._buffer4.endIndexAndFlags, i32 0, i32 0 %37 = load i64, ptr %._buffer4.endIndexAndFlags._value, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr %9) %._buffer5 = getelementptr inbounds %Ts10ArraySliceV, ptr %9, i32 0, i32 0 %._buffer5.owner = getelementptr inbounds %Ts12_SliceBufferV, ptr %._buffer5, i32 0, i32 0 %38 = getelementptr inbounds %AnyObject, ptr %._buffer5.owner, i32 0, i32 0 store ptr %34, ptr %38, align 8 %._buffer5.subscriptBaseAddress = getelementptr inbounds %Ts12_SliceBufferV, ptr %._buffer5, i32 0, i32 1 %._buffer5.subscriptBaseAddress._rawValue = getelementptr inbounds %TSp, ptr %._buffer5.subscriptBaseAddress, i32 0, i32 0 store ptr %35, ptr %._buffer5.subscriptBaseAddress._rawValue, align 8 %._buffer5.startIndex = getelementptr inbounds %Ts12_SliceBufferV, ptr %._buffer5, i32 0, i32 2 %._buffer5.startIndex._value = getelementptr inbounds %TSi, ptr %._buffer5.startIndex, i32 0, i32 0 store i64 %36, ptr %._buffer5.startIndex._value, align 8 %._buffer5.endIndexAndFlags = getelementptr inbounds %Ts12_SliceBufferV, ptr %._buffer5, i32 0, i32 3 %._buffer5.endIndexAndFlags._value = getelementptr inbounds %TSu, ptr %._buffer5.endIndexAndFlags, i32 0, i32 0 store i64 %37, ptr %._buffer5.endIndexAndFlags._value, align 8 %39 = call ptr @__swift_instantiateConcreteTypeFromMangledName(ptr @"$ss10ArraySliceVySiGMD") #8 %40 = call ptr @"$ss10ArraySliceVySiGAByxGSTsWl"() #14 %41 = call swiftcc ptr @"$sSaySayxGqd__c7ElementQyd__RszSTRd__lufC"(ptr noalias nocapture %9, ptr @"$sSiN", ptr %39, ptr %40) call void @llvm.lifetime.end.p0(i64 32, ptr %9) call void @llvm.lifetime.end.p0(i64 32, ptr %7) store ptr %41, ptr %rest.debug, align 8 %42 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %30, i64 %1) %43 = extractvalue { i64, i1 } %42, 0 %44 = extractvalue { i64, i1 } %42, 1 %45 = call i1 @llvm.expect.i1(i1 %44, i1 false) br i1 %45, label %50, label %46 46: ; preds = %29 %47 = call swiftcc i64 @"$s4Sum615mapRecursionSum_11accumulatorSiSaySiG_SitF"(ptr %41, i64 %43) call void @swift_bridgeObjectRelease(ptr %41) #9 br label %48 48: ; preds = %15, %46 %49 = phi i64 [ %47, %46 ], [ %1, %15 ] ret i64 %49 50: ; preds = %29 call void @llvm.trap() unreachable } ಡΊͳ͍ɺɺ