Skip to content

Instantly share code, notes, and snippets.

@norio-nomura
Created January 15, 2015 01:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save norio-nomura/e30c5450acfbc0bbf9d9 to your computer and use it in GitHub Desktop.
Save norio-nomura/e30c5450acfbc0bbf9d9 to your computer and use it in GitHub Desktop.
`swift-demangle-filter.py -emit-sil -O indexof.swift -o indexof-O.sil`
This file has been truncated, but you can view the full file.
sil_stage canonical
import Builtin
import Swift
import SwiftShims
// indexof.a : Swift.Array<Swift.Int>
sil_global indexof.a : [Swift.Int] : $Array<Int>
// indexof.c (Swift.Int) -> Swift.Bool
sil_global indexof.c (Swift.Int) -> Swift.Bool : $@callee_owned (Int) -> Bool
// indexof.result1 : Swift.Optional<Swift.Int>
sil_global indexof.result1 : Swift.Int? : $Optional<Int>
// indexof.result2 : Swift.Optional<Swift.Int>
sil_global indexof.result2 : Swift.Int? : $Optional<Int>
// top_level_code
sil private @top_level_code : $@thin () -> () {
bb0:
%0 = sil_global_addr indexof.a : [Swift.Int] : $*Array<Int> // users: %240, %324
%1 = integer_literal $Builtin.Word, 1 // users: %2, %9, %81, %83, %99, %101, %115, %178, %198, %201, %288, %290, %340, %364, %366, %397, %413, %415, %441, %460, %462, %510, %540, %542, %553
%2 = struct $Int (%1 : $Builtin.Word) // user: %8
%3 = integer_literal $Builtin.Word, 2 // users: %4, %11
%4 = struct $Int (%3 : $Builtin.Word) // user: %10
%5 = integer_literal $Builtin.Word, 3 // users: %6, %7#0, %34
%6 = struct $Int (%5 : $Builtin.Word) // user: %12
%7 = alloc_array $Int, %5 : $Builtin.Word // users: %8, %9, %11, %13, %235
store %2 to %7#1 : $*Int // id: %8
%9 = index_addr %7#1 : $*Int, %1 : $Builtin.Word // user: %10
store %4 to %9 : $*Int // id: %10
%11 = index_addr %7#1 : $*Int, %3 : $Builtin.Word // user: %12
store %6 to %11 : $*Int // id: %12
%13 = address_to_pointer %7#1 : $*Int to $Builtin.RawPointer // user: %25
%14 = integer_literal $Builtin.Int1, -1 // users: %23, %32, %39, %76, %90, %95, %105, %109, %133, %142, %160, %189, %222, %255, %267, %272, %283, %299, %350, %359, %375, %391, %395, %401, %404, %409, %455, %471, %513, %520, %524, %528, %531, %536, %553
%15 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %17, %19, %28, %30, %71, %89, %129, %131, %138, %140, %218, %220, %265, %270, %278, %297, %355, %373, %403, %450, %469, %530
%16 = metatype $@thick Builtin.RawPointer.Type // user: %17
%17 = apply %15<Builtin.RawPointer>(%16) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %21
%18 = metatype $@thick UnsafeMutablePointer<Int>.Type // user: %19
%19 = apply %15<UnsafeMutablePointer<Int>>(%18) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %21
%20 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %21, %31, %47, %50, %52, %58, %132, %141, %164, %191, %208, %221, %266, %271, %298, %312, %374, %439, %470, %485, %503, %505
%21 = apply %20(%17, %19) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %23
%22 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %23, %32, %39, %133, %142, %189, %222, %267, %272, %299, %350, %375, %391, %395, %401, %471, %513, %520, %524, %528
%23 = apply %22(%21, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %24
cond_fail %23 : $Builtin.Int1 // id: %24
%25 = unchecked_trivial_bit_cast %13 : $Builtin.RawPointer to $UnsafeMutablePointer<Int> // user: %26
%26 = struct_extract %25 : $UnsafeMutablePointer<Int>, #UnsafeMutablePointer.value // user: %203
%27 = metatype $@thick Builtin.Word.Type // user: %28
%28 = apply %15<Builtin.Word>(%27) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %31
%29 = metatype $@thick Int.Type // users: %30, %42, %94, %408, %535
%30 = apply %15<Int>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %31
%31 = apply %20(%28, %30) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %32
%32 = apply %22(%31, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %33
cond_fail %32 : $Builtin.Int1 // id: %33
%34 = unchecked_trivial_bit_cast %5 : $Builtin.Word to $Int // user: %37
%35 = integer_literal $Builtin.Word, 0 // users: %38, %47, %58, %66, %67, %152, %153, %180, %188, %191, %194, %194, %312, %338, %353, %485, %487, %487, %505, %515
%36 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %38, %353, %515
%37 = struct_extract %34 : $Int, #Int.value // users: %38, %45
%38 = apply %36(%37, %35) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %39
%39 = apply %22(%38, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %40
cond_fail %39 : $Builtin.Int1 // id: %40
%41 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %42, %147, %304, %380, %476
%42 = apply %41<Int>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %45, %47, %52, %57, %105, %167, %200
%43 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %45, %105, %148, %184, %305, %381, %419, %477, %546
%44 = integer_literal $Builtin.Int1, 0 // users: %45, %81, %83, %99, %101, %115, %148, %184, %198, %201, %288, %290, %305, %364, %366, %381, %397, %413, %415, %419, %441, %460, %462, %477, %510, %540, %542, %546
%45 = apply %43(%37, %42, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %46
%46 = tuple_extract %45 : $(Builtin.Word, Builtin.Int1), 0 // users: %50, %57
%47 = apply %20(%42, %35) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %48
cond_fail %47 : $Builtin.Int1 // id: %48
%49 = integer_literal $Builtin.Word, -9223372036854775808 // users: %50, %164
%50 = apply %20(%46, %49) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %54
%51 = integer_literal $Builtin.Word, -1 // users: %52, %86, %103, %293, %369, %417, %465, %544
%52 = apply %20(%42, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %54, %165
%53 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %54, %165, %390, %519
%54 = apply %53(%50, %52) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %55
cond_fail %54 : $Builtin.Int1 // id: %55
%56 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %57, %167
%57 = apply %56(%46, %42) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %58, %62, %66, %68, %188, %191, %208
%58 = apply %20(%57, %35) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %59
cond_br %58, bb1, bb2 // id: %59
bb1: // Preds: bb0
%60 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.None!enumelt // user: %61
br bb15(%60 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // id: %61
bb2: // Preds: bb0
%62 = struct $Int (%57 : $Builtin.Word) // user: %182
%63 = metatype $@thick _ContiguousArrayStorage<Int>.Type // user: %64
%64 = upcast %63 : $@thick _ContiguousArrayStorage<Int>.Type to $@thick AnyObject.Type // user: %127
%65 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %66, %120, %122, %211
%66 = apply %65(%35, %57) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %67
cond_br %66, bb3, bb4(%35 : $Builtin.Word) // id: %67
bb3: // Preds: bb2
br bb4(%57 : $Builtin.Word) // id: %68
bb4(%69 : $Builtin.Word): // Preds: bb2 bb3
%70 = metatype $@thick HeapObject.Type // users: %71, %114
%71 = apply %15<HeapObject>(%70) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %76
%72 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %74, %94, %114
%73 = metatype $@thick _ArrayBody.Type // users: %74, %89
%74 = apply %72<_ArrayBody>(%73) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %76, %83
%75 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %76, %90, %95, %109, %198, %201
%76 = apply %75(%71, %74, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %77, %78
%77 = tuple_extract %76 : $(Builtin.Word, Builtin.Int1), 0 // user: %81
%78 = tuple_extract %76 : $(Builtin.Word, Builtin.Int1), 1 // user: %79
cond_fail %78 : $Builtin.Int1 // id: %79
%80 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %81, %83, %99, %101, %115, %160
%81 = apply %80(%77, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %82
%82 = tuple_extract %81 : $(Builtin.Word, Builtin.Int1), 0 // user: %88
%83 = apply %80(%74, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %84
%84 = tuple_extract %83 : $(Builtin.Word, Builtin.Int1), 0 // users: %86, %118, %120, %122
%85 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %86, %103
%86 = apply %85(%84, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %88
%87 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %88, %104
%88 = apply %87(%82, %86) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %90, %148
%89 = apply %15<_ArrayBody>(%73) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %90
%90 = apply %75(%88, %89, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %91, %92
%91 = tuple_extract %90 : $(Builtin.Word, Builtin.Int1), 0 // user: %95
%92 = tuple_extract %90 : $(Builtin.Word, Builtin.Int1), 1 // user: %93
cond_fail %92 : $Builtin.Int1 // id: %93
%94 = apply %72<Int>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %95, %101
%95 = apply %75(%91, %94, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %96, %97
%96 = tuple_extract %95 : $(Builtin.Word, Builtin.Int1), 0 // user: %99
%97 = tuple_extract %95 : $(Builtin.Word, Builtin.Int1), 1 // user: %98
cond_fail %97 : $Builtin.Int1 // id: %98
%99 = apply %80(%96, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %100
%100 = tuple_extract %99 : $(Builtin.Word, Builtin.Int1), 0 // user: %104
%101 = apply %80(%94, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %102
%102 = tuple_extract %101 : $(Builtin.Word, Builtin.Int1), 0 // users: %103, %119, %122, %211
%103 = apply %85(%102, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %104
%104 = apply %87(%100, %103) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %109, %160, %184
%105 = apply %43(%69, %42, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %106, %107
%106 = tuple_extract %105 : $(Builtin.Word, Builtin.Int1), 0 // user: %109
%107 = tuple_extract %105 : $(Builtin.Word, Builtin.Int1), 1 // user: %108
cond_fail %107 : $Builtin.Int1 // id: %108
%109 = apply %75(%104, %106, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %110, %111
%110 = tuple_extract %109 : $(Builtin.Word, Builtin.Int1), 0 // user: %113
%111 = tuple_extract %109 : $(Builtin.Word, Builtin.Int1), 1 // user: %112
cond_fail %111 : $Builtin.Int1 // id: %112
%113 = struct $Int (%110 : $Builtin.Word) // user: %127
%114 = apply %72<HeapObject>(%70) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %115
%115 = apply %80(%114, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %116
%116 = tuple_extract %115 : $(Builtin.Word, Builtin.Int1), 0 // users: %117, %120, %211
%117 = struct $Int (%116 : $Builtin.Word) // user: %214
%118 = struct $Int (%84 : $Builtin.Word) // user: %210
%119 = struct $Int (%102 : $Builtin.Word) // users: %124, %213
%120 = apply %65(%116, %84) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %121
cond_br %120, bb5, bb12 // id: %121
bb5: // Preds: bb4
%122 = apply %65(%84, %102) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %123
cond_br %122, bb6, bb11 // id: %123
bb6: // Preds: bb5
br bb7(%119 : $Int) // id: %124
bb7(%125 : $Int): // Preds: bb6 bb11 bb13 bb14
// function_ref swift_bufferAllocate
%126 = function_ref @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %127
%127 = apply %126(%64, %113, %125) : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %135
%128 = metatype $@thick AnyObject.Protocol // user: %129
%129 = apply %15<AnyObject>(%128) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %132
%130 = metatype $@thick HeapBufferStorage<_ArrayBody, Int>.Type // user: %131
%131 = apply %15<HeapBufferStorage<_ArrayBody, Int>>(%130) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %132
%132 = apply %20(%129, %131) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %133
%133 = apply %22(%132, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %134
cond_fail %133 : $Builtin.Int1 // id: %134
%135 = unchecked_ref_bit_cast %127 : $AnyObject to $HeapBufferStorage<_ArrayBody, Int> // user: %136
%136 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1, %135 : $HeapBufferStorage<_ArrayBody, Int> // users: %144, %193
%137 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %138
%138 = apply %15<HeapBufferStorage<_ArrayBody, Int>?>(%137) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %141
%139 = metatype $@thick Builtin.NativeObject.Type // user: %140
%140 = apply %15<Builtin.NativeObject>(%139) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %141
%141 = apply %20(%138, %140) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %142
%142 = apply %22(%141, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %143
cond_fail %142 : $Builtin.Int1 // id: %143
%144 = unchecked_ref_bit_cast %136 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %145
%145 = ref_to_raw_pointer %144 : $Builtin.NativeObject to $Builtin.RawPointer // users: %150, %157, %186
%146 = metatype $@thick Int8.Type // user: %147
%147 = apply %41<Int8>(%146) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %148, %184
%148 = apply %43(%88, %147, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %149
%149 = tuple_extract %148 : $(Builtin.Word, Builtin.Int1), 0 // user: %150
%150 = index_raw_pointer %145 : $Builtin.RawPointer, %149 : $Builtin.Word // user: %151
%151 = pointer_to_address %150 : $Builtin.RawPointer to $*_ArrayBody // users: %155, %183
%152 = struct $Int (%35 : $Builtin.Word) // user: %154
%153 = struct $UInt (%35 : $Builtin.Word) // user: %154
%154 = struct $_ArrayBody (%152 : $Int, %153 : $UInt) // user: %155
store %154 to %151 : $*_ArrayBody // id: %155
// function_ref malloc_size
%156 = function_ref @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %158
%157 = struct $UnsafePointer<()> (%145 : $Builtin.RawPointer) // user: %158
%158 = apply %156(%157) : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %159
%159 = struct_extract %158 : $UInt, #UInt.value // user: %160
%160 = apply %80(%159, %104, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %161, %162
%161 = tuple_extract %160 : $(Builtin.Word, Builtin.Int1), 0 // users: %164, %167
%162 = tuple_extract %160 : $(Builtin.Word, Builtin.Int1), 1 // user: %163
cond_fail %162 : $Builtin.Int1 // id: %163
%164 = apply %20(%161, %49) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %165
%165 = apply %53(%164, %52) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %166
cond_fail %165 : $Builtin.Int1 // id: %166
%167 = apply %56(%161, %42) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %169
%168 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // user: %169
%169 = apply %168(%167) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %171
%170 = builtin_function_ref "s_to_u_checked_conversion_Int64" : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // user: %171
%171 = apply %170(%169) : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // users: %172, %173
%172 = tuple_extract %171 : $(Builtin.Int64, Builtin.Int1), 0 // user: %176
%173 = tuple_extract %171 : $(Builtin.Int64, Builtin.Int1), 1 // user: %174
cond_fail %173 : $Builtin.Int1 // id: %174
%175 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %176
%176 = apply %175(%172) : $@thin (Builtin.Int64) -> Builtin.Word // user: %178
%177 = builtin_function_ref "shl_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %178
%178 = apply %177(%176, %1) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %180
%179 = builtin_function_ref "or_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %180
%180 = apply %179(%178, %35) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %181
%181 = struct $UInt (%180 : $Builtin.Word) // user: %182
%182 = struct $_ArrayBody (%62 : $Int, %181 : $UInt) // user: %183
store %182 to %151 : $*_ArrayBody // id: %183
%184 = apply %43(%104, %147, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %185
%185 = tuple_extract %184 : $(Builtin.Word, Builtin.Int1), 0 // user: %186
%186 = index_raw_pointer %145 : $Builtin.RawPointer, %185 : $Builtin.Word // user: %194
%187 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %188
%188 = apply %187(%35, %57) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %189
%189 = apply %22(%188, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %190
cond_fail %189 : $Builtin.Int1 // id: %190
%191 = apply %20(%35, %57) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %192
cond_br %191, bb8, bb9 // id: %192
bb8: // Preds: bb7 bb10
br bb15(%136 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // id: %193
bb9: // Preds: bb7
br bb10(%35 : $Builtin.Word, %186 : $Builtin.RawPointer, %35 : $Builtin.Word) // id: %194
bb10(%195 : $Builtin.Word, %196 : $Builtin.RawPointer, %197 : $Builtin.Word): // Preds: bb9 bb10
%198 = apply %75(%195, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %199
%199 = tuple_extract %198 : $(Builtin.Word, Builtin.Int1), 0 // users: %208, %209
%200 = index_raw_pointer %196 : $Builtin.RawPointer, %42 : $Builtin.Word // user: %209
%201 = apply %75(%197, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %202
%202 = tuple_extract %201 : $(Builtin.Word, Builtin.Int1), 0 // user: %209
%203 = pointer_to_address %26 : $Builtin.RawPointer to $*Int // user: %204
%204 = index_addr %203 : $*Int, %197 : $Builtin.Word // user: %205
%205 = load %204 : $*Int // user: %207
%206 = pointer_to_address %196 : $Builtin.RawPointer to $*Int // user: %207
store %205 to %206 : $*Int // id: %207
%208 = apply %20(%199, %57) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %209
cond_br %208, bb8, bb10(%199 : $Builtin.Word, %200 : $Builtin.RawPointer, %202 : $Builtin.Word) // id: %209
bb11: // Preds: bb5
br bb7(%118 : $Int) // id: %210
bb12: // Preds: bb4
%211 = apply %65(%116, %102) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %212
cond_br %211, bb13, bb14 // id: %212
bb13: // Preds: bb12
br bb7(%119 : $Int) // id: %213
bb14: // Preds: bb12
br bb7(%117 : $Int) // id: %214
bb15(%215 : $Optional<HeapBufferStorage<_ArrayBody, Int>>): // Preds: bb1 bb8
%216 = enum $Optional<Builtin.NativeObject>, #Optional.None!enumelt // user: %448
%217 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %218
%218 = apply %15<HeapBufferStorage<_ArrayBody, Int>?>(%217) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %221, %298, %374, %470
%219 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %220
%220 = apply %15<_ContiguousArrayStorage<Int>?>(%219) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %221, %266, %271
%221 = apply %20(%218, %220) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %222
%222 = apply %22(%221, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %223
cond_fail %222 : $Builtin.Int1 // id: %223
%224 = unchecked_ref_bit_cast %215 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Optional<_ContiguousArrayStorage<Int>> // user: %225
%225 = enum_is_tag $Builtin.Int1, %224 : $Optional<_ContiguousArrayStorage<Int>>, #Optional.Some!enumelt.1 // user: %226
cond_br %225, bb16, bb27 // id: %226
bb16: // Preds: bb15
%227 = unchecked_ref_bit_cast %215 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $_ContiguousArrayStorage<Int> // user: %228
%228 = unchecked_ref_cast %227 : $_ContiguousArrayStorage<Int> to $Builtin.NativeObject // user: %229
%229 = enum $Optional<Builtin.NativeObject>, #Optional.Some!enumelt.1, %228 : $Builtin.NativeObject // user: %230
br bb17(%229 : $Optional<Builtin.NativeObject>) // id: %230
bb17(%231 : $Optional<Builtin.NativeObject>): // Preds: bb16 bb27
%232 = struct $_ArrayBuffer<Int> (%231 : $Optional<Builtin.NativeObject>) // user: %233
%233 = struct $Array<Int> (%232 : $_ArrayBuffer<Int>) // users: %240, %251
%234 = alloc_stack $Builtin.NativeObject // users: %235, %236, %237, %239
store %7#0 to %234#1 : $*Builtin.NativeObject // id: %235
fix_lifetime %234#1 : $*Builtin.NativeObject // id: %236
%237 = load %234#1 : $*Builtin.NativeObject // user: %238
strong_release %237 : $Builtin.NativeObject // id: %238
dealloc_stack %234#0 : $*@local_storage Builtin.NativeObject // id: %239
store %233 to %0 : $*Array<Int> // id: %240
%241 = sil_global_addr indexof.c (Swift.Int) -> Swift.Bool : $*@callee_owned (Int) -> Bool // users: %244, %327
// function_ref indexof.(closure #1)
%242 = function_ref indexof.(closure #1) : $@thin (Int) -> Bool // user: %243
%243 = thin_to_thick_function %242 : $@thin (Int) -> Bool to $@callee_owned (Int) -> Bool // user: %244
store %243 to %241 : $*@callee_owned (Int) -> Bool // id: %244
%245 = sil_global_addr indexof.result1 : Swift.Int? : $*Optional<Int> // users: %315, %437
// function_ref reabstraction thunk helper from @callee_owned (@unowned Swift.Int) -> (@unowned Swift.Bool) to @callee_owned (@in Swift.Int) -> (@unowned Swift.Bool) with unmangled suffix "_constprop0"
%246 = function_ref reabstraction thunk helper from @callee_owned (@unowned Swift.Int) -> (@unowned Swift.Bool) to @callee_owned (@in Swift.Int) -> (@unowned Swift.Bool) with unmangled suffix "_constprop0" : $@thin (@in Int) -> Bool // user: %247
%247 = thin_to_thick_function %246 : $@thin (@in Int) -> Bool to $@callee_owned (@in Int) -> Bool // user: %250
%248 = alloc_stack $LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> // users: %253, %258, %322
// function_ref reabstraction thunk helper <T_0_0 where T_0_0: Swift.CollectionType, T_0_0.Generator: Swift.GeneratorType, T_0_0.Generator.Element: Swift.Equatable, T_0_0.Index: Swift.ForwardIndexType, T_0_0.Index.Distance: Swift._SignedIntegerType, T_0_0.Index.Distance.IntegerLiteralType: Swift._BuiltinIntegerLiteralConvertible> from @callee_owned (@in T_0_0.Generator.Element) -> (@unowned Swift.Bool) to @callee_owned (@in T_0_0.Generator.Element) -> (@out Swift.Bool)
%249 = function_ref reabstraction thunk helper <T_0_0 where T_0_0: Swift.CollectionType, T_0_0.Generator: Swift.GeneratorType, T_0_0.Generator.Element: Swift.Equatable, T_0_0.Index: Swift.ForwardIndexType, T_0_0.Index.Distance: Swift._SignedIntegerType, T_0_0.Index.Distance.IntegerLiteralType: Swift._BuiltinIntegerLiteralConvertible> from @callee_owned (@in T_0_0.Generator.Element) -> (@unowned Swift.Bool) to @callee_owned (@in T_0_0.Generator.Element) -> (@out Swift.Bool) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Generator.Element : Equatable, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Bool, @in τ_0_0.Generator.Element, @owned @callee_owned (@in τ_0_0.Generator.Element) -> Bool) -> () // user: %250
%250 = partial_apply %249<[Int], IndexingGenerator<Array<Int>>, Int, Int, Int, Int, Int, Int>(%247) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Generator.Element : Equatable, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Bool, @in τ_0_0.Generator.Element, @owned @callee_owned (@in τ_0_0.Generator.Element) -> Bool) -> () // user: %251
%251 = struct $MapCollectionView<Array<Int>, Bool> (%233 : $Array<Int>, %250 : $@callee_owned (@out Bool, @in Int) -> ()) // user: %252
%252 = struct $LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> (%251 : $MapCollectionView<Array<Int>, Bool>) // user: %253
store %252 to %248#1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> // id: %253
%254 = alloc_stack $Bool // users: %256, %321, %429
%255 = struct $Bool (%14 : $Builtin.Int1) // user: %256
store %255 to %254#1 : $*Bool // id: %256
retain_value %231 : $Optional<Builtin.NativeObject> // id: %257
%258 = struct_element_addr %248#1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, #LazyForwardCollection._base // users: %259, %263
%259 = struct_element_addr %258 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._base // user: %260
%260 = struct_element_addr %259 : $*Array<Int>, #Array._buffer // user: %261
%261 = struct_element_addr %260 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // users: %262, %317, %345
%262 = load %261 : $*Optional<Builtin.NativeObject> // users: %274, %301, %446
%263 = struct_element_addr %258 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._transform // users: %318, %346
%264 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %265
%265 = apply %15<Builtin.NativeObject?>(%264) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %266
%266 = apply %20(%265, %220) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %267
%267 = apply %22(%266, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %268
cond_fail %267 : $Builtin.Int1 // id: %268
%269 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %270
%270 = apply %15<HeapBuffer<_ArrayBody, Int>>(%269) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %271
%271 = apply %20(%220, %270) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %272
%272 = apply %22(%271, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %273
cond_fail %272 : $Builtin.Int1 // id: %273
%274 = unchecked_ref_bit_cast %262 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %275
%275 = enum_is_tag $Builtin.Int1, %274 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %276
cond_br %275, bb18, bb26 // id: %276
bb18: // Preds: bb17
%277 = metatype $@thick HeapObject.Type // user: %278
%278 = apply %15<HeapObject>(%277) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %283
%279 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %281
%280 = metatype $@thick _ArrayBody.Type // user: %281
%281 = apply %279<_ArrayBody>(%280) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %283, %290
%282 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %283
%283 = apply %282(%278, %281, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %284, %285
%284 = tuple_extract %283 : $(Builtin.Word, Builtin.Int1), 0 // user: %288
%285 = tuple_extract %283 : $(Builtin.Word, Builtin.Int1), 1 // user: %286
cond_fail %285 : $Builtin.Int1 // id: %286
%287 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %288, %290
%288 = apply %287(%284, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %289
%289 = tuple_extract %288 : $(Builtin.Word, Builtin.Int1), 0 // user: %295
%290 = apply %287(%281, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %291
%291 = tuple_extract %290 : $(Builtin.Word, Builtin.Int1), 0 // user: %293
%292 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %293
%293 = apply %292(%291, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %295
%294 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %295
%295 = apply %294(%289, %293) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %305
%296 = metatype $@thick Builtin.NativeObject.Type // user: %297
%297 = apply %15<Builtin.NativeObject>(%296) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %298
%298 = apply %20(%218, %297) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %299
%299 = apply %22(%298, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %300
cond_fail %299 : $Builtin.Int1 // id: %300
%301 = unchecked_ref_bit_cast %262 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %302
%302 = ref_to_raw_pointer %301 : $Builtin.NativeObject to $Builtin.RawPointer // user: %307
%303 = metatype $@thick Int8.Type // user: %304
%304 = apply %41<Int8>(%303) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %305
%305 = apply %43(%295, %304, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %306
%306 = tuple_extract %305 : $(Builtin.Word, Builtin.Int1), 0 // user: %307
%307 = index_raw_pointer %302 : $Builtin.RawPointer, %306 : $Builtin.Word // user: %308
%308 = pointer_to_address %307 : $Builtin.RawPointer to $*_ArrayBody // user: %309
%309 = struct_element_addr %308 : $*_ArrayBody, #_ArrayBody.count // user: %310
%310 = struct_element_addr %309 : $*Int, #Int.value // user: %311
%311 = load %310 : $*Builtin.Word // users: %312, %313
%312 = apply %20(%35, %311) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %313
cond_br %312, bb19, bb21(%311 : $Builtin.Word) // id: %313
bb19: // Preds: bb18 bb24 bb26
%314 = enum $Optional<Int>, #Optional.None!enumelt // user: %315
store %314 to %245 : $*Optional<Int> // id: %315
br bb20 // id: %316
bb20: // Preds: bb19 bb23
%317 = load %261 : $*Optional<Builtin.NativeObject> // user: %319
%318 = load %263 : $*@callee_owned (@out Bool, @in Int) -> () // user: %320
release_value %317 : $Optional<Builtin.NativeObject> // id: %319
strong_release %318 : $@callee_owned (@out Bool, @in Int) -> () // id: %320
dealloc_stack %254#0 : $*@local_storage Bool // id: %321
dealloc_stack %248#0 : $*@local_storage LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> // id: %322
%323 = sil_global_addr indexof.result2 : Swift.Int? : $*Optional<Int> // users: %490, %493
%324 = struct_element_addr %0 : $*Array<Int>, #Array._buffer // user: %325
%325 = struct_element_addr %324 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // user: %326
%326 = load %325 : $*Optional<Builtin.NativeObject> // users: %328, %329, %332, %333, %473, %484, %488, %494, %497
%327 = load %241 : $*@callee_owned (Int) -> Bool // users: %331, %496, %557, %558
%328 = unchecked_ref_bit_cast %326 : $Optional<Builtin.NativeObject> to $Optional<_ContiguousArrayStorage<Int>> // users: %334, %506
%329 = unchecked_ref_bit_cast %326 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // users: %330, %500, %512
%330 = enum_is_tag $Builtin.Int1, %329 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %335
strong_retain %327 : $@callee_owned (Int) -> Bool // id: %331
retain_value %326 : $Optional<Builtin.NativeObject> // id: %332
retain_value %326 : $Optional<Builtin.NativeObject> // id: %333
retain_value %328 : $Optional<_ContiguousArrayStorage<Int>> // id: %334
cond_br %330, bb28, bb30 // id: %335
bb21(%336 : $Builtin.Word): // Preds: bb18
%337 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %359, %397, %404, %409, %441
%338 = struct $Int (%35 : $Builtin.Word) // user: %339
%339 = enum $Optional<Int>, #Optional.Some!enumelt.1, %338 : $Int // user: %340
br bb22(%1 : $Builtin.Word, %339 : $Optional<Int>) // id: %340
bb22(%341 : $Builtin.Word, %342 : $Optional<Int>): // Preds: bb21 bb25
%343 = unchecked_enum_data %342 : $Optional<Int>, #Optional.Some!enumelt.1 // user: %352
%344 = alloc_stack $Bool // users: %427, %431, %435
%345 = load %261 : $*Optional<Builtin.NativeObject> // users: %348, %377
%346 = load %263 : $*@callee_owned (@out Bool, @in Int) -> () // users: %426, %427
%347 = alloc_stack $Int // users: %425, %427, %428
%348 = unchecked_ref_bit_cast %345 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %349
%349 = enum_is_tag $Builtin.Int1, %348 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %350
%350 = apply %22(%349, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %351
cond_fail %350 : $Builtin.Int1 // id: %351
%352 = struct_extract %343 : $Int, #Int.value // users: %353, %389, %394, %394, %397, %400, %423
%353 = apply %36(%352, %35) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %390
%354 = metatype $@thick HeapObject.Type // user: %355
%355 = apply %15<HeapObject>(%354) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %359
%356 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %358, %408
%357 = metatype $@thick _ArrayBody.Type // users: %358, %403
%358 = apply %356<_ArrayBody>(%357) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %359, %366
%359 = apply %337(%355, %358, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %360, %361
%360 = tuple_extract %359 : $(Builtin.Word, Builtin.Int1), 0 // user: %364
%361 = tuple_extract %359 : $(Builtin.Word, Builtin.Int1), 1 // user: %362
cond_fail %361 : $Builtin.Int1 // id: %362
%363 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %364, %366, %413, %415
%364 = apply %363(%360, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %365
%365 = tuple_extract %364 : $(Builtin.Word, Builtin.Int1), 0 // user: %371
%366 = apply %363(%358, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %367
%367 = tuple_extract %366 : $(Builtin.Word, Builtin.Int1), 0 // user: %369
%368 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %369, %417
%369 = apply %368(%367, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %371
%370 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %371, %418
%371 = apply %370(%365, %369) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %381, %404
%372 = metatype $@thick Builtin.NativeObject.Type // user: %373
%373 = apply %15<Builtin.NativeObject>(%372) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %374
%374 = apply %20(%218, %373) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %375
%375 = apply %22(%374, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %376
cond_fail %375 : $Builtin.Int1 // id: %376
%377 = unchecked_ref_bit_cast %345 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %378
%378 = ref_to_raw_pointer %377 : $Builtin.NativeObject to $Builtin.RawPointer // users: %383, %421
%379 = metatype $@thick Int8.Type // user: %380
%380 = apply %41<Int8>(%379) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %381, %419
%381 = apply %43(%371, %380, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %382
%382 = tuple_extract %381 : $(Builtin.Word, Builtin.Int1), 0 // user: %383
%383 = index_raw_pointer %378 : $Builtin.RawPointer, %382 : $Builtin.Word // user: %384
%384 = pointer_to_address %383 : $Builtin.RawPointer to $*_ArrayBody // user: %385
%385 = struct_element_addr %384 : $*_ArrayBody, #_ArrayBody.count // user: %386
%386 = struct_element_addr %385 : $*Int, #Int.value // user: %387
%387 = load %386 : $*Builtin.Word // user: %389
%388 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %389
%389 = apply %388(%352, %387) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %390
%390 = apply %53(%353, %389) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %391
%391 = apply %22(%390, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %392
cond_fail %391 : $Builtin.Int1 // id: %392
%393 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %394
%394 = apply %393(%352, %352) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %395
%395 = apply %22(%394, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %396
cond_fail %395 : $Builtin.Int1 // id: %396
%397 = apply %337(%352, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %398
%398 = tuple_extract %397 : $(Builtin.Word, Builtin.Int1), 0 // user: %400
%399 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %400
%400 = apply %399(%398, %352) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %401
%401 = apply %22(%400, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %402
cond_fail %401 : $Builtin.Int1 // id: %402
%403 = apply %15<_ArrayBody>(%357) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %404
%404 = apply %337(%371, %403, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %405, %406
%405 = tuple_extract %404 : $(Builtin.Word, Builtin.Int1), 0 // user: %409
%406 = tuple_extract %404 : $(Builtin.Word, Builtin.Int1), 1 // user: %407
cond_fail %406 : $Builtin.Int1 // id: %407
%408 = apply %356<Int>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %409, %415
%409 = apply %337(%405, %408, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %410, %411
%410 = tuple_extract %409 : $(Builtin.Word, Builtin.Int1), 0 // user: %413
%411 = tuple_extract %409 : $(Builtin.Word, Builtin.Int1), 1 // user: %412
cond_fail %411 : $Builtin.Int1 // id: %412
%413 = apply %363(%410, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %414
%414 = tuple_extract %413 : $(Builtin.Word, Builtin.Int1), 0 // user: %418
%415 = apply %363(%408, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %416
%416 = tuple_extract %415 : $(Builtin.Word, Builtin.Int1), 0 // user: %417
%417 = apply %368(%416, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %418
%418 = apply %370(%414, %417) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %419
%419 = apply %43(%418, %380, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %420
%420 = tuple_extract %419 : $(Builtin.Word, Builtin.Int1), 0 // user: %421
%421 = index_raw_pointer %378 : $Builtin.RawPointer, %420 : $Builtin.Word // user: %422
%422 = pointer_to_address %421 : $Builtin.RawPointer to $*Int // user: %423
%423 = index_addr %422 : $*Int, %352 : $Builtin.Word // user: %424
%424 = load %423 : $*Int // user: %425
store %424 to %347#1 : $*Int // id: %425
strong_retain %346 : $@callee_owned (@out Bool, @in Int) -> () // id: %426
%427 = apply %346(%344#1, %347#1) : $@callee_owned (@out Bool, @in Int) -> ()
dealloc_stack %347#0 : $*@local_storage Int // id: %428
%429 = struct_element_addr %254#1 : $*Bool, #Bool.value // user: %430
%430 = load %429 : $*Builtin.Int1 // user: %434
%431 = struct_element_addr %344#1 : $*Bool, #Bool.value // user: %432
%432 = load %431 : $*Builtin.Int1 // user: %434
%433 = builtin_function_ref "cmp_eq_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %434
%434 = apply %433(%432, %430) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %436
dealloc_stack %344#0 : $*@local_storage Bool // id: %435
cond_br %434, bb23, bb24 // id: %436
bb23: // Preds: bb22
store %342 to %245 : $*Optional<Int> // id: %437
br bb20 // id: %438
bb24: // Preds: bb22
%439 = apply %20(%341, %336) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %440
cond_br %439, bb19, bb25 // id: %440
bb25: // Preds: bb24
%441 = apply %337(%341, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %442
%442 = tuple_extract %441 : $(Builtin.Word, Builtin.Int1), 0 // user: %445
%443 = struct $Int (%341 : $Builtin.Word) // user: %444
%444 = enum $Optional<Int>, #Optional.Some!enumelt.1, %443 : $Int // user: %445
br bb22(%442 : $Builtin.Word, %444 : $Optional<Int>) // id: %445
bb26: // Preds: bb17
retain_value %262 : $Optional<Builtin.NativeObject> // id: %446
br bb19 // id: %447
bb27: // Preds: bb15
br bb17(%216 : $Optional<Builtin.NativeObject>) // id: %448
bb28: // Preds: bb20
%449 = metatype $@thick HeapObject.Type // user: %450
%450 = apply %15<HeapObject>(%449) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %455
%451 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %453, %535
%452 = metatype $@thick _ArrayBody.Type // users: %453, %530
%453 = apply %451<_ArrayBody>(%452) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %455, %462
%454 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %455, %510, %531, %536, %553
%455 = apply %454(%450, %453, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %456, %457
%456 = tuple_extract %455 : $(Builtin.Word, Builtin.Int1), 0 // user: %460
%457 = tuple_extract %455 : $(Builtin.Word, Builtin.Int1), 1 // user: %458
cond_fail %457 : $Builtin.Int1 // id: %458
%459 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %460, %462, %540, %542
%460 = apply %459(%456, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %461
%461 = tuple_extract %460 : $(Builtin.Word, Builtin.Int1), 0 // user: %467
%462 = apply %459(%453, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %463
%463 = tuple_extract %462 : $(Builtin.Word, Builtin.Int1), 0 // user: %465
%464 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %465, %544
%465 = apply %464(%463, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %467
%466 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %467, %545
%467 = apply %466(%461, %465) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %477, %531
%468 = metatype $@thick Builtin.NativeObject.Type // user: %469
%469 = apply %15<Builtin.NativeObject>(%468) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %470
%470 = apply %20(%218, %469) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %471
%471 = apply %22(%470, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %472
cond_fail %471 : $Builtin.Int1 // id: %472
%473 = unchecked_ref_bit_cast %326 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %474
%474 = ref_to_raw_pointer %473 : $Builtin.NativeObject to $Builtin.RawPointer // users: %479, %548
%475 = metatype $@thick Int8.Type // user: %476
%476 = apply %41<Int8>(%475) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %477, %546
%477 = apply %43(%467, %476, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %478
%478 = tuple_extract %477 : $(Builtin.Word, Builtin.Int1), 0 // user: %479
%479 = index_raw_pointer %474 : $Builtin.RawPointer, %478 : $Builtin.Word // user: %480
%480 = pointer_to_address %479 : $Builtin.RawPointer to $*_ArrayBody // user: %481
%481 = struct_element_addr %480 : $*_ArrayBody, #_ArrayBody.count // user: %482
%482 = struct_element_addr %481 : $*Int, #Int.value // users: %483, %502, %516
%483 = load %482 : $*Builtin.Word // user: %485
release_value %326 : $Optional<Builtin.NativeObject> // id: %484
%485 = apply %20(%35, %483) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %486
cond_br %485, bb30, bb29 // id: %486
bb29: // Preds: bb28
br bb36(%35 : $Builtin.Word, %35 : $Builtin.Word) // id: %487
bb30: // Preds: bb20 bb28 bb34 bb35
release_value %326 : $Optional<Builtin.NativeObject> // id: %488
%489 = enum $Optional<Int>, #Optional.None!enumelt // user: %490
store %489 to %323 : $*Optional<Int> // id: %490
br bb32 // id: %491
bb31: // Preds: bb36
%492 = enum $Optional<Int>, #Optional.Some!enumelt.1, %552 : $Int // user: %493
store %492 to %323 : $*Optional<Int> // id: %493
release_value %326 : $Optional<Builtin.NativeObject> // id: %494
br bb32 // id: %495
bb32: // Preds: bb30 bb31
strong_release %327 : $@callee_owned (Int) -> Bool // id: %496
release_value %326 : $Optional<Builtin.NativeObject> // id: %497
%498 = tuple () // user: %499
return %498 : $() // id: %499
bb33: // Preds: bb36
%500 = enum_is_tag $Builtin.Int1, %329 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %501
cond_br %500, bb34, bb35 // id: %501
bb34: // Preds: bb33
%502 = load %482 : $*Builtin.Word // user: %503
%503 = apply %20(%511, %502) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %504
cond_br %503, bb30, bb36(%511 : $Builtin.Word, %554 : $Builtin.Word) // id: %504
bb35: // Preds: bb33
%505 = apply %20(%511, %35) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %507
retain_value %328 : $Optional<_ContiguousArrayStorage<Int>> // id: %506
cond_br %505, bb30, bb36(%511 : $Builtin.Word, %554 : $Builtin.Word) // id: %507
bb36(%508 : $Builtin.Word, %509 : $Builtin.Word): // Preds: bb29 bb34 bb35
%510 = apply %454(%508, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %511
%511 = tuple_extract %510 : $(Builtin.Word, Builtin.Int1), 0 // users: %503, %504, %505, %507, %527
%512 = enum_is_tag $Builtin.Int1, %329 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %513
%513 = apply %22(%512, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %514
cond_fail %513 : $Builtin.Int1 // id: %514
%515 = apply %36(%508, %35) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %519
%516 = load %482 : $*Builtin.Word // user: %518
%517 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %518
%518 = apply %517(%508, %516) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %519
%519 = apply %53(%515, %518) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %520
%520 = apply %22(%519, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %521
cond_fail %520 : $Builtin.Int1 // id: %521
%522 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %523
%523 = apply %522(%508, %508) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %524
%524 = apply %22(%523, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %525
cond_fail %524 : $Builtin.Int1 // id: %525
%526 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %527
%527 = apply %526(%511, %508) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %528
%528 = apply %22(%527, %14) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %529
cond_fail %528 : $Builtin.Int1 // id: %529
%530 = apply %15<_ArrayBody>(%452) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %531
%531 = apply %454(%467, %530, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %532, %533
%532 = tuple_extract %531 : $(Builtin.Word, Builtin.Int1), 0 // user: %536
%533 = tuple_extract %531 : $(Builtin.Word, Builtin.Int1), 1 // user: %534
cond_fail %533 : $Builtin.Int1 // id: %534
%535 = apply %451<Int>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %536, %542
%536 = apply %454(%532, %535, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %537, %538
%537 = tuple_extract %536 : $(Builtin.Word, Builtin.Int1), 0 // user: %540
%538 = tuple_extract %536 : $(Builtin.Word, Builtin.Int1), 1 // user: %539
cond_fail %538 : $Builtin.Int1 // id: %539
%540 = apply %459(%537, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %541
%541 = tuple_extract %540 : $(Builtin.Word, Builtin.Int1), 0 // user: %545
%542 = apply %459(%535, %1, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %543
%543 = tuple_extract %542 : $(Builtin.Word, Builtin.Int1), 0 // user: %544
%544 = apply %464(%543, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %545
%545 = apply %466(%541, %544) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %546
%546 = apply %43(%545, %476, %44) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %547
%547 = tuple_extract %546 : $(Builtin.Word, Builtin.Int1), 0 // user: %548
%548 = index_raw_pointer %474 : $Builtin.RawPointer, %547 : $Builtin.Word // user: %549
%549 = pointer_to_address %548 : $Builtin.RawPointer to $*Int // user: %550
%550 = index_addr %549 : $*Int, %508 : $Builtin.Word // user: %551
%551 = load %550 : $*Int // user: %558
%552 = struct $Int (%509 : $Builtin.Word) // user: %492
%553 = apply %454(%509, %1, %14) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %554, %555
%554 = tuple_extract %553 : $(Builtin.Word, Builtin.Int1), 0 // users: %504, %507
%555 = tuple_extract %553 : $(Builtin.Word, Builtin.Int1), 1 // user: %556
cond_fail %555 : $Builtin.Int1 // id: %556
strong_retain %327 : $@callee_owned (Int) -> Bool // id: %557
%558 = apply %327(%551) : $@callee_owned (Int) -> Bool // user: %559
%559 = struct_extract %558 : $Bool, #Bool.value // user: %560
cond_br %559, bb31, bb33 // id: %560
}
// indexof.v1_index_of <A : Swift.CollectionType>(A, (A.Generator.Element) -> Swift.Bool) -> Swift.Optional<A.Index>
sil indexof.v1_index_of <A : Swift.CollectionType>(A, (A.Generator.Element) -> Swift.Bool) -> A.Index? : $@thin <C where C : CollectionType, C.Generator : GeneratorType, C.Generator.Element : Equatable, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<C.Index>, @in C, @owned @callee_owned (@in C.Generator.Element) -> Bool) -> () {
bb0(%0 : $*Optional<C.Index>, %1 : $*C, %2 : $@callee_owned (@in C.Generator.Element) -> Bool):
// function_ref Swift.find <A : Swift.CollectionType>(A, A.Generator.Element) -> Swift.Optional<A.Index>
%3 = function_ref Swift.find <A : Swift.CollectionType>(A, A.Generator.Element) -> A.Index? : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Generator.Element : Equatable, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_0.Index>, @in τ_0_0, @in τ_0_0.Generator.Element) -> () // user: %19
%4 = alloc_stack $LazyForwardCollection<MapCollectionView<C, Bool>> // users: %14, %19, %24
// function_ref Swift.LazyForwardCollection.map <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>)<E>((A.Generator.Element) -> E) -> Swift.LazyForwardCollection<Swift.MapCollectionView<A, E>>
%5 = function_ref Swift.LazyForwardCollection.map <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>)<E>((A.Generator.Element) -> E) -> Swift.LazyForwardCollection<Swift.MapCollectionView<A, E>> : $@cc(method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible><τ_1_0> (@out LazyForwardCollection<MapCollectionView<τ_0_0, τ_1_0>>, @owned @callee_owned (@out τ_1_0, @in τ_0_0.Generator.Element) -> (), @in LazyForwardCollection<τ_0_0>) -> () // user: %14
%6 = alloc_stack $LazyForwardCollection<C> // users: %10, %14, %23
// function_ref Swift.lazy <A : Swift.CollectionType>(A) -> Swift.LazyForwardCollection<A>
%7 = function_ref Swift.lazy <A : Swift.CollectionType>(A) -> Swift.LazyForwardCollection<A> : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<τ_0_0>, @in τ_0_0) -> () // user: %10
%8 = alloc_stack $C // users: %9, %10, %22
copy_addr %1 to [initialization] %8#1 : $*C // id: %9
%10 = apply %7<C, C.Generator, C.Generator.Element, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%6#1, %8#1) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<τ_0_0>, @in τ_0_0) -> ()
// function_ref reabstraction thunk helper <T_0_0 where T_0_0: Swift.CollectionType, T_0_0.Generator: Swift.GeneratorType, T_0_0.Generator.Element: Swift.Equatable, T_0_0.Index: Swift.ForwardIndexType, T_0_0.Index.Distance: Swift._SignedIntegerType, T_0_0.Index.Distance.IntegerLiteralType: Swift._BuiltinIntegerLiteralConvertible> from @callee_owned (@in T_0_0.Generator.Element) -> (@unowned Swift.Bool) to @callee_owned (@in T_0_0.Generator.Element) -> (@out Swift.Bool)
%11 = function_ref reabstraction thunk helper <T_0_0 where T_0_0: Swift.CollectionType, T_0_0.Generator: Swift.GeneratorType, T_0_0.Generator.Element: Swift.Equatable, T_0_0.Index: Swift.ForwardIndexType, T_0_0.Index.Distance: Swift._SignedIntegerType, T_0_0.Index.Distance.IntegerLiteralType: Swift._BuiltinIntegerLiteralConvertible> from @callee_owned (@in T_0_0.Generator.Element) -> (@unowned Swift.Bool) to @callee_owned (@in T_0_0.Generator.Element) -> (@out Swift.Bool) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Generator.Element : Equatable, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Bool, @in τ_0_0.Generator.Element, @owned @callee_owned (@in τ_0_0.Generator.Element) -> Bool) -> () // user: %12
%12 = partial_apply %11<C, C.Generator, C.Generator.Element, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%2) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Generator.Element : Equatable, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Bool, @in τ_0_0.Generator.Element, @owned @callee_owned (@in τ_0_0.Generator.Element) -> Bool) -> () // user: %14
strong_retain %2 : $@callee_owned (@in C.Generator.Element) -> Bool // id: %13
%14 = apply %5<C, C.Generator, C.Generator.Element, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element, Bool>(%4#1, %12, %6#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible><τ_1_0> (@out LazyForwardCollection<MapCollectionView<τ_0_0, τ_1_0>>, @owned @callee_owned (@out τ_1_0, @in τ_0_0.Generator.Element) -> (), @in LazyForwardCollection<τ_0_0>) -> ()
%15 = alloc_stack $Bool // users: %18, %19, %21
%16 = integer_literal $Builtin.Int1, -1 // user: %17
%17 = struct $Bool (%16 : $Builtin.Int1) // user: %18
store %17 to %15#1 : $*Bool // id: %18
%19 = apply %3<LazyForwardCollection<MapCollectionView<C, Bool>>, MapSequenceGenerator<C.Generator, Bool>, Bool, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, Bool>(%0, %4#1, %15#1) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Generator.Element : Equatable, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_0.Index>, @in τ_0_0, @in τ_0_0.Generator.Element) -> ()
strong_release %2 : $@callee_owned (@in C.Generator.Element) -> Bool // id: %20
dealloc_stack %15#0 : $*@local_storage Bool // id: %21
dealloc_stack %8#0 : $*@local_storage C // id: %22
dealloc_stack %6#0 : $*@local_storage LazyForwardCollection<C> // id: %23
dealloc_stack %4#0 : $*@local_storage LazyForwardCollection<MapCollectionView<C, Bool>> // id: %24
destroy_addr %1 : $*C // id: %25
%26 = tuple () // user: %27
return %26 : $() // id: %27
}
// Swift.find <A : Swift.CollectionType>(A, A.Generator.Element) -> Swift.Optional<A.Index>
sil public_external Swift.find <A : Swift.CollectionType>(A, A.Generator.Element) -> A.Index? : $@thin <C where C : CollectionType, C.Generator : GeneratorType, C.Generator.Element : Equatable, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<C.Index>, @in C, @in C.Generator.Element) -> () {
bb0(%0 : $*Optional<C.Index>, %1 : $*C, %2 : $*C.Generator.Element):
%3 = alloc_stack $RangeGenerator<C.Index> // users: %10, %16, %38, %51, %55, %61
// function_ref Swift.Range.generate <A : Swift.ForwardIndexType>(Swift.Range<A>)() -> Swift.RangeGenerator<A>
%4 = function_ref Swift.Range.generate <A : Swift.ForwardIndexType>(Swift.Range<A>)() -> Swift.RangeGenerator<A> : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out RangeGenerator<τ_0_0>, @in Range<τ_0_0>) -> () // user: %10
%5 = alloc_stack $Range<C.Index> // users: %9, %10, %12
// function_ref Swift.indices <A : Swift.CollectionType>(A) -> Swift.Range<A.Index>
%6 = function_ref Swift.indices <A : Swift.CollectionType>(A) -> Swift.Range<A.Index> : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Range<τ_0_0.Index>, @in τ_0_0) -> () // user: %9
%7 = alloc_stack $C // users: %8, %9, %11
copy_addr %1 to [initialization] %7#1 : $*C // id: %8
%9 = apply %6<C, C.Generator, C.Generator.Element, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%5#1, %7#1) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Range<τ_0_0.Index>, @in τ_0_0) -> ()
%10 = apply %4<C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex>(%3#1, %5#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out RangeGenerator<τ_0_0>, @in Range<τ_0_0>) -> ()
dealloc_stack %7#0 : $*@local_storage C // id: %11
dealloc_stack %5#0 : $*@local_storage Range<C.Index> // id: %12
%13 = alloc_stack $Optional<C.Index> // users: %16, %17, %21, %37, %50, %55, %56
// function_ref Swift.RangeGenerator.next <A : Swift.ForwardIndexType>(inout Swift.RangeGenerator<A>)() -> Swift.Optional<A>
%14 = function_ref Swift.RangeGenerator.next <A : Swift.ForwardIndexType>(inout Swift.RangeGenerator<A>)() -> A? : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_0>, @inout RangeGenerator<τ_0_0>) -> () // users: %16, %55
// function_ref Swift._doesOptionalHaveValue <A>(inout Swift.Optional<A>) -> Builtin.Int1
%15 = function_ref Swift._doesOptionalHaveValue <A>(inout A?) -> Builtin.Int1 : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // users: %17, %56
%16 = apply %14<C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex>(%13#1, %3#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_0>, @inout RangeGenerator<τ_0_0>) -> ()
%17 = apply [transparent] %15<C.Index>(%13#1) : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // user: %18
cond_br %17, bb1, bb2 // id: %18
bb1: // Preds: bb0 bb4
%19 = alloc_stack $C.Index // users: %21, %26, %44, %48, %49, %53, %54
// function_ref Swift._getOptionalValue <A>(Swift.Optional<A>) -> A
%20 = function_ref Swift._getOptionalValue <A>(A?) -> A : $@thin <τ_0_0> (@out τ_0_0, @in Optional<τ_0_0>) -> () // user: %21
%21 = apply [transparent] %20<C.Index>(%19#1, %13#1) : $@thin <τ_0_0> (@out τ_0_0, @in Optional<τ_0_0>) -> ()
%22 = metatype $@thick C.Generator.Element.Type // user: %31
%23 = witness_method $C.Generator.Element, #Equatable."=="!1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : Equatable> (@in τ_0_0, @in τ_0_0, @thick τ_0_0.Type) -> Bool // user: %31
%24 = alloc_stack $C.Generator.Element // users: %28, %31, %35
%25 = alloc_stack $C.Index // users: %26, %28, %34
copy_addr %19#1 to [initialization] %25#1 : $*C.Index // id: %26
%27 = witness_method $C, #CollectionType.subscript!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @inout τ_0_0) -> () // user: %28
%28 = apply %27<C, C.Generator, C.Generator.Element, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%24#1, %25#1, %1) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @inout τ_0_0) -> ()
%29 = alloc_stack $C.Generator.Element // users: %30, %31, %33
copy_addr %2 to [initialization] %29#1 : $*C.Generator.Element // id: %30
%31 = apply %23<C.Generator.Element>(%24#1, %29#1, %22) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : Equatable> (@in τ_0_0, @in τ_0_0, @thick τ_0_0.Type) -> Bool // user: %32
%32 = struct_extract %31 : $Bool, #Bool.value // user: %36
dealloc_stack %29#0 : $*@local_storage C.Generator.Element // id: %33
dealloc_stack %25#0 : $*@local_storage C.Index // id: %34
dealloc_stack %24#0 : $*@local_storage C.Generator.Element // id: %35
cond_br %32, bb3, bb4 // id: %36
bb2: // Preds: bb0 bb4
dealloc_stack %13#0 : $*@local_storage Optional<C.Index> // id: %37
destroy_addr %3#1 : $*RangeGenerator<C.Index> // id: %38
// function_ref Swift.Optional.init <A>(Swift.Optional<A>.Type)(nilLiteral : ()) -> Swift.Optional<A>
%39 = function_ref Swift.Optional.init <A>(A?.Type)(nilLiteral : ()) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %41
%40 = metatype $@thin Optional<C.Index>.Type // user: %41
%41 = apply [transparent] %39<C.Index>(%0, %40) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
br bb5 // id: %42
bb3: // Preds: bb1
%43 = alloc_stack $C.Index // users: %44, %46, %47
copy_addr %19#1 to [initialization] %43#1 : $*C.Index // id: %44
// function_ref Swift._injectValueIntoOptional <A>(A) -> Swift.Optional<A>
%45 = function_ref Swift._injectValueIntoOptional <A>(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> () // user: %46
%46 = apply [transparent] %45<C.Index>(%0, %43#1) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> ()
dealloc_stack %43#0 : $*@local_storage C.Index // id: %47
destroy_addr %19#1 : $*C.Index // id: %48
dealloc_stack %19#0 : $*@local_storage C.Index // id: %49
dealloc_stack %13#0 : $*@local_storage Optional<C.Index> // id: %50
destroy_addr %3#1 : $*RangeGenerator<C.Index> // id: %51
br bb5 // id: %52
bb4: // Preds: bb1
destroy_addr %19#1 : $*C.Index // id: %53
dealloc_stack %19#0 : $*@local_storage C.Index // id: %54
%55 = apply %14<C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex>(%13#1, %3#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_0>, @inout RangeGenerator<τ_0_0>) -> ()
%56 = apply [transparent] %15<C.Index>(%13#1) : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // user: %57
cond_br %56, bb1, bb2 // id: %57
bb5: // Preds: bb2 bb3
destroy_addr %2 : $*C.Generator.Element // id: %58
destroy_addr %1 : $*C // id: %59
%60 = tuple () // user: %62
dealloc_stack %3#0 : $*@local_storage RangeGenerator<C.Index> // id: %61
return %60 : $() // id: %62
}
// Swift.LazyForwardCollection.map <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>)<E>((A.Generator.Element) -> E) -> Swift.LazyForwardCollection<Swift.MapCollectionView<A, E>>
sil public_external Swift.LazyForwardCollection.map <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>)<E>((A.Generator.Element) -> E) -> Swift.LazyForwardCollection<Swift.MapCollectionView<A, E>> : $@cc(method) @thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible><U> (@out LazyForwardCollection<MapCollectionView<S, U>>, @owned @callee_owned (@out U, @in S.Generator.Element) -> (), @in LazyForwardCollection<S>) -> () {
bb0(%0 : $*LazyForwardCollection<MapCollectionView<S, U>>, %1 : $@callee_owned (@out U, @in S.Generator.Element) -> (), %2 : $*LazyForwardCollection<S>):
// function_ref Swift.LazyForwardCollection.init <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>.Type)(A) -> Swift.LazyForwardCollection<A>
%3 = function_ref Swift.LazyForwardCollection.init <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>.Type)(A) -> Swift.LazyForwardCollection<A> : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<τ_0_0>, @in τ_0_0, @thin LazyForwardCollection<τ_0_0>.Type) -> () // user: %13
%4 = metatype $@thin LazyForwardCollection<MapCollectionView<S, U>>.Type // user: %13
%5 = alloc_stack $MapCollectionView<S, U> // users: %12, %13, %15
// function_ref Swift.MapCollectionView.init <A : Swift.CollectionType, B>(Swift.MapCollectionView<A, B>.Type)(_base : A, _transform : (A.Generator.Element) -> B) -> Swift.MapCollectionView<A, B>
%6 = function_ref Swift.MapCollectionView.init <A : Swift.CollectionType, B>(Swift.MapCollectionView<A, B>.Type)(_base : A, _transform : (A.Generator.Element) -> B) -> Swift.MapCollectionView<A, B> : $@thin <τ_0_0, τ_0_1 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out MapCollectionView<τ_0_0, τ_0_1>, @in τ_0_0, @owned @callee_owned (@out τ_0_1, @in τ_0_0.Generator.Element) -> (), @thin MapCollectionView<τ_0_0, τ_0_1>.Type) -> () // user: %12
%7 = metatype $@thin MapCollectionView<S, U>.Type // user: %12
%8 = struct_element_addr %2 : $*LazyForwardCollection<S>, #LazyForwardCollection._base // user: %10
%9 = alloc_stack $S // users: %10, %12, %14
copy_addr %8 to [initialization] %9#1 : $*S // id: %10
strong_retain %1 : $@callee_owned (@out U, @in S.Generator.Element) -> () // id: %11
%12 = apply %6<S, U, S.Generator, S.Generator.Element, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, S._Element>(%5#1, %9#1, %1, %7) : $@thin <τ_0_0, τ_0_1 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out MapCollectionView<τ_0_0, τ_0_1>, @in τ_0_0, @owned @callee_owned (@out τ_0_1, @in τ_0_0.Generator.Element) -> (), @thin MapCollectionView<τ_0_0, τ_0_1>.Type) -> ()
%13 = apply %3<MapCollectionView<S, U>, MapSequenceGenerator<S.Generator, U>, U, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, U>(%0, %5#1, %4) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<τ_0_0>, @in τ_0_0, @thin LazyForwardCollection<τ_0_0>.Type) -> ()
dealloc_stack %9#0 : $*@local_storage S // id: %14
dealloc_stack %5#0 : $*@local_storage MapCollectionView<S, U> // id: %15
destroy_addr %2 : $*LazyForwardCollection<S> // id: %16
strong_release %1 : $@callee_owned (@out U, @in S.Generator.Element) -> () // id: %17
%18 = tuple () // user: %19
return %18 : $() // id: %19
}
// Swift.lazy <A : Swift.CollectionType>(A) -> Swift.LazyForwardCollection<A>
sil public_external Swift.lazy <A : Swift.CollectionType>(A) -> Swift.LazyForwardCollection<A> : $@thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<S>, @in S) -> () {
bb0(%0 : $*LazyForwardCollection<S>, %1 : $*S):
// function_ref Swift.LazyForwardCollection.init <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>.Type)(A) -> Swift.LazyForwardCollection<A>
%2 = function_ref Swift.LazyForwardCollection.init <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>.Type)(A) -> Swift.LazyForwardCollection<A> : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<τ_0_0>, @in τ_0_0, @thin LazyForwardCollection<τ_0_0>.Type) -> () // user: %6
%3 = metatype $@thin LazyForwardCollection<S>.Type // user: %6
%4 = alloc_stack $S // users: %5, %6, %7
copy_addr %1 to [initialization] %4#1 : $*S // id: %5
%6 = apply %2<S, S.Generator, S.Generator.Element, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, S._Element>(%0, %4#1, %3) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<τ_0_0>, @in τ_0_0, @thin LazyForwardCollection<τ_0_0>.Type) -> ()
dealloc_stack %4#0 : $*@local_storage S // id: %7
destroy_addr %1 : $*S // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// reabstraction thunk helper <T_0_0 where T_0_0: Swift.CollectionType, T_0_0.Generator: Swift.GeneratorType, T_0_0.Generator.Element: Swift.Equatable, T_0_0.Index: Swift.ForwardIndexType, T_0_0.Index.Distance: Swift._SignedIntegerType, T_0_0.Index.Distance.IntegerLiteralType: Swift._BuiltinIntegerLiteralConvertible> from @callee_owned (@in T_0_0.Generator.Element) -> (@unowned Swift.Bool) to @callee_owned (@in T_0_0.Generator.Element) -> (@out Swift.Bool)
sil shared [transparent] reabstraction thunk helper <T_0_0 where T_0_0: Swift.CollectionType, T_0_0.Generator: Swift.GeneratorType, T_0_0.Generator.Element: Swift.Equatable, T_0_0.Index: Swift.ForwardIndexType, T_0_0.Index.Distance: Swift._SignedIntegerType, T_0_0.Index.Distance.IntegerLiteralType: Swift._BuiltinIntegerLiteralConvertible> from @callee_owned (@in T_0_0.Generator.Element) -> (@unowned Swift.Bool) to @callee_owned (@in T_0_0.Generator.Element) -> (@out Swift.Bool) : $@thin <C where C : CollectionType, C.Generator : GeneratorType, C.Generator.Element : Equatable, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Bool, @in C.Generator.Element, @owned @callee_owned (@in C.Generator.Element) -> Bool) -> () {
bb0(%0 : $*Bool, %1 : $*C.Generator.Element, %2 : $@callee_owned (@in C.Generator.Element) -> Bool):
%3 = apply %2(%1) : $@callee_owned (@in C.Generator.Element) -> Bool // user: %4
store %3 to %0 : $*Bool // id: %4
%5 = tuple () // user: %6
return %5 : $() // id: %6
}
// Swift.Bool.init (Swift.Bool.Type)(_builtinBooleanLiteral : Builtin.Int1) -> Swift.Bool
sil public_external [transparent] Swift.Bool.init (Swift.Bool.Type)(_builtinBooleanLiteral : Builtin.Int1) -> Swift.Bool : $@thin (Builtin.Int1, @thin Bool.Type) -> Bool {
bb0(%0 : $Builtin.Int1, %1 : $@thin Bool.Type):
%2 = struct $Bool (%0 : $Builtin.Int1) // user: %3
return %2 : $Bool // id: %3
}
// indexof.v2_index_of <A : Swift.CollectionType>(A, (A.Generator.Element) -> Swift.Bool) -> Swift.Optional<A.Index>
sil indexof.v2_index_of <A : Swift.CollectionType>(A, (A.Generator.Element) -> Swift.Bool) -> A.Index? : $@thin <C where C : CollectionType, C.Generator : GeneratorType, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<C.Index>, @in C, @owned @callee_owned (@in C.Generator.Element) -> Bool) -> () {
bb0(%0 : $*Optional<C.Index>, %1 : $*C, %2 : $@callee_owned (@in C.Generator.Element) -> Bool):
%3 = alloc_stack $EnumerateGenerator<C.Generator> // var $generator // users: %10, %16, %47, %52, %56, %64
// function_ref Swift.EnumerateSequence.generate <A : Swift.SequenceType>(Swift.EnumerateSequence<A>)() -> Swift.EnumerateGenerator<A.Generator>
%4 = function_ref Swift.EnumerateSequence.generate <A : Swift.SequenceType>(Swift.EnumerateSequence<A>)() -> Swift.EnumerateGenerator<A.Generator> : $@cc(method) @thin <τ_0_0 where τ_0_0 : SequenceType, τ_0_0.Generator : GeneratorType> (@out EnumerateGenerator<τ_0_0.Generator>, @in EnumerateSequence<τ_0_0>) -> () // user: %10
%5 = alloc_stack $EnumerateSequence<C> // users: %9, %10, %12
// function_ref Swift.enumerate <A : Swift.SequenceType>(A) -> Swift.EnumerateSequence<A>
%6 = function_ref Swift.enumerate <A : Swift.SequenceType>(A) -> Swift.EnumerateSequence<A> : $@thin <τ_0_0 where τ_0_0 : SequenceType, τ_0_0.Generator : GeneratorType> (@out EnumerateSequence<τ_0_0>, @in τ_0_0) -> () // user: %9
%7 = alloc_stack $C // users: %8, %9, %11
copy_addr %1 to [initialization] %7#1 : $*C // id: %8
%9 = apply %6<C, C.Generator, C.Generator.Element>(%5#1, %7#1) : $@thin <τ_0_0 where τ_0_0 : SequenceType, τ_0_0.Generator : GeneratorType> (@out EnumerateSequence<τ_0_0>, @in τ_0_0) -> ()
%10 = apply %4<C, C.Generator, C.Generator.Element>(%3#1, %5#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : SequenceType, τ_0_0.Generator : GeneratorType> (@out EnumerateGenerator<τ_0_0.Generator>, @in EnumerateSequence<τ_0_0>) -> ()
dealloc_stack %7#0 : $*@local_storage C // id: %11
dealloc_stack %5#0 : $*@local_storage EnumerateSequence<C> // id: %12
%13 = alloc_stack $Optional<(index: Int, element: C.Generator.Element)> // users: %16, %17, %22, %46, %52, %53, %55
// function_ref Swift.EnumerateGenerator.next <A : Swift.GeneratorType>(inout Swift.EnumerateGenerator<A>)() -> Swift.Optional<(index : Swift.Int, element : A.Element)>
%14 = function_ref Swift.EnumerateGenerator.next <A : Swift.GeneratorType>(inout Swift.EnumerateGenerator<A>)() -> (index : Swift.Int, element : A.Element)? : $@cc(method) @thin <τ_0_0 where τ_0_0 : GeneratorType> (@out Optional<(index: Int, element: τ_0_0.Element)>, @inout EnumerateGenerator<τ_0_0>) -> () // users: %16, %52
// function_ref Swift._doesOptionalHaveValue <A>(inout Swift.Optional<A>) -> Builtin.Int1
%15 = function_ref Swift._doesOptionalHaveValue <A>(inout A?) -> Builtin.Int1 : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // users: %17, %53
%16 = apply %14<C.Generator, C.Generator.Element>(%13#1, %3#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : GeneratorType> (@out Optional<(index: Int, element: τ_0_0.Element)>, @inout EnumerateGenerator<τ_0_0>) -> ()
%17 = apply [transparent] %15<(index: Int, element: C.Generator.Element)>(%13#1) : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // user: %18
cond_br %17, bb1, bb7 // id: %18
bb1: // Preds: bb0 bb6
%19 = alloc_stack $C.Generator.Element // let element // users: %26, %28, %44, %45, %50, %51
// function_ref Swift._getOptionalValue <A>(Swift.Optional<A>) -> A
%20 = function_ref Swift._getOptionalValue <A>(A?) -> A : $@thin <τ_0_0> (@out τ_0_0, @in Optional<τ_0_0>) -> () // user: %22
%21 = alloc_stack $(index: Int, element: C.Generator.Element) // users: %22, %23, %25, %43, %49
%22 = apply [transparent] %20<(index: Int, element: C.Generator.Element)>(%21#1, %13#1) : $@thin <τ_0_0> (@out τ_0_0, @in Optional<τ_0_0>) -> ()
%23 = tuple_element_addr %21#1 : $*(index: Int, element: C.Generator.Element), 0 // user: %24
%24 = load %23 : $*Int // user: %36
%25 = tuple_element_addr %21#1 : $*(index: Int, element: C.Generator.Element), 1 // user: %26
copy_addr [take] %25 to [initialization] %19#1 : $*C.Generator.Element // id: %26
%27 = alloc_stack $C.Generator.Element // users: %28, %30, %32
copy_addr %19#1 to [initialization] %27#1 : $*C.Generator.Element // id: %28
strong_retain %2 : $@callee_owned (@in C.Generator.Element) -> Bool // id: %29
%30 = apply %2(%27#1) : $@callee_owned (@in C.Generator.Element) -> Bool // user: %31
%31 = struct_extract %30 : $Bool, #Bool.value // user: %33
dealloc_stack %27#0 : $*@local_storage C.Generator.Element // id: %32
cond_br %31, bb2, bb6 // id: %33
bb2: // Preds: bb1
%34 = init_enum_data_addr %0 : $*Optional<C.Index>, #Optional.Some!enumelt.1 // user: %37
%35 = alloc_stack $Int // users: %36, %37, %42
store %24 to %35#1 : $*Int // id: %36
checked_cast_addr_br take_always Int in %35#1 : $*Int to C.Index in %34 : $*C.Index, bb3, bb4 // id: %37
bb3: // Preds: bb2
inject_enum_addr %0 : $*Optional<C.Index>, #Optional.Some!enumelt.1 // id: %38
br bb5 // id: %39
bb4: // Preds: bb2
inject_enum_addr %0 : $*Optional<C.Index>, #Optional.None!enumelt // id: %40
br bb5 // id: %41
bb5: // Preds: bb3 bb4
dealloc_stack %35#0 : $*@local_storage Int // id: %42
dealloc_stack %21#0 : $*@local_storage (index: Int, element: C.Generator.Element) // id: %43
destroy_addr %19#1 : $*C.Generator.Element // id: %44
dealloc_stack %19#0 : $*@local_storage C.Generator.Element // id: %45
dealloc_stack %13#0 : $*@local_storage Optional<(index: Int, element: C.Generator.Element)> // id: %46
destroy_addr %3#1 : $*EnumerateGenerator<C.Generator> // id: %47
br bb8 // id: %48
bb6: // Preds: bb1
dealloc_stack %21#0 : $*@local_storage (index: Int, element: C.Generator.Element) // id: %49
destroy_addr %19#1 : $*C.Generator.Element // id: %50
dealloc_stack %19#0 : $*@local_storage C.Generator.Element // id: %51
%52 = apply %14<C.Generator, C.Generator.Element>(%13#1, %3#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : GeneratorType> (@out Optional<(index: Int, element: τ_0_0.Element)>, @inout EnumerateGenerator<τ_0_0>) -> ()
%53 = apply [transparent] %15<(index: Int, element: C.Generator.Element)>(%13#1) : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // user: %54
cond_br %53, bb1, bb7 // id: %54
bb7: // Preds: bb0 bb6
dealloc_stack %13#0 : $*@local_storage Optional<(index: Int, element: C.Generator.Element)> // id: %55
destroy_addr %3#1 : $*EnumerateGenerator<C.Generator> // id: %56
// function_ref Swift.Optional.init <A>(Swift.Optional<A>.Type)(nilLiteral : ()) -> Swift.Optional<A>
%57 = function_ref Swift.Optional.init <A>(A?.Type)(nilLiteral : ()) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %59
%58 = metatype $@thin Optional<C.Index>.Type // user: %59
%59 = apply [transparent] %57<C.Index>(%0, %58) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
br bb8 // id: %60
bb8: // Preds: bb5 bb7
strong_release %2 : $@callee_owned (@in C.Generator.Element) -> Bool // id: %61
destroy_addr %1 : $*C // id: %62
%63 = tuple () // user: %65
dealloc_stack %3#0 : $*@local_storage EnumerateGenerator<C.Generator> // id: %64
return %63 : $() // id: %65
}
// Swift.EnumerateSequence.generate <A : Swift.SequenceType>(Swift.EnumerateSequence<A>)() -> Swift.EnumerateGenerator<A.Generator>
sil public_external Swift.EnumerateSequence.generate <A : Swift.SequenceType>(Swift.EnumerateSequence<A>)() -> Swift.EnumerateGenerator<A.Generator> : $@cc(method) @thin <Base where Base : SequenceType, Base.Generator : GeneratorType> (@out EnumerateGenerator<Base.Generator>, @in EnumerateSequence<Base>) -> () {
bb0(%0 : $*EnumerateGenerator<Base.Generator>, %1 : $*EnumerateSequence<Base>):
// function_ref Swift.EnumerateGenerator.init <A : Swift.GeneratorType>(Swift.EnumerateGenerator<A>.Type)(A) -> Swift.EnumerateGenerator<A>
%2 = function_ref Swift.EnumerateGenerator.init <A : Swift.GeneratorType>(Swift.EnumerateGenerator<A>.Type)(A) -> Swift.EnumerateGenerator<A> : $@thin <τ_0_0 where τ_0_0 : GeneratorType> (@out EnumerateGenerator<τ_0_0>, @in τ_0_0, @thin EnumerateGenerator<τ_0_0>.Type) -> () // user: %8
%3 = metatype $@thin EnumerateGenerator<Base.Generator>.Type // user: %8
%4 = alloc_stack $Base.Generator // users: %7, %8, %9
%5 = struct_element_addr %1 : $*EnumerateSequence<Base>, #EnumerateSequence.base // user: %7
%6 = witness_method $Base, #SequenceType.generate!1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : SequenceType, τ_0_0.Generator : GeneratorType> (@out τ_0_0.Generator, @inout τ_0_0) -> () // user: %7
%7 = apply %6<Base, Base.Generator, Base.Generator.Element>(%4#1, %5) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : SequenceType, τ_0_0.Generator : GeneratorType> (@out τ_0_0.Generator, @inout τ_0_0) -> ()
%8 = apply %2<Base.Generator, Base.Generator.Element>(%0, %4#1, %3) : $@thin <τ_0_0 where τ_0_0 : GeneratorType> (@out EnumerateGenerator<τ_0_0>, @in τ_0_0, @thin EnumerateGenerator<τ_0_0>.Type) -> ()
dealloc_stack %4#0 : $*@local_storage Base.Generator // id: %9
destroy_addr %1 : $*EnumerateSequence<Base> // id: %10
%11 = tuple () // user: %12
return %11 : $() // id: %12
}
// Swift.enumerate <A : Swift.SequenceType>(A) -> Swift.EnumerateSequence<A>
sil public_external Swift.enumerate <A : Swift.SequenceType>(A) -> Swift.EnumerateSequence<A> : $@thin <Seq where Seq : SequenceType, Seq.Generator : GeneratorType> (@out EnumerateSequence<Seq>, @in Seq) -> () {
bb0(%0 : $*EnumerateSequence<Seq>, %1 : $*Seq):
// function_ref Swift.EnumerateSequence.init <A : Swift.SequenceType>(Swift.EnumerateSequence<A>.Type)(A) -> Swift.EnumerateSequence<A>
%2 = function_ref Swift.EnumerateSequence.init <A : Swift.SequenceType>(Swift.EnumerateSequence<A>.Type)(A) -> Swift.EnumerateSequence<A> : $@thin <τ_0_0 where τ_0_0 : SequenceType, τ_0_0.Generator : GeneratorType> (@out EnumerateSequence<τ_0_0>, @in τ_0_0, @thin EnumerateSequence<τ_0_0>.Type) -> () // user: %6
%3 = metatype $@thin EnumerateSequence<Seq>.Type // user: %6
%4 = alloc_stack $Seq // users: %5, %6, %7
copy_addr %1 to [initialization] %4#1 : $*Seq // id: %5
%6 = apply %2<Seq, Seq.Generator, Seq.Generator.Element>(%0, %4#1, %3) : $@thin <τ_0_0 where τ_0_0 : SequenceType, τ_0_0.Generator : GeneratorType> (@out EnumerateSequence<τ_0_0>, @in τ_0_0, @thin EnumerateSequence<τ_0_0>.Type) -> ()
dealloc_stack %4#0 : $*@local_storage Seq // id: %7
destroy_addr %1 : $*Seq // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// Swift.EnumerateGenerator.next <A : Swift.GeneratorType>(inout Swift.EnumerateGenerator<A>)() -> Swift.Optional<(index : Swift.Int, element : A.Element)>
sil public_external Swift.EnumerateGenerator.next <A : Swift.GeneratorType>(inout Swift.EnumerateGenerator<A>)() -> (index : Swift.Int, element : A.Element)? : $@cc(method) @thin <Base where Base : GeneratorType> (@out Optional<(index: Int, element: Base.Element)>, @inout EnumerateGenerator<Base>) -> () {
bb0(%0 : $*Optional<(index: Int, element: Base.Element)>, %1 : $*EnumerateGenerator<Base>):
%2 = alloc_stack $Optional<Base.Element> // users: %5, %8, %37, %38, %43, %45
%3 = struct_element_addr %1 : $*EnumerateGenerator<Base>, #EnumerateGenerator.base // user: %5
%4 = witness_method $Base, #GeneratorType.next!1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : GeneratorType> (@out Optional<τ_0_0.Element>, @inout τ_0_0) -> () // user: %5
%5 = apply %4<Base, Base.Element>(%2#1, %3) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : GeneratorType> (@out Optional<τ_0_0.Element>, @inout τ_0_0) -> ()
// function_ref Swift.== infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
%6 = function_ref Swift.== infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %10
%7 = alloc_stack $Optional<Base.Element> // users: %8, %10, %12
copy_addr %2#1 to [initialization] %7#1 : $*Optional<Base.Element> // id: %8
%9 = struct $_OptionalNilComparisonType () // user: %10
%10 = apply %6<Base.Element>(%7#1, %9) : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %11
%11 = struct_extract %10 : $Bool, #Bool.value // user: %13
dealloc_stack %7#0 : $*@local_storage Optional<Base.Element> // id: %12
cond_br %11, bb1, bb2 // id: %13
bb1: // Preds: bb0
// function_ref Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
%14 = function_ref Swift.Optional.None <A>(A?.Type) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %16
%15 = metatype $@thin Optional<(index: Int, element: Base.Element)>.Type // user: %16
%16 = apply [transparent] %14<(index: Int, element: Base.Element)>(%0, %15) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
br bb3 // id: %17
bb2: // Preds: bb0
// function_ref Swift.Optional.Some <A>(Swift.Optional<A>.Type)(A) -> Swift.Optional<A>
%18 = function_ref Swift.Optional.Some <A>(A?.Type)(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0, @thin Optional<τ_0_0>.Type) -> () // user: %40
%19 = metatype $@thin Optional<(index: Int, element: Base.Element)>.Type // user: %40
%20 = alloc_stack $(index: Int, element: Base.Element) // users: %21, %22, %40, %41
%21 = tuple_element_addr %20#1 : $*(index: Int, element: Base.Element), 0 // user: %35
%22 = tuple_element_addr %20#1 : $*(index: Int, element: Base.Element), 1 // user: %39
%23 = struct_element_addr %1 : $*EnumerateGenerator<Base>, #EnumerateGenerator.count // users: %24, %34
%24 = load %23 : $*Int // users: %27, %35
%25 = integer_literal $Builtin.Word, 1 // user: %29
%26 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %29
%27 = struct_extract %24 : $Int, #Int.value // user: %29
%28 = integer_literal $Builtin.Int1, -1 // user: %29
%29 = apply %26(%27, %25, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %30, %31
%30 = tuple_extract %29 : $(Builtin.Word, Builtin.Int1), 0 // user: %33
%31 = tuple_extract %29 : $(Builtin.Word, Builtin.Int1), 1 // user: %32
cond_fail %31 : $Builtin.Int1 // id: %32
%33 = struct $Int (%30 : $Builtin.Word) // user: %34
store %33 to %23 : $*Int // id: %34
store %24 to %21 : $*Int // id: %35
// function_ref Swift._preconditionOptionalHasValue <A>(inout Swift.Optional<A>) -> ()
%36 = function_ref Swift._preconditionOptionalHasValue <A>(inout A?) -> () : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> () // user: %37
%37 = apply [transparent] %36<Base.Element>(%2#1) : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> ()
%38 = unchecked_take_enum_data_addr %2#1 : $*Optional<Base.Element>, #Optional.Some!enumelt.1 // user: %39
copy_addr %38 to [initialization] %22 : $*Base.Element // id: %39
%40 = apply [transparent] %18<(index: Int, element: Base.Element)>(%0, %20#1, %19) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0, @thin Optional<τ_0_0>.Type) -> ()
dealloc_stack %20#0 : $*@local_storage (index: Int, element: Base.Element) // id: %41
br bb3 // id: %42
bb3: // Preds: bb1 bb2
destroy_addr %2#1 : $*Optional<Base.Element> // id: %43
%44 = tuple () // user: %46
dealloc_stack %2#0 : $*@local_storage Optional<Base.Element> // id: %45
return %44 : $() // id: %46
}
// Swift._doesOptionalHaveValue <A>(inout Swift.Optional<A>) -> Builtin.Int1
sil public_external [transparent] Swift._doesOptionalHaveValue <A>(inout A?) -> Builtin.Int1 : $@thin <T> (@inout Optional<T>) -> Builtin.Int1 {
bb0(%0 : $*Optional<T>):
// function_ref Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
%1 = function_ref Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %5
%2 = alloc_stack $Optional<T> // users: %3, %5, %7
copy_addr %0 to [initialization] %2#1 : $*Optional<T> // id: %3
%4 = struct $_OptionalNilComparisonType () // user: %5
%5 = apply %1<T>(%2#1, %4) : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %6
%6 = struct_extract %5 : $Bool, #Bool.value // user: %8
dealloc_stack %2#0 : $*@local_storage Optional<T> // id: %7
return %6 : $Builtin.Int1 // id: %8
}
// Swift._getOptionalValue <A>(Swift.Optional<A>) -> A
sil public_external [transparent] Swift._getOptionalValue <A>(A?) -> A : $@thin <T> (@out T, @in Optional<T>) -> () {
bb0(%0 : $*T, %1 : $*Optional<T>):
%2 = alloc_stack $T // users: %7, %8, %12
%3 = alloc_stack $Optional<T> // users: %4, %5, %6, %9, %14
copy_addr %1 to [initialization] %3#1 : $*Optional<T> // id: %4
switch_enum_addr %3#1 : $*Optional<T>, case #Optional.Some!enumelt.1: bb1, case #Optional.None!enumelt: bb2 // id: %5
bb1: // Preds: bb0
%6 = unchecked_take_enum_data_addr %3#1 : $*Optional<T>, #Optional.Some!enumelt.1 // user: %7
copy_addr [take] %6 to [initialization] %2#1 : $*T // id: %7
copy_addr [take] %2#1 to [initialization] %0 : $*T // id: %8
dealloc_stack %3#0 : $*@local_storage Optional<T> // id: %9
destroy_addr %1 : $*Optional<T> // id: %10
%11 = tuple () // user: %13
dealloc_stack %2#0 : $*@local_storage T // id: %12
return %11 : $() // id: %13
bb2: // Preds: bb0
dealloc_stack %3#0 : $*@local_storage Optional<T> // id: %14
%15 = integer_literal $Builtin.Int1, -1 // user: %16
cond_fail %15 : $Builtin.Int1 // id: %16
unreachable // id: %17
}
// Swift.Bool._getBuiltinLogicValue (Swift.Bool)() -> Builtin.Int1
sil public_external [transparent] Swift.Bool._getBuiltinLogicValue (Swift.Bool)() -> Builtin.Int1 : $@cc(method) @thin (Bool) -> Builtin.Int1 {
bb0(%0 : $Bool):
%1 = struct_extract %0 : $Bool, #Bool.value // user: %2
return %1 : $Builtin.Int1 // id: %2
}
// Swift.Optional.init <A>(Swift.Optional<A>.Type)(nilLiteral : ()) -> Swift.Optional<A>
sil public_external [transparent] Swift.Optional.init <A>(A?.Type)(nilLiteral : ()) -> A? : $@thin <T> (@out Optional<T>, @thin Optional<T>.Type) -> () {
bb0(%0 : $*Optional<T>, %1 : $@thin Optional<T>.Type):
%2 = alloc_stack $Optional<T> // users: %7, %9, %11
// function_ref Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
%3 = function_ref Swift.Optional.None <A>(A?.Type) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %6
%4 = metatype $@thin Optional<T>.Type // user: %6
%5 = alloc_stack $Optional<T> // users: %6, %7, %8
%6 = apply [transparent] %3<T>(%5#1, %4) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
copy_addr [take] %5#1 to [initialization] %2#1 : $*Optional<T> // id: %7
dealloc_stack %5#0 : $*@local_storage Optional<T> // id: %8
copy_addr [take] %2#1 to [initialization] %0 : $*Optional<T> // id: %9
%10 = tuple () // user: %12
dealloc_stack %2#0 : $*@local_storage Optional<T> // id: %11
return %10 : $() // id: %12
}
// Swift.Array.init <A>(Swift.Array<A>.Type)(arrayLiteral : Swift.Array<A>...) -> Swift.Array<A>
sil public_external Swift.Array.init <A>([A].Type)(arrayLiteral : [A]...) -> [A] : $@thin <T> (@owned Array<T>, @thin Array<T>.Type) -> @owned Array<T> {
bb0(%0 : $Array<T>, %1 : $@thin Array<T>.Type):
return %0 : $Array<T> // id: %2
}
// Swift.Int.init (Swift.Int.Type)(_builtinIntegerLiteral : Builtin.Int2048) -> Swift.Int
sil public_external [transparent] Swift.Int.init (Swift.Int.Type)(_builtinIntegerLiteral : Builtin.Int2048) -> Swift.Int : $@thin (Builtin.Int2048, @thin Int.Type) -> Int {
bb0(%0 : $Builtin.Int2048, %1 : $@thin Int.Type):
%2 = builtin_function_ref "s_to_s_checked_trunc_Int2048_Word" : $@thin (Builtin.Int2048) -> (Builtin.Word, Builtin.Int1) // user: %3
%3 = apply %2(%0) : $@thin (Builtin.Int2048) -> (Builtin.Word, Builtin.Int1) // user: %4
%4 = tuple_extract %3 : $(Builtin.Word, Builtin.Int1), 0 // user: %5
%5 = struct $Int (%4 : $Builtin.Word) // user: %6
return %5 : $Int // id: %6
}
// Swift.Array.convertFromHeapArray <A>(Swift.Array<A>.Type)(Builtin.RawPointer, owner : Builtin.NativeObject, count : Builtin.Word) -> Swift.Array<A>
sil public_external [readonly] Swift.Array.convertFromHeapArray <A>([A].Type)(Builtin.RawPointer, owner : Builtin.NativeObject, count : Builtin.Word) -> [A] : $@thin <T> (Builtin.RawPointer, @owned Builtin.NativeObject, Builtin.Word, @thin Array<T>.Type) -> @owned Array<T> {
bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.NativeObject, %2 : $Builtin.Word, %3 : $@thin Array<T>.Type):
// function_ref Swift.UnsafeBufferPointer.init <A>(Swift.UnsafeBufferPointer<A>.Type)(start : Swift.UnsafePointer<A>, count : Swift.Int) -> Swift.UnsafeBufferPointer<A>
%4 = function_ref Swift.UnsafeBufferPointer.init <A>(Swift.UnsafeBufferPointer<A>.Type)(start : Swift.UnsafePointer<A>, count : Swift.Int) -> Swift.UnsafeBufferPointer<A> : $@thin <τ_0_0> (UnsafePointer<τ_0_0>, Int, @thin UnsafeBufferPointer<τ_0_0>.Type) -> UnsafeBufferPointer<τ_0_0> // user: %31
%5 = metatype $@thin UnsafeBufferPointer<T>.Type // user: %31
// function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B
%6 = function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> () // user: %11
%7 = alloc_stack $Builtin.RawPointer // users: %8, %11, %35
store %0 to %7#1 : $*Builtin.RawPointer // id: %8
%9 = metatype $@thick UnsafeMutablePointer<T>.Type // user: %11
%10 = alloc_stack $UnsafeMutablePointer<T> // users: %11, %12, %34
%11 = apply [transparent] %6<Builtin.RawPointer, UnsafeMutablePointer<T>>(%10#1, %7#1, %9) : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> ()
%12 = load %10#1 : $*UnsafeMutablePointer<T> // user: %14
%13 = alloc_stack $UnsafeMutablePointer<T> // users: %14, %17, %33
store %12 to %13#1 : $*UnsafeMutablePointer<T> // id: %14
// function_ref Swift._convertPointerToPointerArgument <A : Swift._PointerType, B : Swift._PointerType>(A) -> B
%15 = function_ref Swift._convertPointerToPointerArgument <A : Swift._PointerType, B : Swift._PointerType>(A) -> B : $@thin <τ_0_0, τ_0_1 where τ_0_0 : _PointerType, τ_0_1 : _PointerType> (@out τ_0_1, @in τ_0_0) -> () // user: %17
%16 = alloc_stack $UnsafePointer<T> // users: %17, %18, %32
%17 = apply [transparent] %15<UnsafeMutablePointer<T>, UnsafePointer<T>>(%16#1, %13#1) : $@thin <τ_0_0, τ_0_1 where τ_0_0 : _PointerType, τ_0_1 : _PointerType> (@out τ_0_1, @in τ_0_0) -> ()
%18 = load %16#1 : $*UnsafePointer<T> // user: %31
%19 = integer_literal $Builtin.Int1, -1 // user: %28
%20 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %22, %24
%21 = metatype $@thick Builtin.Word.Type // user: %22
%22 = apply %20<Builtin.Word>(%21) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %26
%23 = metatype $@thick Int.Type // user: %24
%24 = apply %20<Int>(%23) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %26
%25 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %26
%26 = apply %25(%22, %24) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %28
%27 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %28
%28 = apply %27(%26, %19) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %29
cond_fail %28 : $Builtin.Int1 // id: %29
%30 = unchecked_trivial_bit_cast %2 : $Builtin.Word to $Int // user: %31
%31 = apply %4<T>(%18, %30, %5) : $@thin <τ_0_0> (UnsafePointer<τ_0_0>, Int, @thin UnsafeBufferPointer<τ_0_0>.Type) -> UnsafeBufferPointer<τ_0_0> // user: %39
dealloc_stack %16#0 : $*@local_storage UnsafePointer<T> // id: %32
dealloc_stack %13#0 : $*@local_storage UnsafeMutablePointer<T> // id: %33
dealloc_stack %10#0 : $*@local_storage UnsafeMutablePointer<T> // id: %34
dealloc_stack %7#0 : $*@local_storage Builtin.RawPointer // id: %35
// function_ref Swift.Array.init <A>(Swift.Array<A>.Type)<B : Swift.SequenceType>(B) -> Swift.Array<A>
%36 = function_ref Swift.Array.init <A>([A].Type)<B : Swift.SequenceType>(B) -> [A] : $@thin <τ_0_0><τ_1_0 where τ_1_0 : SequenceType, τ_1_0.Generator : GeneratorType, τ_1_0.Generator.Element == τ_0_0> (@in τ_1_0, @thin Array<τ_0_0>.Type) -> @owned Array<τ_0_0> // user: %40
%37 = metatype $@thin Array<T>.Type // user: %40
%38 = alloc_stack $UnsafeBufferPointer<T> // users: %39, %40, %41
store %31 to %38#1 : $*UnsafeBufferPointer<T> // id: %39
%40 = apply %36<T, UnsafeBufferPointer<T>, UnsafeBufferPointerGenerator<T>>(%38#1, %37) : $@thin <τ_0_0><τ_1_0 where τ_1_0 : SequenceType, τ_1_0.Generator : GeneratorType, τ_1_0.Generator.Element == τ_0_0> (@in τ_1_0, @thin Array<τ_0_0>.Type) -> @owned Array<τ_0_0> // user: %48
dealloc_stack %38#0 : $*@local_storage UnsafeBufferPointer<T> // id: %41
%42 = alloc_stack $Builtin.NativeObject // users: %43, %44, %45, %47
store %1 to %42#1 : $*Builtin.NativeObject // id: %43
fix_lifetime %42#1 : $*Builtin.NativeObject // id: %44
%45 = load %42#1 : $*Builtin.NativeObject // user: %46
strong_release %45 : $Builtin.NativeObject // id: %46
dealloc_stack %42#0 : $*@local_storage Builtin.NativeObject // id: %47
return %40 : $Array<T> // id: %48
}
// indexof.(closure #1)
sil shared indexof.(closure #1) : $@thin (Int) -> Bool {
bb0(%0 : $Int):
%1 = integer_literal $Builtin.Word, 1 // user: %4
%2 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %4
%3 = struct_extract %0 : $Int, #Int.value // user: %4
%4 = apply %2(%3, %1) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %5
%5 = struct $Bool (%4 : $Builtin.Int1) // user: %6
return %5 : $Bool // id: %6
}
// Swift.== infix (Swift.Int, Swift.Int) -> Swift.Bool
sil public_external [transparent] Swift.== infix (Swift.Int, Swift.Int) -> Swift.Bool : $@thin (Int, Int) -> Bool {
bb0(%0 : $Int, %1 : $Int):
%2 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %5
%3 = struct_extract %0 : $Int, #Int.value // user: %5
%4 = struct_extract %1 : $Int, #Int.value // user: %5
%5 = apply %2(%3, %4) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %6
%6 = struct $Bool (%5 : $Builtin.Int1) // user: %7
return %6 : $Bool // id: %7
}
// reabstraction thunk helper from @callee_owned (@unowned Swift.Int) -> (@unowned Swift.Bool) to @callee_owned (@in Swift.Int) -> (@unowned Swift.Bool) with unmangled suffix "_constprop0"
sil shared [transparent] reabstraction thunk helper from @callee_owned (@unowned Swift.Int) -> (@unowned Swift.Bool) to @callee_owned (@in Swift.Int) -> (@unowned Swift.Bool) with unmangled suffix "_constprop0" : $@thin (@in Int) -> Bool {
bb0(%0 : $*Int):
%1 = struct_element_addr %0 : $*Int, #Int.value // user: %2
%2 = load %1 : $*Builtin.Word // user: %5
%3 = integer_literal $Builtin.Word, 1 // user: %5
%4 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %5
%5 = apply %4(%2, %3) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %6
%6 = struct $Bool (%5 : $Builtin.Int1) // user: %7
return %6 : $Bool // id: %7
}
// reabstraction thunk helper from @callee_owned (@unowned Swift.Int) -> (@unowned Swift.Bool) to @callee_owned (@in Swift.Int) -> (@unowned Swift.Bool)
sil shared [transparent] reabstraction thunk helper from @callee_owned (@unowned Swift.Int) -> (@unowned Swift.Bool) to @callee_owned (@in Swift.Int) -> (@unowned Swift.Bool) : $@thin (@in Int, @owned @callee_owned (Int) -> Bool) -> Bool {
bb0(%0 : $*Int, %1 : $@callee_owned (Int) -> Bool):
%2 = load %0 : $*Int // user: %3
%3 = apply %1(%2) : $@callee_owned (Int) -> Bool // user: %4
return %3 : $Bool // id: %4
}
// Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
sil public_external Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <T> (@in Optional<T>, _OptionalNilComparisonType) -> Bool {
bb0(%0 : $*Optional<T>, %1 : $_OptionalNilComparisonType):
%2 = alloc_stack $Optional<T> // users: %3, %4, %5, %13
copy_addr %0 to [initialization] %2#1 : $*Optional<T> // id: %3
switch_enum_addr %2#1 : $*Optional<T>, case #Optional.Some!enumelt.1: bb1, case #Optional.None!enumelt: bb2 // id: %4
bb1: // Preds: bb0
%5 = unchecked_take_enum_data_addr %2#1 : $*Optional<T>, #Optional.Some!enumelt.1 // user: %6
destroy_addr %5 : $*T // id: %6
%7 = integer_literal $Builtin.Int1, -1 // user: %8
br bb3(%7 : $Builtin.Int1) // id: %8
bb2: // Preds: bb0
%9 = integer_literal $Builtin.Int1, 0 // user: %10
br bb3(%9 : $Builtin.Int1) // id: %10
bb3(%11 : $Builtin.Int1): // Preds: bb1 bb2
%12 = struct $Bool (%11 : $Builtin.Int1) // user: %15
dealloc_stack %2#0 : $*@local_storage Optional<T> // id: %13
destroy_addr %0 : $*Optional<T> // id: %14
return %12 : $Bool // id: %15
}
// Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
sil public_external [transparent] Swift.Optional.None <A>(A?.Type) -> A? : $@thin <T> (@out Optional<T>, @thin Optional<T>.Type) -> () {
bb0(%0 : $*Optional<T>, %1 : $@thin Optional<T>.Type):
inject_enum_addr %0 : $*Optional<T>, #Optional.None!enumelt // id: %2
%3 = tuple () // user: %4
return %3 : $() // id: %4
}
// Swift.UnsafeBufferPointer.init <A>(Swift.UnsafeBufferPointer<A>.Type)(start : Swift.UnsafePointer<A>, count : Swift.Int) -> Swift.UnsafeBufferPointer<A>
sil public_external Swift.UnsafeBufferPointer.init <A>(Swift.UnsafeBufferPointer<A>.Type)(start : Swift.UnsafePointer<A>, count : Swift.Int) -> Swift.UnsafeBufferPointer<A> : $@thin <T> (UnsafePointer<T>, Int, @thin UnsafeBufferPointer<T>.Type) -> UnsafeBufferPointer<T> {
bb0(%0 : $UnsafePointer<T>, %1 : $Int, %2 : $@thin UnsafeBufferPointer<T>.Type):
%3 = integer_literal $Builtin.Int1, -1 // user: %9
%4 = integer_literal $Builtin.Word, 0 // user: %7
%5 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %7
%6 = struct_extract %1 : $Int, #Int.value // user: %7
%7 = apply %5(%6, %4) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %9
%8 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %9
%9 = apply %8(%7, %3) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %10
cond_fail %9 : $Builtin.Int1 // id: %10
// function_ref Swift.+ infix <A>(Swift.UnsafePointer<A>, Swift.Int) -> Swift.UnsafePointer<A>
%11 = function_ref Swift.+ infix <A>(Swift.UnsafePointer<A>, Swift.Int) -> Swift.UnsafePointer<A> : $@thin <τ_0_0> (UnsafePointer<τ_0_0>, Int) -> UnsafePointer<τ_0_0> // user: %12
%12 = apply [transparent] %11<T>(%0, %1) : $@thin <τ_0_0> (UnsafePointer<τ_0_0>, Int) -> UnsafePointer<τ_0_0> // user: %13
%13 = struct $UnsafeBufferPointer<T> (%0 : $UnsafePointer<T>, %12 : $UnsafePointer<T>) // user: %14
return %13 : $UnsafeBufferPointer<T> // id: %14
}
// Swift.unsafeBitCast <A, B>(A, B.Type) -> B
sil public_external [transparent] Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin <T, U> (@out U, @in T, @thick U.Type) -> () {
bb0(%0 : $*U, %1 : $*T, %2 : $@thick U.Type):
%3 = alloc_stack $T // users: %4, %20, %24, %26
copy_addr [take] %1 to [initialization] %3#1 : $*T // id: %4
%5 = integer_literal $Builtin.Int1, -1 // user: %16
// function_ref Swift.sizeof <A>(A.Type) -> Swift.Int
%6 = function_ref Swift.sizeof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // users: %8, %10
%7 = metatype $@thick T.Type // user: %8
%8 = apply [transparent] %6<T>(%7) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %12
%9 = metatype $@thick U.Type // user: %10
%10 = apply [transparent] %6<U>(%9) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %13
%11 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %14
%12 = struct_extract %8 : $Int, #Int.value // user: %14
%13 = struct_extract %10 : $Int, #Int.value // user: %14
%14 = apply %11(%12, %13) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %16
%15 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %16
%16 = apply %15(%14, %5) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
cond_fail %16 : $Builtin.Int1 // id: %17
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A>
%18 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %21
%19 = metatype $@thin UnsafeMutablePointer<U>.Type // user: %21
%20 = address_to_pointer %3#1 : $*T to $Builtin.RawPointer // user: %21
%21 = apply [transparent] %18<U>(%20, %19) : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %23
// function_ref Swift.UnsafeMutablePointer.memory.getter : A
%22 = function_ref Swift.UnsafeMutablePointer.memory.getter : A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> () // user: %23
%23 = apply [transparent] %22<U>(%0, %21) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> ()
destroy_addr %3#1 : $*T // id: %24
%25 = tuple () // user: %27
dealloc_stack %3#0 : $*@local_storage T // id: %26
return %25 : $() // id: %27
}
// Swift._convertPointerToPointerArgument <A : Swift._PointerType, B : Swift._PointerType>(A) -> B
sil public_external [transparent] Swift._convertPointerToPointerArgument <A : Swift._PointerType, B : Swift._PointerType>(A) -> B : $@thin <FromPointer, ToPointer where FromPointer : _PointerType, ToPointer : _PointerType> (@out ToPointer, @in FromPointer) -> () {
bb0(%0 : $*ToPointer, %1 : $*FromPointer):
%2 = metatype $@thick ToPointer.Type // user: %6
%3 = witness_method $ToPointer, #_PointerType.init!allocator.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _PointerType> (@out τ_0_0, Builtin.RawPointer, @thick τ_0_0.Type) -> () // user: %6
%4 = witness_method $FromPointer, #_PointerType.value!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _PointerType> (@inout τ_0_0) -> Builtin.RawPointer // user: %5
%5 = apply %4<FromPointer>(%1) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _PointerType> (@inout τ_0_0) -> Builtin.RawPointer // user: %6
%6 = apply %3<ToPointer>(%0, %5, %2) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _PointerType> (@out τ_0_0, Builtin.RawPointer, @thick τ_0_0.Type) -> ()
destroy_addr %1 : $*FromPointer // id: %7
%8 = tuple () // user: %9
return %8 : $() // id: %9
}
// Swift.Array.init <A>(Swift.Array<A>.Type)<B : Swift.SequenceType>(B) -> Swift.Array<A>
sil public_external Swift.Array.init <A>([A].Type)<B : Swift.SequenceType>(B) -> [A] : $@thin <T><S where S : SequenceType, S.Generator : GeneratorType, S.Generator.Element == T> (@in S, @thin Array<T>.Type) -> @owned Array<T> {
bb0(%0 : $*S, %1 : $@thin Array<T>.Type):
// function_ref Swift.Array.init <A>(Swift.Array<A>.Type)(Swift._ArrayBuffer<A>) -> Swift.Array<A>
%2 = function_ref Swift.Array.init <A>([A].Type)(Swift._ArrayBuffer<A>) -> [A] : $@thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>, @thin Array<τ_0_0>.Type) -> @owned Array<τ_0_0> // user: %13
%3 = metatype $@thin Array<T>.Type // user: %13
// function_ref Swift._ArrayBuffer.init <A>(Swift._ArrayBuffer<A>.Type)(Swift._ContiguousArrayBuffer<A>) -> Swift._ArrayBuffer<A>
%4 = function_ref Swift._ArrayBuffer.init <A>(Swift._ArrayBuffer<A>.Type)(Swift._ContiguousArrayBuffer<A>) -> Swift._ArrayBuffer<A> : $@thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>, @thin _ArrayBuffer<τ_0_0>.Type) -> @owned _ArrayBuffer<τ_0_0> // user: %12
%5 = metatype $@thin _ArrayBuffer<T>.Type // user: %12
%6 = metatype $@thick S.Type // user: %11
%7 = witness_method $S, #SequenceType."~>"!1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : SequenceType, τ_0_0.Generator : GeneratorType> (@in τ_0_0, _CopyToNativeArrayBuffer, @thick τ_0_0.Type) -> @owned _ContiguousArrayBuffer<τ_0_0.Generator.Element> // user: %11
%8 = alloc_stack $S // users: %9, %11, %14
copy_addr %0 to [initialization] %8#1 : $*S // id: %9
%10 = struct $_CopyToNativeArrayBuffer () // user: %11
%11 = apply %7<S, S.Generator, T>(%8#1, %10, %6) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : SequenceType, τ_0_0.Generator : GeneratorType> (@in τ_0_0, _CopyToNativeArrayBuffer, @thick τ_0_0.Type) -> @owned _ContiguousArrayBuffer<τ_0_0.Generator.Element> // user: %12
%12 = apply %4<T>(%11, %5) : $@thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>, @thin _ArrayBuffer<τ_0_0>.Type) -> @owned _ArrayBuffer<τ_0_0> // user: %13
%13 = apply %2<T>(%12, %3) : $@thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>, @thin Array<τ_0_0>.Type) -> @owned Array<τ_0_0> // user: %16
dealloc_stack %8#0 : $*@local_storage S // id: %14
destroy_addr %0 : $*S // id: %15
return %13 : $Array<T> // id: %16
}
// Swift.+ infix <A>(Swift.UnsafePointer<A>, Swift.Int) -> Swift.UnsafePointer<A>
sil public_external [transparent] Swift.+ infix <A>(Swift.UnsafePointer<A>, Swift.Int) -> Swift.UnsafePointer<A> : $@thin <T> (UnsafePointer<T>, Int) -> UnsafePointer<T> {
bb0(%0 : $UnsafePointer<T>, %1 : $Int):
// function_ref Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafePointer<A>
%2 = function_ref Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafePointer<A> : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafePointer<τ_0_0>.Type) -> UnsafePointer<τ_0_0> // user: %15
%3 = metatype $@thin UnsafePointer<T>.Type // user: %15
%4 = struct_extract %0 : $UnsafePointer<T>, #UnsafePointer.value // user: %14
// function_ref Swift.strideof <A>(A.Type) -> Swift.Int
%5 = function_ref Swift.strideof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %7
%6 = metatype $@thick T.Type // user: %7
%7 = apply [transparent] %5<T>(%6) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %9
%8 = struct_extract %1 : $Int, #Int.value // user: %12
%9 = struct_extract %7 : $Int, #Int.value // user: %12
%10 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %12
%11 = integer_literal $Builtin.Int1, 0 // user: %12
%12 = apply %10(%8, %9, %11) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %13
%13 = tuple_extract %12 : $(Builtin.Word, Builtin.Int1), 0 // user: %14
%14 = index_raw_pointer %4 : $Builtin.RawPointer, %13 : $Builtin.Word // user: %15
%15 = apply [transparent] %2<T>(%14, %3) : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafePointer<τ_0_0>.Type) -> UnsafePointer<τ_0_0> // user: %16
return %15 : $UnsafePointer<T> // id: %16
}
// Swift.sizeof <A>(A.Type) -> Swift.Int
sil public_external [transparent] Swift.sizeof <A>(A.Type) -> Swift.Int : $@thin <T> (@thick T.Type) -> Int {
bb0(%0 : $@thick T.Type):
%1 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %3
%2 = metatype $@thick T.Type // user: %3
%3 = apply %1<T>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %4
%4 = struct $Int (%3 : $Builtin.Word) // user: %5
return %4 : $Int // id: %5
}
// Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A>
sil public_external [transparent] Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A> : $@thin <T> (Builtin.RawPointer, @thin UnsafeMutablePointer<T>.Type) -> UnsafeMutablePointer<T> {
bb0(%0 : $Builtin.RawPointer, %1 : $@thin UnsafeMutablePointer<T>.Type):
%2 = struct $UnsafeMutablePointer<T> (%0 : $Builtin.RawPointer) // user: %3
return %2 : $UnsafeMutablePointer<T> // id: %3
}
// Swift.UnsafeMutablePointer.memory.getter : A
sil public_external [transparent] Swift.UnsafeMutablePointer.memory.getter : A : $@cc(method) @thin <T> (@out T, UnsafeMutablePointer<T>) -> () {
bb0(%0 : $*T, %1 : $UnsafeMutablePointer<T>):
%2 = struct_extract %1 : $UnsafeMutablePointer<T>, #UnsafeMutablePointer.value // user: %3
%3 = pointer_to_address %2 : $Builtin.RawPointer to $*T // user: %4
copy_addr %3 to [initialization] %0 : $*T // id: %4
%5 = tuple () // user: %6
return %5 : $() // id: %6
}
// Swift.Array.init <A>(Swift.Array<A>.Type)(Swift._ArrayBuffer<A>) -> Swift.Array<A>
sil public_external Swift.Array.init <A>([A].Type)(Swift._ArrayBuffer<A>) -> [A] : $@thin <T> (@owned _ArrayBuffer<T>, @thin Array<T>.Type) -> @owned Array<T> {
bb0(%0 : $_ArrayBuffer<T>, %1 : $@thin Array<T>.Type):
%2 = struct $Array<T> (%0 : $_ArrayBuffer<T>) // user: %3
return %2 : $Array<T> // id: %3
}
// Swift._ArrayBuffer.init <A>(Swift._ArrayBuffer<A>.Type)(Swift._ContiguousArrayBuffer<A>) -> Swift._ArrayBuffer<A>
sil public_external Swift._ArrayBuffer.init <A>(Swift._ArrayBuffer<A>.Type)(Swift._ContiguousArrayBuffer<A>) -> Swift._ArrayBuffer<A> : $@thin <T> (@owned _ContiguousArrayBuffer<T>, @thin _ArrayBuffer<T>.Type) -> @owned _ArrayBuffer<T> {
bb0(%0 : $_ContiguousArrayBuffer<T>, %1 : $@thin _ArrayBuffer<T>.Type):
%2 = enum $Optional<Builtin.NativeObject>, #Optional.None!enumelt // user: %47
// function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool
%3 = function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %5
%4 = metatype $@thick T.Type // user: %5
%5 = apply %3<T>(%4) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %6
%6 = struct_extract %5 : $Bool, #Bool.value // user: %7
cond_br %6, bb1, bb2 // id: %7
bb1: // Preds: bb0
// function_ref Swift._IndirectArrayBuffer.__allocating_init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer
%8 = function_ref Swift._IndirectArrayBuffer.__allocating_init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer : $@thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>, Bool, Bool, @thick _IndirectArrayBuffer.Type) -> @owned _IndirectArrayBuffer // user: %17
%9 = metatype $@thick _IndirectArrayBuffer.Type // user: %17
%10 = struct_extract %0 : $_ContiguousArrayBuffer<T>, #_ContiguousArrayBuffer._base // user: %11
%11 = struct_extract %10 : $HeapBuffer<_ArrayBody, T>, #HeapBuffer.storage // user: %16
%12 = integer_literal $Builtin.Int1, -1 // user: %13
%13 = struct $Bool (%12 : $Builtin.Int1) // user: %17
%14 = integer_literal $Builtin.Int1, 0 // user: %15
%15 = struct $Bool (%14 : $Builtin.Int1) // user: %17
retain_value %11 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %16
%17 = apply %8<T>(%0, %13, %15, %9) : $@thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>, Bool, Bool, @thick _IndirectArrayBuffer.Type) -> @owned _IndirectArrayBuffer // user: %18
%18 = unchecked_ref_cast %17 : $_IndirectArrayBuffer to $Builtin.NativeObject // user: %19
%19 = enum $Optional<Builtin.NativeObject>, #Optional.Some!enumelt.1, %18 : $Builtin.NativeObject // user: %20
br bb5(%19 : $Optional<Builtin.NativeObject>) // id: %20
bb2: // Preds: bb0
// function_ref Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
%21 = function_ref Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %30
%22 = alloc_stack $Optional<_ContiguousArrayStorage<T>> // users: %28, %30, %32
%23 = struct_extract %0 : $_ContiguousArrayBuffer<T>, #_ContiguousArrayBuffer._base // user: %24
%24 = struct_extract %23 : $HeapBuffer<_ArrayBody, T>, #HeapBuffer.storage // users: %26, %35
// function_ref Swift._ContiguousArrayBuffer._storage.getter : Swift.Optional<Swift._ContiguousArrayStorage<A>>
%25 = function_ref Swift._ContiguousArrayBuffer._storage.getter : Swift._ContiguousArrayStorage<A>? : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> @owned Optional<_ContiguousArrayStorage<τ_0_0>> // users: %27, %36
retain_value %24 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %26
%27 = apply %25<T>(%0) : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> @owned Optional<_ContiguousArrayStorage<τ_0_0>> // user: %28
store %27 to %22#1 : $*Optional<_ContiguousArrayStorage<T>> // id: %28
%29 = struct $_OptionalNilComparisonType () // user: %30
%30 = apply %21<_ContiguousArrayStorage<T>>(%22#1, %29) : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %31
%31 = struct_extract %30 : $Bool, #Bool.value // user: %33
dealloc_stack %22#0 : $*@local_storage Optional<_ContiguousArrayStorage<T>> // id: %32
cond_br %31, bb3, bb4 // id: %33
bb3: // Preds: bb2
%34 = alloc_stack $Optional<_ContiguousArrayStorage<T>> // users: %37, %40, %45
retain_value %24 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %35
%36 = apply %25<T>(%0) : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> @owned Optional<_ContiguousArrayStorage<τ_0_0>> // user: %37
store %36 to %34#1 : $*Optional<_ContiguousArrayStorage<T>> // id: %37
// function_ref Swift._getOptionalValue <A>(Swift.Optional<A>) -> A
%38 = function_ref Swift._getOptionalValue <A>(A?) -> A : $@thin <τ_0_0> (@out τ_0_0, @in Optional<τ_0_0>) -> () // user: %40
%39 = alloc_stack $_ContiguousArrayStorage<T> // users: %40, %41, %44
%40 = apply [transparent] %38<_ContiguousArrayStorage<T>>(%39#1, %34#1) : $@thin <τ_0_0> (@out τ_0_0, @in Optional<τ_0_0>) -> ()
%41 = load %39#1 : $*_ContiguousArrayStorage<T> // user: %42
%42 = unchecked_ref_cast %41 : $_ContiguousArrayStorage<T> to $Builtin.NativeObject // user: %43
%43 = enum $Optional<Builtin.NativeObject>, #Optional.Some!enumelt.1, %42 : $Builtin.NativeObject // user: %46
dealloc_stack %39#0 : $*@local_storage _ContiguousArrayStorage<T> // id: %44
dealloc_stack %34#0 : $*@local_storage Optional<_ContiguousArrayStorage<T>> // id: %45
br bb5(%43 : $Optional<Builtin.NativeObject>) // id: %46
bb4: // Preds: bb2
br bb5(%2 : $Optional<Builtin.NativeObject>) // id: %47
bb5(%48 : $Optional<Builtin.NativeObject>): // Preds: bb1 bb3 bb4
%49 = struct_extract %0 : $_ContiguousArrayBuffer<T>, #_ContiguousArrayBuffer._base // user: %50
%50 = struct_extract %49 : $HeapBuffer<_ArrayBody, T>, #HeapBuffer.storage // user: %51
release_value %50 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %51
%52 = struct $_ArrayBuffer<T> (%48 : $Optional<Builtin.NativeObject>) // user: %53
return %52 : $_ArrayBuffer<T> // id: %53
}
// Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool
sil public_external Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool : $@thin <T> (@thick T.Type) -> Bool {
bb0(%0 : $@thick T.Type):
// function_ref Swift._canBeClass <A>(A.Type) -> Swift.Int8
%1 = function_ref Swift._canBeClass <A>(A.Type) -> Swift.Int8 : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int8 // user: %2
%2 = apply [transparent] %1<T>(%0) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int8 // user: %5
%3 = integer_literal $Builtin.Int8, 0 // user: %6
%4 = builtin_function_ref "cmp_eq_Int8" : $@thin (Builtin.Int8, Builtin.Int8) -> Builtin.Int1 // users: %6, %12
%5 = struct_extract %2 : $Int8, #Int8.value // users: %6, %12
%6 = apply %4(%5, %3) : $@thin (Builtin.Int8, Builtin.Int8) -> Builtin.Int1 // user: %7
cond_br %6, bb1, bb2 // id: %7
bb1: // Preds: bb0
%8 = integer_literal $Builtin.Int1, 0 // user: %9
%9 = struct $Bool (%8 : $Builtin.Int1) // user: %10
br bb3(%9 : $Bool) // id: %10
bb2: // Preds: bb0
%11 = integer_literal $Builtin.Int8, 1 // user: %12
%12 = apply %4(%5, %11) : $@thin (Builtin.Int8, Builtin.Int8) -> Builtin.Int1 // user: %13
cond_br %12, bb4, bb5 // id: %13
bb3(%14 : $Bool): // Preds: bb1 bb4 bb5
return %14 : $Bool // id: %15
bb4: // Preds: bb2
%16 = integer_literal $Builtin.Int1, -1 // user: %17
%17 = struct $Bool (%16 : $Builtin.Int1) // user: %18
br bb3(%17 : $Bool) // id: %18
bb5: // Preds: bb2
// function_ref swift_isClassOrObjCExistential
%19 = function_ref @swift_isClassOrObjCExistential : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %20
%20 = apply %19<T>(%0) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %21
br bb3(%20 : $Bool) // id: %21
}
// Swift._ContiguousArrayBuffer._storage.getter : Swift.Optional<Swift._ContiguousArrayStorage<A>>
sil public_external Swift._ContiguousArrayBuffer._storage.getter : Swift._ContiguousArrayStorage<A>? : $@cc(method) @thin <T> (@owned _ContiguousArrayBuffer<T>) -> @owned Optional<_ContiguousArrayStorage<T>> {
bb0(%0 : $_ContiguousArrayBuffer<T>):
// function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B
%1 = function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> () // user: %8
%2 = alloc_stack $Optional<HeapBufferStorage<_ArrayBody, T>> // users: %5, %8, %11
%3 = struct_extract %0 : $_ContiguousArrayBuffer<T>, #_ContiguousArrayBuffer._base // user: %4
%4 = struct_extract %3 : $HeapBuffer<_ArrayBody, T>, #HeapBuffer.storage // user: %5
store %4 to %2#1 : $*Optional<HeapBufferStorage<_ArrayBody, T>> // id: %5
%6 = metatype $@thick Optional<_ContiguousArrayStorage<T>>.Type // user: %8
%7 = alloc_stack $Optional<_ContiguousArrayStorage<T>> // users: %8, %9, %10
%8 = apply [transparent] %1<HeapBufferStorage<_ArrayBody, T>?, _ContiguousArrayStorage<T>?>(%7#1, %2#1, %6) : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> ()
%9 = load %7#1 : $*Optional<_ContiguousArrayStorage<T>> // user: %12
dealloc_stack %7#0 : $*@local_storage Optional<_ContiguousArrayStorage<T>> // id: %10
dealloc_stack %2#0 : $*@local_storage Optional<HeapBufferStorage<_ArrayBody, T>> // id: %11
return %9 : $Optional<_ContiguousArrayStorage<T>> // id: %12
}
// Swift._IndirectArrayBuffer.__allocating_init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer
sil public_external Swift._IndirectArrayBuffer.__allocating_init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer : $@thin <T> (@owned _ContiguousArrayBuffer<T>, Bool, Bool, @thick _IndirectArrayBuffer.Type) -> @owned _IndirectArrayBuffer {
bb0(%0 : $_ContiguousArrayBuffer<T>, %1 : $Bool, %2 : $Bool, %3 : $@thick _IndirectArrayBuffer.Type):
%4 = alloc_ref $_IndirectArrayBuffer // user: %6
// function_ref Swift._IndirectArrayBuffer.init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer
%5 = function_ref Swift._IndirectArrayBuffer.init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>, Bool, Bool, @owned _IndirectArrayBuffer) -> @owned _IndirectArrayBuffer // user: %6
%6 = apply %5<T>(%0, %1, %2, %4) : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>, Bool, Bool, @owned _IndirectArrayBuffer) -> @owned _IndirectArrayBuffer // user: %7
return %6 : $_IndirectArrayBuffer // id: %7
}
// Swift._canBeClass <A>(A.Type) -> Swift.Int8
sil public_external [transparent] Swift._canBeClass <A>(A.Type) -> Swift.Int8 : $@thin <T> (@thick T.Type) -> Int8 {
bb0(%0 : $@thick T.Type):
%1 = metatype $@thick T.Type // user: %3
%2 = builtin_function_ref "canBeClass" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Int8 // user: %3
%3 = apply %2<T>(%1) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Int8 // user: %4
%4 = struct $Int8 (%3 : $Builtin.Int8) // user: %5
return %4 : $Int8 // id: %5
}
// swift_isClassOrObjCExistential
sil @swift_isClassOrObjCExistential : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool
// Swift._IndirectArrayBuffer.init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer
sil public_external Swift._IndirectArrayBuffer.init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer : $@cc(method) @thin <T> (@owned _ContiguousArrayBuffer<T>, Bool, Bool, @owned _IndirectArrayBuffer) -> @owned _IndirectArrayBuffer {
bb0(%0 : $_ContiguousArrayBuffer<T>, %1 : $Bool, %2 : $Bool, %3 : $_IndirectArrayBuffer):
%4 = enum $Optional<AnyObject>, #Optional.None!enumelt // users: %6, %25
%5 = ref_element_addr %3 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.buffer // users: %6, %28, %29
store %4 to %5 : $*Optional<AnyObject> // id: %6
%7 = alloc_stack $Optional<_ContiguousArrayStorage<T>> // users: %11, %13, %17, %23, %27
// function_ref Swift._ContiguousArrayBuffer._storage.getter : Swift.Optional<Swift._ContiguousArrayStorage<A>>
%8 = function_ref Swift._ContiguousArrayBuffer._storage.getter : Swift._ContiguousArrayStorage<A>? : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> @owned Optional<_ContiguousArrayStorage<τ_0_0>> // user: %10
retain_value %0 : $_ContiguousArrayBuffer<T> // id: %9
%10 = apply %8<T>(%0) : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> @owned Optional<_ContiguousArrayStorage<τ_0_0>> // user: %11
store %10 to %7#1 : $*Optional<_ContiguousArrayStorage<T>> // id: %11
// function_ref Swift._doesOptionalHaveValue <A>(inout Swift.Optional<A>) -> Builtin.Int1
%12 = function_ref Swift._doesOptionalHaveValue <A>(inout A?) -> Builtin.Int1 : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // user: %13
%13 = apply [transparent] %12<_ContiguousArrayStorage<T>>(%7#1) : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // user: %14
cond_br %13, bb1, bb2 // id: %14
bb1: // Preds: bb0
// function_ref Swift._getOptionalValue <A>(Swift.Optional<A>) -> A
%15 = function_ref Swift._getOptionalValue <A>(A?) -> A : $@thin <τ_0_0> (@out τ_0_0, @in Optional<τ_0_0>) -> () // user: %17
%16 = alloc_stack $_ContiguousArrayStorage<T> // users: %17, %18, %21
%17 = apply [transparent] %15<_ContiguousArrayStorage<T>>(%16#1, %7#1) : $@thin <τ_0_0> (@out τ_0_0, @in Optional<τ_0_0>) -> ()
%18 = load %16#1 : $*_ContiguousArrayStorage<T> // user: %19
%19 = init_existential_ref %18 : $_ContiguousArrayStorage<T> : $_ContiguousArrayStorage<T>, $AnyObject // user: %20
%20 = enum $Optional<AnyObject>, #Optional.Some!enumelt.1, %19 : $AnyObject // user: %22
dealloc_stack %16#0 : $*@local_storage _ContiguousArrayStorage<T> // id: %21
br bb3(%20 : $Optional<AnyObject>) // id: %22
bb2: // Preds: bb0
%23 = load %7#1 : $*Optional<_ContiguousArrayStorage<T>> // user: %24
release_value %23 : $Optional<_ContiguousArrayStorage<T>> // id: %24
br bb3(%4 : $Optional<AnyObject>) // id: %25
bb3(%26 : $Optional<AnyObject>): // Preds: bb1 bb2
dealloc_stack %7#0 : $*@local_storage Optional<_ContiguousArrayStorage<T>> // id: %27
%28 = load %5 : $*Optional<AnyObject> // user: %30
store %26 to %5 : $*Optional<AnyObject> // id: %29
release_value %28 : $Optional<AnyObject> // id: %30
%31 = ref_element_addr %3 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isMutable // user: %32
store %1 to %31 : $*Bool // id: %32
%33 = integer_literal $Builtin.Int1, 0 // user: %34
%34 = struct $Bool (%33 : $Builtin.Int1) // user: %36
%35 = ref_element_addr %3 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isCocoa // user: %36
store %34 to %35 : $*Bool // id: %36
%37 = ref_element_addr %3 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.needsElementTypeCheck // user: %38
store %2 to %37 : $*Bool // id: %38
release_value %0 : $_ContiguousArrayBuffer<T> // id: %39
return %3 : $_IndirectArrayBuffer // id: %40
}
// Swift._IndirectArrayBuffer.init (Swift._IndirectArrayBuffer.Type)(cocoa : Swift._SwiftNSArrayRequiredOverridesType, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer
sil public_external Swift._IndirectArrayBuffer.init (Swift._IndirectArrayBuffer.Type)(cocoa : Swift._SwiftNSArrayRequiredOverridesType, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer : $@cc(method) @thin (@owned _SwiftNSArrayRequiredOverridesType, Bool, @owned _IndirectArrayBuffer) -> @owned _IndirectArrayBuffer {
bb0(%0 : $_SwiftNSArrayRequiredOverridesType, %1 : $Bool, %2 : $_IndirectArrayBuffer):
%3 = ref_element_addr %2 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.buffer // user: %6
%4 = upcast_existential_ref %0 : $_SwiftNSArrayRequiredOverridesType to $AnyObject // user: %5
%5 = enum $Optional<AnyObject>, #Optional.Some!enumelt.1, %4 : $AnyObject // user: %6
store %5 to %3 : $*Optional<AnyObject> // id: %6
%7 = integer_literal $Builtin.Int1, 0 // user: %8
%8 = struct $Bool (%7 : $Builtin.Int1) // user: %10
%9 = ref_element_addr %2 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isMutable // user: %10
store %8 to %9 : $*Bool // id: %10
%11 = integer_literal $Builtin.Int1, -1 // user: %12
%12 = struct $Bool (%11 : $Builtin.Int1) // user: %14
%13 = ref_element_addr %2 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isCocoa // user: %14
store %12 to %13 : $*Bool // id: %14
%15 = ref_element_addr %2 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.needsElementTypeCheck // user: %16
store %1 to %15 : $*Bool // id: %16
return %2 : $_IndirectArrayBuffer // id: %17
}
// Swift._IndirectArrayBuffer.init (Swift._IndirectArrayBuffer.Type)<A>(castFrom : Swift._IndirectArrayBuffer, toElementType : A.Type) -> Swift._IndirectArrayBuffer
sil public_external Swift._IndirectArrayBuffer.init (Swift._IndirectArrayBuffer.Type)<A>(castFrom : Swift._IndirectArrayBuffer, toElementType : A.Type) -> Swift._IndirectArrayBuffer : $@cc(method) @thin <Target> (@owned _IndirectArrayBuffer, @thick Target.Type, @owned _IndirectArrayBuffer) -> @owned _IndirectArrayBuffer {
bb0(%0 : $_IndirectArrayBuffer, %1 : $@thick Target.Type, %2 : $_IndirectArrayBuffer):
%3 = ref_element_addr %2 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.buffer // user: %6
%4 = ref_element_addr %0 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.buffer // users: %5, %20
%5 = load %4 : $*Optional<AnyObject> // users: %6, %18, %44
store %5 to %3 : $*Optional<AnyObject> // id: %6
%7 = ref_element_addr %0 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isCocoa // users: %9, %11
%8 = ref_element_addr %2 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isCocoa // user: %10
%9 = load %7 : $*Bool // user: %10
store %9 to %8 : $*Bool // id: %10
%11 = struct_element_addr %7 : $*Bool, #Bool.value // user: %12
%12 = load %11 : $*Builtin.Int1 // user: %13
cond_br %12, bb1, bb2 // id: %13
bb1: // Preds: bb0
%14 = integer_literal $Builtin.Int1, 0 // user: %15
%15 = struct $Bool (%14 : $Builtin.Int1) // user: %17
%16 = ref_element_addr %2 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isMutable // user: %17
store %15 to %16 : $*Bool // id: %17
retain_value %5 : $Optional<AnyObject> // id: %18
br bb3 // id: %19
bb2: // Preds: bb0
%20 = load %4 : $*Optional<AnyObject> // users: %21, %38, %45
%21 = enum_is_tag $Builtin.Int1, %20 : $Optional<AnyObject>, #Optional.Some!enumelt.1 // user: %22
cond_br %21, bb4, bb5 // id: %22
bb3: // Preds: bb1 bb11
%23 = ref_element_addr %0 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.needsElementTypeCheck // user: %24
%24 = struct_element_addr %23 : $*Bool, #Bool.value // user: %25
%25 = load %24 : $*Builtin.Int1 // user: %26
cond_br %25, bb12, bb13 // id: %26
bb4: // Preds: bb2
%27 = integer_literal $Builtin.Int1, -1 // user: %36
%28 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %30, %32
%29 = metatype $@thick Optional<AnyObject>.Type // user: %30
%30 = apply %28<AnyObject?>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %34
%31 = metatype $@thick _ContiguousArrayStorage<AnyObject>.Type // user: %32
%32 = apply %28<_ContiguousArrayStorage<AnyObject>>(%31) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %34
%33 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %34
%34 = apply %33(%30, %32) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %36
%35 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %36
%36 = apply %35(%34, %27) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %37
cond_fail %36 : $Builtin.Int1 // id: %37
%38 = unchecked_ref_bit_cast %20 : $Optional<AnyObject> to $_ContiguousArrayStorage<AnyObject> // user: %39
%39 = enum $Optional<_ContiguousArrayStorage<AnyObject>>, #Optional.Some!enumelt.1, %38 : $_ContiguousArrayStorage<AnyObject> // user: %40
br bb6(%39 : $Optional<_ContiguousArrayStorage<AnyObject>>) // id: %40
bb5: // Preds: bb2
%41 = enum $Optional<_ContiguousArrayStorage<AnyObject>>, #Optional.None!enumelt // user: %42
br bb6(%41 : $Optional<_ContiguousArrayStorage<AnyObject>>) // id: %42
bb6(%43 : $Optional<_ContiguousArrayStorage<AnyObject>>): // Preds: bb4 bb5
retain_value %5 : $Optional<AnyObject> // id: %44
retain_value %20 : $Optional<AnyObject> // id: %45
%46 = integer_literal $Builtin.Int1, 0 // users: %70, %75
%47 = integer_literal $Builtin.Int1, -1 // users: %56, %65, %73
%48 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %50, %52, %63
%49 = metatype $@thick Optional<_ContiguousArrayStorage<AnyObject>>.Type // user: %50
%50 = apply %48<_ContiguousArrayStorage<AnyObject>?>(%49) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %54, %64
%51 = metatype $@thick HeapBuffer<_ArrayBody, AnyObject>.Type // user: %52
%52 = apply %48<HeapBuffer<_ArrayBody, AnyObject>>(%51) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %54
%53 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %54, %64
%54 = apply %53(%50, %52) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %56
%55 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %56, %65
%56 = apply %55(%54, %47) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %57
cond_fail %56 : $Builtin.Int1 // id: %57
%58 = unchecked_ref_bit_cast %43 : $Optional<_ContiguousArrayStorage<AnyObject>> to $Optional<HeapBufferStorage<_ArrayBody, AnyObject>> // users: %61, %78
%59 = metatype $@thick Target.Type // user: %60
%60 = upcast %59 : $@thick Target.Type to $@thick protocol<>.Type // user: %69
retain_value %58 : $Optional<HeapBufferStorage<_ArrayBody, AnyObject>> // id: %61
%62 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, AnyObject>>.Type // user: %63
%63 = apply %48<HeapBufferStorage<_ArrayBody, AnyObject>?>(%62) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %64
%64 = apply %53(%63, %50) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %65
%65 = apply %55(%64, %47) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %66
cond_fail %65 : $Builtin.Int1 // id: %66
switch_enum %43 : $Optional<_ContiguousArrayStorage<AnyObject>>, case #Optional.Some!enumelt.1: bb7, case #Optional.None!enumelt: bb8 // id: %67
bb7: // Preds: bb6
%68 = unchecked_enum_data %43 : $Optional<_ContiguousArrayStorage<AnyObject>>, #Optional.Some!enumelt.1 // users: %72, %74
checked_cast_br %60 : $@thick protocol<>.Type to $@thick AnyObject.Protocol, bb9, bb10 // id: %69
bb8: // Preds: bb6
br bb11(%46 : $Builtin.Int1) // id: %70
bb9(%71 : $@thick AnyObject.Protocol): // Preds: bb7
strong_release %68 : $_ContiguousArrayStorage<AnyObject> // id: %72
br bb11(%47 : $Builtin.Int1) // id: %73
bb10: // Preds: bb7
strong_release %68 : $_ContiguousArrayStorage<AnyObject> // id: %74
br bb11(%46 : $Builtin.Int1) // id: %75
bb11(%76 : $Builtin.Int1): // Preds: bb8 bb9 bb10
%77 = struct $Bool (%76 : $Builtin.Int1) // user: %80
release_value %58 : $Optional<HeapBufferStorage<_ArrayBody, AnyObject>> // id: %78
%79 = ref_element_addr %2 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isMutable // user: %80
store %77 to %79 : $*Bool // id: %80
br bb3 // id: %81
bb12: // Preds: bb3
%82 = metatype $@thick AnyObject.Protocol // user: %83
checked_cast_br %82 : $@thick AnyObject.Protocol to $@thick Target.Type, bb14, bb15 // id: %83
bb13: // Preds: bb3
%84 = integer_literal $Builtin.Int1, 0 // user: %85
br bb17(%84 : $Builtin.Int1) // id: %85
bb14(%86 : $@thick Target.Type): // Preds: bb12
%87 = integer_literal $Builtin.Int1, -1 // user: %88
br bb16(%87 : $Builtin.Int1) // id: %88
bb15: // Preds: bb12
%89 = integer_literal $Builtin.Int1, 0 // user: %90
br bb16(%89 : $Builtin.Int1) // id: %90
bb16(%91 : $Builtin.Int1): // Preds: bb14 bb15
%92 = integer_literal $Builtin.Int1, -1 // user: %94
%93 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %94
%94 = apply %93(%91, %92) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %95
br bb17(%94 : $Builtin.Int1) // id: %95
bb17(%96 : $Builtin.Int1): // Preds: bb13 bb16
%97 = struct $Bool (%96 : $Builtin.Int1) // user: %99
%98 = ref_element_addr %2 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.needsElementTypeCheck // user: %99
store %97 to %98 : $*Bool // id: %99
strong_release %0 : $_IndirectArrayBuffer // id: %100
return %2 : $_IndirectArrayBuffer // id: %101
}
// Swift._ContiguousArrayStorage._tryGetVerbatimBridgedUnsafeBuffer <A>(Swift._ContiguousArrayStorage<A>)() -> Swift.UnsafeBufferPointer<Swift.AnyObject>
sil public_external Swift._ContiguousArrayStorage._tryGetVerbatimBridgedUnsafeBuffer <A>(Swift._ContiguousArrayStorage<A>)() -> Swift.UnsafeBufferPointer<Swift.AnyObject> : $@cc(method) @thin <T> (@owned _ContiguousArrayStorage<T>) -> UnsafeBufferPointer<AnyObject> {
bb0(%0 : $_ContiguousArrayStorage<T>):
// function_ref Swift._isBridgedVerbatimToObjectiveC <A>(A.Type) -> Swift.Bool
%1 = function_ref Swift._isBridgedVerbatimToObjectiveC <A>(A.Type) -> Swift.Bool : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %3
%2 = metatype $@thick T.Type // user: %3
%3 = apply %1<T>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %4
%4 = struct_extract %3 : $Bool, #Bool.value // user: %5
cond_br %4, bb1, bb2 // id: %5
bb1: // Preds: bb0
// function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(Swift.Optional<Swift._ContiguousArrayStorage<A>>) -> Swift._ContiguousArrayBuffer<A>
%6 = function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(Swift._ContiguousArrayStorage<A>?) -> Swift._ContiguousArrayBuffer<A> : $@thin <τ_0_0> (@owned Optional<_ContiguousArrayStorage<τ_0_0>>, @thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %16
%7 = metatype $@thin _ContiguousArrayBuffer<T>.Type // user: %16
%8 = alloc_stack $Optional<_ContiguousArrayStorage<T>> // users: %13, %15, %17
%9 = alloc_stack $_ContiguousArrayStorage<T> // users: %10, %13, %14
store %0 to %9#1 : $*_ContiguousArrayStorage<T> // id: %10
// function_ref Swift._injectValueIntoOptional <A>(A) -> Swift.Optional<A>
%11 = function_ref Swift._injectValueIntoOptional <A>(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> () // user: %13
strong_retain %0 : $_ContiguousArrayStorage<T> // id: %12
%13 = apply [transparent] %11<_ContiguousArrayStorage<T>>(%8#1, %9#1) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> ()
dealloc_stack %9#0 : $*@local_storage _ContiguousArrayStorage<T> // id: %14
%15 = load %8#1 : $*Optional<_ContiguousArrayStorage<T>> // user: %16
%16 = apply %6<T>(%15, %7) : $@thin <τ_0_0> (@owned Optional<_ContiguousArrayStorage<τ_0_0>>, @thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // users: %20, %24, %27
dealloc_stack %8#0 : $*@local_storage Optional<_ContiguousArrayStorage<T>> // id: %17
// function_ref Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafePointer<A>
%18 = function_ref Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafePointer<A> : $@thin <τ_0_0><τ_1_0> (UnsafeMutablePointer<τ_1_0>, @thin UnsafePointer<τ_0_0>.Type) -> UnsafePointer<τ_0_0> // user: %25
%19 = metatype $@thin UnsafePointer<AnyObject>.Type // user: %25
%20 = struct_extract %16 : $_ContiguousArrayBuffer<T>, #_ContiguousArrayBuffer._base // user: %21
%21 = struct_extract %20 : $HeapBuffer<_ArrayBody, T>, #HeapBuffer.storage // user: %23
// function_ref Swift._ContiguousArrayBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<A>
%22 = function_ref Swift._ContiguousArrayBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> UnsafeMutablePointer<τ_0_0> // user: %24
retain_value %21 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %23
%24 = apply %22<T>(%16) : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> UnsafeMutablePointer<τ_0_0> // user: %25
%25 = apply [transparent] %18<AnyObject, T>(%24, %19) : $@thin <τ_0_0><τ_1_0> (UnsafeMutablePointer<τ_1_0>, @thin UnsafePointer<τ_0_0>.Type) -> UnsafePointer<τ_0_0> // users: %37, %46
// function_ref Swift._ContiguousArrayBuffer.count.getter : Swift.Int
%26 = function_ref Swift._ContiguousArrayBuffer.count.getter : Swift.Int : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> Int // user: %27
%27 = apply %26<T>(%16) : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> Int // user: %32
%28 = integer_literal $Builtin.Int1, 0 // user: %42
%29 = integer_literal $Builtin.Int1, -1 // user: %35
%30 = integer_literal $Builtin.Word, 0 // user: %33
%31 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %33
%32 = struct_extract %27 : $Int, #Int.value // users: %33, %42
%33 = apply %31(%32, %30) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %35
%34 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %35
%35 = apply %34(%33, %29) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %36
cond_fail %35 : $Builtin.Int1 // id: %36
%37 = struct_extract %25 : $UnsafePointer<AnyObject>, #UnsafePointer.value // user: %44
%38 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %40
%39 = metatype $@thick AnyObject.Protocol // user: %40
%40 = apply %38<AnyObject>(%39) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %42
%41 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %42
%42 = apply %41(%32, %40, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %43
%43 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 0 // user: %44
%44 = index_raw_pointer %37 : $Builtin.RawPointer, %43 : $Builtin.Word // user: %45
%45 = struct $UnsafePointer<AnyObject> (%44 : $Builtin.RawPointer) // user: %46
%46 = struct $UnsafeBufferPointer<AnyObject> (%25 : $UnsafePointer<AnyObject>, %45 : $UnsafePointer<AnyObject>) // user: %47
br bb3(%46 : $UnsafeBufferPointer<AnyObject>) // id: %47
bb2: // Preds: bb0
%48 = builtin_function_ref "inttoptr_Word" : $@thin (Builtin.Word) -> Builtin.RawPointer // user: %50
%49 = integer_literal $Builtin.Word, 0 // user: %50
%50 = apply %48(%49) : $@thin (Builtin.Word) -> Builtin.RawPointer // user: %51
%51 = struct $UnsafePointer<AnyObject> (%50 : $Builtin.RawPointer) // users: %52, %52
%52 = struct $UnsafeBufferPointer<AnyObject> (%51 : $UnsafePointer<AnyObject>, %51 : $UnsafePointer<AnyObject>) // user: %53
br bb3(%52 : $UnsafeBufferPointer<AnyObject>) // id: %53
bb3(%54 : $UnsafeBufferPointer<AnyObject>): // Preds: bb1 bb2
strong_release %0 : $_ContiguousArrayStorage<T> // id: %55
return %54 : $UnsafeBufferPointer<AnyObject> // id: %56
}
// Swift._ContiguousArrayStorage._getNonVerbatimBridgedCount <A>(Swift._ContiguousArrayStorage<A>)() -> Swift.Int
sil public_external Swift._ContiguousArrayStorage._getNonVerbatimBridgedCount <A>(Swift._ContiguousArrayStorage<A>)() -> Swift.Int : $@cc(method) @thin <T> (@owned _ContiguousArrayStorage<T>) -> Int {
bb0(%0 : $_ContiguousArrayStorage<T>):
// function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(Swift.Optional<Swift._ContiguousArrayStorage<A>>) -> Swift._ContiguousArrayBuffer<A>
%1 = function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(Swift._ContiguousArrayStorage<A>?) -> Swift._ContiguousArrayBuffer<A> : $@thin <τ_0_0> (@owned Optional<_ContiguousArrayStorage<τ_0_0>>, @thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %11
%2 = metatype $@thin _ContiguousArrayBuffer<T>.Type // user: %11
%3 = alloc_stack $Optional<_ContiguousArrayStorage<T>> // users: %8, %10, %15
%4 = alloc_stack $_ContiguousArrayStorage<T> // users: %5, %8, %9
store %0 to %4#1 : $*_ContiguousArrayStorage<T> // id: %5
// function_ref Swift._injectValueIntoOptional <A>(A) -> Swift.Optional<A>
%6 = function_ref Swift._injectValueIntoOptional <A>(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> () // user: %8
strong_retain %0 : $_ContiguousArrayStorage<T> // id: %7
%8 = apply [transparent] %6<_ContiguousArrayStorage<T>>(%3#1, %4#1) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> ()
dealloc_stack %4#0 : $*@local_storage _ContiguousArrayStorage<T> // id: %9
%10 = load %3#1 : $*Optional<_ContiguousArrayStorage<T>> // user: %11
%11 = apply %1<T>(%10, %2) : $@thin <τ_0_0> (@owned Optional<_ContiguousArrayStorage<τ_0_0>>, @thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %13
// function_ref Swift._ContiguousArrayBuffer.count.getter : Swift.Int
%12 = function_ref Swift._ContiguousArrayBuffer.count.getter : Swift.Int : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> Int // user: %13
%13 = apply %12<T>(%11) : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> Int // user: %16
strong_release %0 : $_ContiguousArrayStorage<T> // id: %14
dealloc_stack %3#0 : $*@local_storage Optional<_ContiguousArrayStorage<T>> // id: %15
return %13 : $Int // id: %16
}
// Swift._ContiguousArrayStorage._getNonVerbatimBridgedHeapBuffer <A>(Swift._ContiguousArrayStorage<A>)() -> Swift.HeapBuffer<Swift.Int, Swift.AnyObject>
sil public_external Swift._ContiguousArrayStorage._getNonVerbatimBridgedHeapBuffer <A>(Swift._ContiguousArrayStorage<A>)() -> Swift.HeapBuffer<Swift.Int, Swift.AnyObject> : $@cc(method) @thin <T> (@owned _ContiguousArrayStorage<T>) -> @owned HeapBuffer<Int, AnyObject> {
bb0(%0 : $_ContiguousArrayStorage<T>):
// function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(Swift.Optional<Swift._ContiguousArrayStorage<A>>) -> Swift._ContiguousArrayBuffer<A>
%1 = function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(Swift._ContiguousArrayStorage<A>?) -> Swift._ContiguousArrayBuffer<A> : $@thin <τ_0_0> (@owned Optional<_ContiguousArrayStorage<τ_0_0>>, @thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %11
%2 = metatype $@thin _ContiguousArrayBuffer<T>.Type // user: %11
%3 = alloc_stack $Optional<_ContiguousArrayStorage<T>> // users: %8, %10, %12
%4 = alloc_stack $_ContiguousArrayStorage<T> // users: %5, %8, %9
store %0 to %4#1 : $*_ContiguousArrayStorage<T> // id: %5
// function_ref Swift._injectValueIntoOptional <A>(A) -> Swift.Optional<A>
%6 = function_ref Swift._injectValueIntoOptional <A>(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> () // user: %8
strong_retain %0 : $_ContiguousArrayStorage<T> // id: %7
%8 = apply [transparent] %6<_ContiguousArrayStorage<T>>(%3#1, %4#1) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> ()
dealloc_stack %4#0 : $*@local_storage _ContiguousArrayStorage<T> // id: %9
%10 = load %3#1 : $*Optional<_ContiguousArrayStorage<T>> // user: %11
%11 = apply %1<T>(%10, %2) : $@thin <τ_0_0> (@owned Optional<_ContiguousArrayStorage<τ_0_0>>, @thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // users: %13, %17, %142
dealloc_stack %3#0 : $*@local_storage Optional<_ContiguousArrayStorage<T>> // id: %12
%13 = struct_extract %11 : $_ContiguousArrayBuffer<T>, #_ContiguousArrayBuffer._base // user: %14
%14 = struct_extract %13 : $HeapBuffer<_ArrayBody, T>, #HeapBuffer.storage // users: %16, %130, %141
// function_ref Swift._ContiguousArrayBuffer.count.getter : Swift.Int
%15 = function_ref Swift._ContiguousArrayBuffer.count.getter : Swift.Int : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> Int // user: %17
retain_value %14 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %16
%17 = apply %15<T>(%11) : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> Int // users: %66, %117
%18 = metatype $@thick HeapBufferStorage<Int, AnyObject>.Type // users: %19, %93
%19 = upcast %18 : $@thick HeapBufferStorage<Int, AnyObject>.Type to $@thick AnyObject.Type // user: %91
%20 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %22, %45, %92, %93, %103, %105
%21 = metatype $@thick HeapObject.Type // users: %22, %76
%22 = apply %20<HeapObject>(%21) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %28
%23 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %25, %51, %76
%24 = metatype $@thick Int.Type // users: %25, %45
%25 = apply %23<Int>(%24) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %28, %37
%26 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %28, %46, %52, %71, %135
%27 = integer_literal $Builtin.Int1, -1 // users: %28, %46, %52, %67, %71, %97, %107, %124
%28 = apply %26(%22, %25, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %29, %30
%29 = tuple_extract %28 : $(Builtin.Word, Builtin.Int1), 0 // user: %35
%30 = tuple_extract %28 : $(Builtin.Word, Builtin.Int1), 1 // user: %31
cond_fail %30 : $Builtin.Int1 // id: %31
%32 = integer_literal $Builtin.Word, 1 // users: %35, %37, %56, %58, %77, %135
%33 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %35, %37, %56, %58, %77
%34 = integer_literal $Builtin.Int1, 0 // users: %35, %37, %56, %58, %77, %113, %118, %135
%35 = apply %33(%29, %32, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %36
%36 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 0 // user: %44
%37 = apply %33(%25, %32, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %38
%38 = tuple_extract %37 : $(Builtin.Word, Builtin.Int1), 0 // users: %39, %42, %81, %83
%39 = struct $Int (%38 : $Builtin.Word) // user: %88
%40 = integer_literal $Builtin.Word, -1 // users: %42, %61
%41 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %42, %61
%42 = apply %41(%38, %40) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %44
%43 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %44, %62
%44 = apply %43(%36, %42) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %46, %113
%45 = apply %20<Int>(%24) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %46
%46 = apply %26(%44, %45, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %47, %48
%47 = tuple_extract %46 : $(Builtin.Word, Builtin.Int1), 0 // user: %52
%48 = tuple_extract %46 : $(Builtin.Word, Builtin.Int1), 1 // user: %49
cond_fail %48 : $Builtin.Int1 // id: %49
%50 = metatype $@thick AnyObject.Protocol // users: %51, %64, %92
%51 = apply %23<AnyObject>(%50) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %52, %58
%52 = apply %26(%47, %51, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %53, %54
%53 = tuple_extract %52 : $(Builtin.Word, Builtin.Int1), 0 // user: %56
%54 = tuple_extract %52 : $(Builtin.Word, Builtin.Int1), 1 // user: %55
cond_fail %54 : $Builtin.Int1 // id: %55
%56 = apply %33(%53, %32, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %57
%57 = tuple_extract %56 : $(Builtin.Word, Builtin.Int1), 0 // user: %62
%58 = apply %33(%51, %32, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %59
%59 = tuple_extract %58 : $(Builtin.Word, Builtin.Int1), 0 // users: %60, %61, %83, %85
%60 = struct $Int (%59 : $Builtin.Word) // users: %87, %128
%61 = apply %41(%59, %40) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %62
%62 = apply %43(%57, %61) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %71, %118
%63 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %64, %112
%64 = apply %63<AnyObject>(%50) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %67
%65 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %67, %113, %118
%66 = struct_extract %17 : $Int, #Int.value // users: %67, %123, %126, %148
%67 = apply %65(%66, %64, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %68, %69
%68 = tuple_extract %67 : $(Builtin.Word, Builtin.Int1), 0 // user: %71
%69 = tuple_extract %67 : $(Builtin.Word, Builtin.Int1), 1 // user: %70
cond_fail %69 : $Builtin.Int1 // id: %70
%71 = apply %26(%62, %68, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %72, %73
%72 = tuple_extract %71 : $(Builtin.Word, Builtin.Int1), 0 // user: %75
%73 = tuple_extract %71 : $(Builtin.Word, Builtin.Int1), 1 // user: %74
cond_fail %73 : $Builtin.Int1 // id: %74
%75 = struct $Int (%72 : $Builtin.Word) // user: %91
%76 = apply %23<HeapObject>(%21) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %77
%77 = apply %33(%76, %32, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %78
%78 = tuple_extract %77 : $(Builtin.Word, Builtin.Int1), 0 // users: %79, %81, %85
%79 = struct $Int (%78 : $Builtin.Word) // user: %129
%80 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %81, %83, %85
%81 = apply %80(%78, %38) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %82
cond_br %81, bb1, bb2 // id: %82
bb1: // Preds: bb0
%83 = apply %80(%38, %59) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %84
cond_br %83, bb3, bb4 // id: %84
bb2: // Preds: bb0
%85 = apply %80(%78, %59) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %86
cond_br %85, bb6, bb7 // id: %86
bb3: // Preds: bb1
br bb5(%60 : $Int) // id: %87
bb4: // Preds: bb1
br bb5(%39 : $Int) // id: %88
bb5(%89 : $Int): // Preds: bb3 bb4 bb6 bb7
// function_ref swift_bufferAllocate
%90 = function_ref @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %91
%91 = apply %90(%19, %75, %89) : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %99
%92 = apply %20<AnyObject>(%50) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %95
%93 = apply %20<HeapBufferStorage<Int, AnyObject>>(%18) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %95
%94 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %95, %106, %126, %148
%95 = apply %94(%92, %93) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %97
%96 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %97, %107, %124
%97 = apply %96(%95, %27) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %98
cond_fail %97 : $Builtin.Int1 // id: %98
%99 = unchecked_ref_bit_cast %91 : $AnyObject to $HeapBufferStorage<Int, AnyObject> // user: %100
%100 = enum $Optional<HeapBufferStorage<Int, AnyObject>>, #Optional.Some!enumelt.1, %99 : $HeapBufferStorage<Int, AnyObject> // users: %101, %109
%101 = struct $HeapBuffer<Int, AnyObject> (%100 : $Optional<HeapBufferStorage<Int, AnyObject>>) // user: %132
%102 = metatype $@thick Optional<HeapBufferStorage<Int, AnyObject>>.Type // user: %103
%103 = apply %20<HeapBufferStorage<Int, AnyObject>?>(%102) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %106
%104 = metatype $@thick Builtin.NativeObject.Type // user: %105
%105 = apply %20<Builtin.NativeObject>(%104) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %106
%106 = apply %94(%103, %105) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %107
%107 = apply %96(%106, %27) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %108
cond_fail %107 : $Builtin.Int1 // id: %108
%109 = unchecked_ref_bit_cast %100 : $Optional<HeapBufferStorage<Int, AnyObject>> to $Builtin.NativeObject // user: %110
%110 = ref_to_raw_pointer %109 : $Builtin.NativeObject to $Builtin.RawPointer // users: %115, %120
%111 = metatype $@thick Int8.Type // user: %112
%112 = apply %63<Int8>(%111) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %113, %118
%113 = apply %65(%44, %112, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %114
%114 = tuple_extract %113 : $(Builtin.Word, Builtin.Int1), 0 // user: %115
%115 = index_raw_pointer %110 : $Builtin.RawPointer, %114 : $Builtin.Word // user: %116
%116 = pointer_to_address %115 : $Builtin.RawPointer to $*Int // user: %117
store %17 to %116 : $*Int // id: %117
%118 = apply %65(%62, %112, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %119
%119 = tuple_extract %118 : $(Builtin.Word, Builtin.Int1), 0 // user: %120
%120 = index_raw_pointer %110 : $Builtin.RawPointer, %119 : $Builtin.Word // user: %144
%121 = integer_literal $Builtin.Word, 0 // users: %123, %126, %133
%122 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %123
%123 = apply %122(%121, %66) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %124
%124 = apply %96(%123, %27) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %125
cond_fail %124 : $Builtin.Int1 // id: %125
%126 = apply %94(%121, %66) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %127
cond_br %126, bb8, bb9 // id: %127
bb6: // Preds: bb2
br bb5(%60 : $Int) // id: %128
bb7: // Preds: bb2
br bb5(%79 : $Int) // id: %129
bb8: // Preds: bb5 bb10
release_value %14 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %130
strong_release %0 : $_ContiguousArrayStorage<T> // id: %131
return %101 : $HeapBuffer<Int, AnyObject> // id: %132
bb9: // Preds: bb5
br bb10(%121 : $Builtin.Word) // id: %133
bb10(%134 : $Builtin.Word): // Preds: bb9 bb10
%135 = apply %26(%134, %32, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %136
%136 = tuple_extract %135 : $(Builtin.Word, Builtin.Int1), 0 // users: %148, %149
%137 = struct $Int (%134 : $Builtin.Word) // user: %142
// function_ref Swift._bridgeToObjectiveCUnconditional <A>(A) -> Swift.AnyObject
%138 = function_ref Swift._bridgeToObjectiveCUnconditional <A>(A) -> Swift.AnyObject : $@thin <τ_0_0> (@in τ_0_0) -> @owned AnyObject // user: %143
%139 = alloc_stack $T // users: %142, %143, %147
// function_ref Swift._ContiguousArrayBuffer.subscript.getter (Swift.Int) -> A
%140 = function_ref Swift._ContiguousArrayBuffer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, @owned _ContiguousArrayBuffer<τ_0_0>) -> () // user: %142
retain_value %14 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %141
%142 = apply %140<T>(%139#1, %137, %11) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, @owned _ContiguousArrayBuffer<τ_0_0>) -> ()
%143 = apply %138<T>(%139#1) : $@thin <τ_0_0> (@in τ_0_0) -> @owned AnyObject // user: %146
%144 = pointer_to_address %120 : $Builtin.RawPointer to $*AnyObject // user: %145
%145 = index_addr %144 : $*AnyObject, %134 : $Builtin.Word // user: %146
store %143 to %145 : $*AnyObject // id: %146
dealloc_stack %139#0 : $*@local_storage T // id: %147
%148 = apply %94(%136, %66) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %149
cond_br %148, bb8, bb10(%136 : $Builtin.Word) // id: %149
}
// Swift._ContiguousArrayStorage.canStoreElementsOfDynamicType <A>(Swift._ContiguousArrayStorage<A>)(protocol<>.Type) -> Swift.Bool
sil public_external Swift._ContiguousArrayStorage.canStoreElementsOfDynamicType <A>(Swift._ContiguousArrayStorage<A>)(protocol<>.Type) -> Swift.Bool : $@cc(method) @thin <T> (@thick protocol<>.Type, @owned _ContiguousArrayStorage<T>) -> Bool {
bb0(%0 : $@thick protocol<>.Type, %1 : $_ContiguousArrayStorage<T>):
checked_cast_br %0 : $@thick protocol<>.Type to $@thick T.Type, bb1, bb2 // id: %2
bb1(%3 : $@thick T.Type): // Preds: bb0
%4 = integer_literal $Builtin.Int1, -1 // user: %5
br bb3(%4 : $Builtin.Int1) // id: %5
bb2: // Preds: bb0
%6 = integer_literal $Builtin.Int1, 0 // user: %7
br bb3(%6 : $Builtin.Int1) // id: %7
bb3(%8 : $Builtin.Int1): // Preds: bb1 bb2
%9 = struct $Bool (%8 : $Builtin.Int1) // user: %11
strong_release %1 : $_ContiguousArrayStorage<T> // id: %10
return %9 : $Bool // id: %11
}
// Swift._ContiguousArrayStorage.staticElementType.getter : protocol<>.Type
sil public_external Swift._ContiguousArrayStorage.staticElementType.getter : protocol<>.Type : $@cc(method) @thin <T> (@owned _ContiguousArrayStorage<T>) -> @thick protocol<>.Type {
bb0(%0 : $_ContiguousArrayStorage<T>):
%1 = metatype $@thick T.Type // user: %2
%2 = upcast %1 : $@thick T.Type to $@thick protocol<>.Type // user: %4
strong_release %0 : $_ContiguousArrayStorage<T> // id: %3
return %2 : $@thick protocol<>.Type // id: %4
}
// Swift._ContiguousArrayStorage.init <A>(Swift._ContiguousArrayStorage<A>.Type)() -> Swift._ContiguousArrayStorage<A>
sil public_external Swift._ContiguousArrayStorage.init <A>(Swift._ContiguousArrayStorage<A>.Type)() -> Swift._ContiguousArrayStorage<A> : $@cc(method) @thin <T> (@owned _ContiguousArrayStorage<T>) -> @owned _ContiguousArrayStorage<T> {
bb0(%0 : $_ContiguousArrayStorage<T>):
return %0 : $_ContiguousArrayStorage<T> // id: %1
}
// Swift._isBridgedVerbatimToObjectiveC <A>(A.Type) -> Swift.Bool
sil public_external Swift._isBridgedVerbatimToObjectiveC <A>(A.Type) -> Swift.Bool : $@thin <T> (@thick T.Type) -> Bool {
bb0(%0 : $@thick T.Type):
// function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool
%1 = function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %3
%2 = metatype $@thick T.Type // user: %3
%3 = apply %1<T>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %4
return %3 : $Bool // id: %4
}
// Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(Swift.Optional<Swift._ContiguousArrayStorage<A>>) -> Swift._ContiguousArrayBuffer<A>
sil public_external Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(Swift._ContiguousArrayStorage<A>?) -> Swift._ContiguousArrayBuffer<A> : $@thin <T> (@owned Optional<_ContiguousArrayStorage<T>>, @thin _ContiguousArrayBuffer<T>.Type) -> @owned _ContiguousArrayBuffer<T> {
bb0(%0 : $Optional<_ContiguousArrayStorage<T>>, %1 : $@thin _ContiguousArrayBuffer<T>.Type):
// function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B
%2 = function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> () // user: %7
%3 = alloc_stack $Optional<_ContiguousArrayStorage<T>> // users: %4, %7, %10
store %0 to %3#1 : $*Optional<_ContiguousArrayStorage<T>> // id: %4
%5 = metatype $@thick HeapBuffer<_ArrayBody, T>.Type // user: %7
%6 = alloc_stack $HeapBuffer<_ArrayBody, T> // users: %7, %8, %9
%7 = apply [transparent] %2<_ContiguousArrayStorage<T>?, HeapBuffer<_ArrayBody, T>>(%6#1, %3#1, %5) : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> ()
%8 = load %6#1 : $*HeapBuffer<_ArrayBody, T> // user: %11
dealloc_stack %6#0 : $*@local_storage HeapBuffer<_ArrayBody, T> // id: %9
dealloc_stack %3#0 : $*@local_storage Optional<_ContiguousArrayStorage<T>> // id: %10
%11 = struct $_ContiguousArrayBuffer<T> (%8 : $HeapBuffer<_ArrayBody, T>) // user: %12
return %11 : $_ContiguousArrayBuffer<T> // id: %12
}
// Swift._injectValueIntoOptional <A>(A) -> Swift.Optional<A>
sil public_external [transparent] Swift._injectValueIntoOptional <A>(A) -> A? : $@thin <T> (@out Optional<T>, @in T) -> () {
bb0(%0 : $*Optional<T>, %1 : $*T):
// function_ref Swift.Optional.Some <A>(Swift.Optional<A>.Type)(A) -> Swift.Optional<A>
%2 = function_ref Swift.Optional.Some <A>(A?.Type)(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0, @thin Optional<τ_0_0>.Type) -> () // user: %6
%3 = metatype $@thin Optional<T>.Type // user: %6
%4 = alloc_stack $T // users: %5, %6, %7
copy_addr %1 to [initialization] %4#1 : $*T // id: %5
%6 = apply [transparent] %2<T>(%0, %4#1, %3) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0, @thin Optional<τ_0_0>.Type) -> ()
dealloc_stack %4#0 : $*@local_storage T // id: %7
destroy_addr %1 : $*T // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafePointer<A>
sil public_external [transparent] Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafePointer<A> : $@thin <T><U> (UnsafeMutablePointer<U>, @thin UnsafePointer<T>.Type) -> UnsafePointer<T> {
bb0(%0 : $UnsafeMutablePointer<U>, %1 : $@thin UnsafePointer<T>.Type):
%2 = struct_extract %0 : $UnsafeMutablePointer<U>, #UnsafeMutablePointer.value // user: %3
%3 = struct $UnsafePointer<T> (%2 : $Builtin.RawPointer) // user: %4
return %3 : $UnsafePointer<T> // id: %4
}
// Swift._ContiguousArrayBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<A>
sil public_external Swift._ContiguousArrayBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin <T> (@owned _ContiguousArrayBuffer<T>) -> UnsafeMutablePointer<T> {
bb0(%0 : $_ContiguousArrayBuffer<T>):
%1 = struct_extract %0 : $_ContiguousArrayBuffer<T>, #_ContiguousArrayBuffer._base // users: %2, %5, %10
%2 = struct_extract %1 : $HeapBuffer<_ArrayBody, T>, #HeapBuffer.storage // users: %4, %9, %17
// function_ref Swift.HeapBuffer.hasStorage.getter : Swift.Bool
%3 = function_ref Swift.HeapBuffer.hasStorage.getter : Swift.Bool : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> Bool // user: %5
retain_value %2 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %4
%5 = apply %3<_ArrayBody, T>(%1) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> Bool // user: %6
%6 = struct_extract %5 : $Bool, #Bool.value // user: %7
cond_br %6, bb1, bb2 // id: %7
bb1: // Preds: bb0
// function_ref Swift.HeapBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<B>
%8 = function_ref Swift.HeapBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<B> : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<τ_0_1> // user: %10
retain_value %2 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %9
%10 = apply %8<_ArrayBody, T>(%1) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<τ_0_1> // user: %11
br bb3(%10 : $UnsafeMutablePointer<T>) // id: %11
bb2: // Preds: bb0
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(nilLiteral : ()) -> Swift.UnsafeMutablePointer<A>
%12 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(nilLiteral : ()) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (@thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %14
%13 = metatype $@thin UnsafeMutablePointer<T>.Type // user: %14
%14 = apply [transparent] %12<T>(%13) : $@thin <τ_0_0> (@thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %15
br bb3(%14 : $UnsafeMutablePointer<T>) // id: %15
bb3(%16 : $UnsafeMutablePointer<T>): // Preds: bb1 bb2
release_value %2 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %17
return %16 : $UnsafeMutablePointer<T> // id: %18
}
// Swift._ContiguousArrayBuffer.count.getter : Swift.Int
sil public_external Swift._ContiguousArrayBuffer.count.getter : Swift.Int : $@cc(method) @thin <T> (@owned _ContiguousArrayBuffer<T>) -> Int {
bb0(%0 : $_ContiguousArrayBuffer<T>):
%1 = struct_extract %0 : $_ContiguousArrayBuffer<T>, #_ContiguousArrayBuffer._base // users: %2, %5, %11
%2 = struct_extract %1 : $HeapBuffer<_ArrayBody, T>, #HeapBuffer.storage // users: %4, %10, %20
// function_ref Swift.HeapBuffer.hasStorage.getter : Swift.Bool
%3 = function_ref Swift.HeapBuffer.hasStorage.getter : Swift.Bool : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> Bool // user: %5
retain_value %2 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %4
%5 = apply %3<_ArrayBody, T>(%1) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> Bool // user: %6
%6 = struct_extract %5 : $Bool, #Bool.value // user: %7
cond_br %6, bb1, bb2 // id: %7
bb1: // Preds: bb0
// function_ref Swift.HeapBuffer.value.getter : A
%8 = function_ref Swift.HeapBuffer.value.getter : A : $@cc(method) @thin <τ_0_0, τ_0_1> (@out τ_0_0, @owned HeapBuffer<τ_0_0, τ_0_1>) -> () // user: %11
%9 = alloc_stack $_ArrayBody // users: %11, %12, %14
retain_value %2 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %10
%11 = apply %8<_ArrayBody, T>(%9#1, %1) : $@cc(method) @thin <τ_0_0, τ_0_1> (@out τ_0_0, @owned HeapBuffer<τ_0_0, τ_0_1>) -> ()
%12 = struct_element_addr %9#1 : $*_ArrayBody, #_ArrayBody.count // user: %13
%13 = load %12 : $*Int // user: %15
dealloc_stack %9#0 : $*@local_storage _ArrayBody // id: %14
br bb3(%13 : $Int) // id: %15
bb2: // Preds: bb0
%16 = integer_literal $Builtin.Word, 0 // user: %17
%17 = struct $Int (%16 : $Builtin.Word) // user: %18
br bb3(%17 : $Int) // id: %18
bb3(%19 : $Int): // Preds: bb1 bb2
release_value %2 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %20
return %19 : $Int // id: %21
}
// swift_bufferAllocate
sil @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject
// Swift._bridgeToObjectiveCUnconditional <A>(A) -> Swift.AnyObject
sil public_external Swift._bridgeToObjectiveCUnconditional <A>(A) -> Swift.AnyObject : $@thin <T> (@in T) -> @owned AnyObject {
bb0(%0 : $*T):
// function_ref Swift._bridgeToObjectiveC <A>(A) -> Swift.Optional<Swift.AnyObject>
%1 = function_ref Swift._bridgeToObjectiveC <A>(A) -> Swift.AnyObject? : $@thin <τ_0_0> (@in τ_0_0) -> @owned Optional<AnyObject> // user: %4
%2 = alloc_stack $T // users: %3, %4, %5
copy_addr %0 to [initialization] %2#1 : $*T // id: %3
%4 = apply %1<T>(%2#1) : $@thin <τ_0_0> (@in τ_0_0) -> @owned Optional<AnyObject> // users: %7, %11, %12
dealloc_stack %2#0 : $*@local_storage T // id: %5
%6 = integer_literal $Builtin.Int1, -1 // users: %9, %15
%7 = enum_is_tag $Builtin.Int1, %4 : $Optional<AnyObject>, #Optional.Some!enumelt.1 // user: %9
%8 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %9
%9 = apply %8(%7, %6) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %10
cond_fail %9 : $Builtin.Int1 // id: %10
switch_enum %4 : $Optional<AnyObject>, case #Optional.Some!enumelt.1: bb1, case #Optional.None!enumelt: bb2 // id: %11
bb1: // Preds: bb0
%12 = unchecked_enum_data %4 : $Optional<AnyObject>, #Optional.Some!enumelt.1 // user: %14
destroy_addr %0 : $*T // id: %13
return %12 : $AnyObject // id: %14
bb2: // Preds: bb0
cond_fail %6 : $Builtin.Int1 // id: %15
unreachable // id: %16
}
// Swift._ContiguousArrayBuffer.subscript.getter (Swift.Int) -> A
sil public_external Swift._ContiguousArrayBuffer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <T> (@out T, Int, @owned _ContiguousArrayBuffer<T>) -> () {
bb0(%0 : $*T, %1 : $Int, %2 : $_ContiguousArrayBuffer<T>):
// function_ref Swift._ContiguousArrayBuffer._unsafeElementStorage.getter : Swift.UnsafeMutablePointer<A>
%3 = function_ref Swift._ContiguousArrayBuffer._unsafeElementStorage.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> UnsafeMutablePointer<τ_0_0> // user: %5
retain_value %2 : $_ContiguousArrayBuffer<T> // id: %4
%5 = apply %3<T>(%2) : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> UnsafeMutablePointer<τ_0_0> // user: %7
// function_ref Swift.UnsafeMutablePointer.subscript.getter (Swift.Int) -> A
%6 = function_ref Swift.UnsafeMutablePointer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, UnsafeMutablePointer<τ_0_0>) -> () // user: %7
%7 = apply [transparent] %6<T>(%0, %1, %5) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, UnsafeMutablePointer<τ_0_0>) -> ()
release_value %2 : $_ContiguousArrayBuffer<T> // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// Swift.Optional.Some <A>(Swift.Optional<A>.Type)(A) -> Swift.Optional<A>
sil public_external [transparent] Swift.Optional.Some <A>(A?.Type)(A) -> A? : $@thin <T> (@out Optional<T>, @in T, @thin Optional<T>.Type) -> () {
bb0(%0 : $*Optional<T>, %1 : $*T, %2 : $@thin Optional<T>.Type):
%3 = init_enum_data_addr %0 : $*Optional<T>, #Optional.Some!enumelt.1 // user: %4
copy_addr [take] %1 to [initialization] %3 : $*T // id: %4
inject_enum_addr %0 : $*Optional<T>, #Optional.Some!enumelt.1 // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// Swift.HeapBuffer.hasStorage.getter : Swift.Bool
sil public_external Swift.HeapBuffer.hasStorage.getter : Swift.Bool : $@cc(method) @thin <Value, Element> (@owned HeapBuffer<Value, Element>) -> Bool {
bb0(%0 : $HeapBuffer<Value, Element>):
// function_ref Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
%1 = function_ref Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %6
%2 = alloc_stack $Optional<HeapBufferStorage<Value, Element>> // users: %4, %6, %7
%3 = struct_extract %0 : $HeapBuffer<Value, Element>, #HeapBuffer.storage // user: %4
store %3 to %2#1 : $*Optional<HeapBufferStorage<Value, Element>> // id: %4
%5 = struct $_OptionalNilComparisonType () // user: %6
%6 = apply %1<HeapBufferStorage<Value, Element>>(%2#1, %5) : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %8
dealloc_stack %2#0 : $*@local_storage Optional<HeapBufferStorage<Value, Element>> // id: %7
return %6 : $Bool // id: %8
}
// Swift.HeapBuffer.value.getter : A
sil public_external Swift.HeapBuffer.value.getter : A : $@cc(method) @thin <Value, Element> (@out Value, @owned HeapBuffer<Value, Element>) -> () {
bb0(%0 : $*Value, %1 : $HeapBuffer<Value, Element>):
// function_ref Swift.HeapBuffer._value.getter : Swift.UnsafeMutablePointer<A>
%2 = function_ref Swift.HeapBuffer._value.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<τ_0_0> // user: %4
retain_value %1 : $HeapBuffer<Value, Element> // id: %3
%4 = apply %2<Value, Element>(%1) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<τ_0_0> // user: %6
// function_ref Swift.UnsafeMutablePointer.memory.getter : A
%5 = function_ref Swift.UnsafeMutablePointer.memory.getter : A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> () // user: %6
%6 = apply [transparent] %5<Value>(%0, %4) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> ()
release_value %1 : $HeapBuffer<Value, Element> // id: %7
%8 = tuple () // user: %9
return %8 : $() // id: %9
}
// Swift.HeapBufferStorage.init <A, B>(Swift.HeapBufferStorage<A, B>.Type)() -> Swift.HeapBufferStorage<A, B>
sil public_external Swift.HeapBufferStorage.init <A, B>(Swift.HeapBufferStorage<A, B>.Type)() -> Swift.HeapBufferStorage<A, B> : $@cc(method) @thin <Value, Element> (@owned HeapBufferStorage<Value, Element>) -> @owned HeapBufferStorage<Value, Element> {
bb0(%0 : $HeapBufferStorage<Value, Element>):
return %0 : $HeapBufferStorage<Value, Element> // id: %1
}
// Swift._bridgeToObjectiveC <A>(A) -> Swift.Optional<Swift.AnyObject>
sil public_external Swift._bridgeToObjectiveC <A>(A) -> Swift.AnyObject? : $@thin <T> (@in T) -> @owned Optional<AnyObject> {
bb0(%0 : $*T):
// function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool
%1 = function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %3
%2 = metatype $@thick T.Type // user: %3
%3 = apply %1<T>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %4
%4 = struct_extract %3 : $Bool, #Bool.value // user: %7
%5 = integer_literal $Builtin.Int1, -1 // user: %7
%6 = builtin_function_ref "int_expect_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %7
%7 = apply %6(%4, %5) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %8
cond_br %7, bb1, bb2 // id: %8
bb1: // Preds: bb0
%9 = alloc_stack $AnyObject // users: %14, %15, %18
// function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B
%10 = function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> () // user: %14
%11 = alloc_stack $T // users: %12, %14, %17
copy_addr %0 to [initialization] %11#1 : $*T // id: %12
%13 = metatype $@thick AnyObject.Protocol // user: %14
%14 = apply [transparent] %10<T, AnyObject>(%9#1, %11#1, %13) : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> ()
%15 = load %9#1 : $*AnyObject // user: %16
%16 = enum $Optional<AnyObject>, #Optional.Some!enumelt.1, %15 : $AnyObject // user: %19
dealloc_stack %11#0 : $*@local_storage T // id: %17
dealloc_stack %9#0 : $*@local_storage AnyObject // id: %18
br bb3(%16 : $Optional<AnyObject>) // id: %19
bb2: // Preds: bb0
// function_ref swift_bridgeNonVerbatimToObjectiveC
%20 = function_ref @swift_bridgeNonVerbatimToObjectiveC : $@thin <τ_0_0> (@in τ_0_0) -> @owned Optional<AnyObject> // user: %23
%21 = alloc_stack $T // users: %22, %23, %24
copy_addr %0 to [initialization] %21#1 : $*T // id: %22
%23 = apply %20<T>(%21#1) : $@thin <τ_0_0> (@in τ_0_0) -> @owned Optional<AnyObject> // user: %25
dealloc_stack %21#0 : $*@local_storage T // id: %24
br bb3(%23 : $Optional<AnyObject>) // id: %25
bb3(%26 : $Optional<AnyObject>): // Preds: bb1 bb2
destroy_addr %0 : $*T // id: %27
return %26 : $Optional<AnyObject> // id: %28
}
// Swift._ContiguousArrayBuffer._unsafeElementStorage.getter : Swift.UnsafeMutablePointer<A>
sil public_external Swift._ContiguousArrayBuffer._unsafeElementStorage.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin <T> (@owned _ContiguousArrayBuffer<T>) -> UnsafeMutablePointer<T> {
bb0(%0 : $_ContiguousArrayBuffer<T>):
%1 = struct_extract %0 : $_ContiguousArrayBuffer<T>, #_ContiguousArrayBuffer._base // user: %3
// function_ref Swift.HeapBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<B>
%2 = function_ref Swift.HeapBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<B> : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<τ_0_1> // user: %3
%3 = apply %2<_ArrayBody, T>(%1) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<τ_0_1> // user: %4
return %3 : $UnsafeMutablePointer<T> // id: %4
}
// Swift.UnsafeMutablePointer.subscript.getter (Swift.Int) -> A
sil public_external [transparent] Swift.UnsafeMutablePointer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <T> (@out T, Int, UnsafeMutablePointer<T>) -> () {
bb0(%0 : $*T, %1 : $Int, %2 : $UnsafeMutablePointer<T>):
// function_ref Swift.+ infix <A>(Swift.UnsafeMutablePointer<A>, Swift.Int) -> Swift.UnsafeMutablePointer<A>
%3 = function_ref Swift.+ infix <A>(Swift.UnsafeMutablePointer<A>, Swift.Int) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (UnsafeMutablePointer<τ_0_0>, Int) -> UnsafeMutablePointer<τ_0_0> // user: %4
%4 = apply [transparent] %3<T>(%2, %1) : $@thin <τ_0_0> (UnsafeMutablePointer<τ_0_0>, Int) -> UnsafeMutablePointer<τ_0_0> // user: %6
// function_ref Swift.UnsafeMutablePointer.memory.getter : A
%5 = function_ref Swift.UnsafeMutablePointer.memory.getter : A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> () // user: %6
%6 = apply [transparent] %5<T>(%0, %4) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> ()
%7 = tuple () // user: %8
return %7 : $() // id: %8
}
// Swift.HeapBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<B>
sil public_external Swift.HeapBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<B> : $@cc(method) @thin <Value, Element> (@owned HeapBuffer<Value, Element>) -> UnsafeMutablePointer<Element> {
bb0(%0 : $HeapBuffer<Value, Element>):
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafeMutablePointer<A>
%1 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0><τ_1_0> (UnsafeMutablePointer<τ_1_0>, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %20
%2 = metatype $@thin UnsafeMutablePointer<Element>.Type // user: %20
// function_ref Swift.HeapBuffer._elementOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
%3 = function_ref Swift.HeapBuffer._elementOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %5
%4 = metatype $@thin HeapBuffer<Value, Element>.Type // user: %5
%5 = apply %3<Value, Element>(%4) : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %13
// function_ref Swift.HeapBuffer._address.getter : Swift.UnsafeMutablePointer<Swift.Int8>
%6 = function_ref Swift.HeapBuffer._address.getter : Swift.UnsafeMutablePointer<Swift.Int8> : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<Int8> // user: %8
retain_value %0 : $HeapBuffer<Value, Element> // id: %7
%8 = apply %6<Value, Element>(%0) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<Int8> // user: %9
%9 = struct_extract %8 : $UnsafeMutablePointer<Int8>, #UnsafeMutablePointer.value // user: %18
%10 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %12
%11 = metatype $@thick Int8.Type // user: %12
%12 = apply %10<Int8>(%11) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %16
%13 = struct_extract %5 : $Int, #Int.value // user: %16
%14 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %16
%15 = integer_literal $Builtin.Int1, 0 // user: %16
%16 = apply %14(%13, %12, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %17
%17 = tuple_extract %16 : $(Builtin.Word, Builtin.Int1), 0 // user: %18
%18 = index_raw_pointer %9 : $Builtin.RawPointer, %17 : $Builtin.Word // user: %19
%19 = struct $UnsafeMutablePointer<Int8> (%18 : $Builtin.RawPointer) // user: %20
%20 = apply [transparent] %1<Element, Int8>(%19, %2) : $@thin <τ_0_0><τ_1_0> (UnsafeMutablePointer<τ_1_0>, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %22
release_value %0 : $HeapBuffer<Value, Element> // id: %21
return %20 : $UnsafeMutablePointer<Element> // id: %22
}
// Swift.+ infix <A>(Swift.UnsafeMutablePointer<A>, Swift.Int) -> Swift.UnsafeMutablePointer<A>
sil public_external [transparent] Swift.+ infix <A>(Swift.UnsafeMutablePointer<A>, Swift.Int) -> Swift.UnsafeMutablePointer<A> : $@thin <T> (UnsafeMutablePointer<T>, Int) -> UnsafeMutablePointer<T> {
bb0(%0 : $UnsafeMutablePointer<T>, %1 : $Int):
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A>
%2 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %15
%3 = metatype $@thin UnsafeMutablePointer<T>.Type // user: %15
%4 = struct_extract %0 : $UnsafeMutablePointer<T>, #UnsafeMutablePointer.value // user: %14
// function_ref Swift.strideof <A>(A.Type) -> Swift.Int
%5 = function_ref Swift.strideof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %7
%6 = metatype $@thick T.Type // user: %7
%7 = apply [transparent] %5<T>(%6) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %9
%8 = struct_extract %1 : $Int, #Int.value // user: %12
%9 = struct_extract %7 : $Int, #Int.value // user: %12
%10 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %12
%11 = integer_literal $Builtin.Int1, 0 // user: %12
%12 = apply %10(%8, %9, %11) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %13
%13 = tuple_extract %12 : $(Builtin.Word, Builtin.Int1), 0 // user: %14
%14 = index_raw_pointer %4 : $Builtin.RawPointer, %13 : $Builtin.Word // user: %15
%15 = apply [transparent] %2<T>(%14, %3) : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %16
return %15 : $UnsafeMutablePointer<T> // id: %16
}
// Swift.strideof <A>(A.Type) -> Swift.Int
sil public_external [transparent] Swift.strideof <A>(A.Type) -> Swift.Int : $@thin <T> (@thick T.Type) -> Int {
bb0(%0 : $@thick T.Type):
%1 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %3
%2 = metatype $@thick T.Type // user: %3
%3 = apply %1<T>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %4
%4 = struct $Int (%3 : $Builtin.Word) // user: %5
return %4 : $Int // id: %5
}
// Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafeMutablePointer<A>
sil public_external [transparent] Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafeMutablePointer<A> : $@thin <T><U> (UnsafeMutablePointer<U>, @thin UnsafeMutablePointer<T>.Type) -> UnsafeMutablePointer<T> {
bb0(%0 : $UnsafeMutablePointer<U>, %1 : $@thin UnsafeMutablePointer<T>.Type):
%2 = struct_extract %0 : $UnsafeMutablePointer<U>, #UnsafeMutablePointer.value // user: %3
%3 = struct $UnsafeMutablePointer<T> (%2 : $Builtin.RawPointer) // user: %4
return %3 : $UnsafeMutablePointer<T> // id: %4
}
// Swift.HeapBuffer._elementOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
sil public_external Swift.HeapBuffer._elementOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin <Value, Element> (@thin HeapBuffer<Value, Element>.Type) -> Int {
bb0(%0 : $@thin HeapBuffer<Value, Element>.Type):
// function_ref Swift.HeapBuffer._valueOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
%1 = function_ref Swift.HeapBuffer._valueOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %2
%2 = apply %1<Value, Element>(%0) : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %7
// function_ref Swift.sizeof <A>(A.Type) -> Swift.Int
%3 = function_ref Swift.sizeof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %5
%4 = metatype $@thick Value.Type // user: %5
%5 = apply [transparent] %3<Value>(%4) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %8
%6 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %10, %18
%7 = struct_extract %2 : $Int, #Int.value // user: %10
%8 = struct_extract %5 : $Int, #Int.value // user: %10
%9 = integer_literal $Builtin.Int1, -1 // users: %10, %18
%10 = apply %6(%7, %8, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %11, %12
%11 = tuple_extract %10 : $(Builtin.Word, Builtin.Int1), 0 // user: %18
%12 = tuple_extract %10 : $(Builtin.Word, Builtin.Int1), 1 // user: %13
cond_fail %12 : $Builtin.Int1 // id: %13
// function_ref Swift.alignof <A>(A.Type) -> Swift.Int
%14 = function_ref Swift.alignof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %16
%15 = metatype $@thick Element.Type // user: %16
%16 = apply [transparent] %14<Element>(%15) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %17
%17 = struct_extract %16 : $Int, #Int.value // users: %18, %27
%18 = apply %6(%11, %17, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %19, %20
%19 = tuple_extract %18 : $(Builtin.Word, Builtin.Int1), 0 // user: %25
%20 = tuple_extract %18 : $(Builtin.Word, Builtin.Int1), 1 // user: %21
cond_fail %20 : $Builtin.Int1 // id: %21
%22 = integer_literal $Builtin.Word, 1 // users: %25, %27
%23 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %25, %27
%24 = integer_literal $Builtin.Int1, 0 // users: %25, %27
%25 = apply %23(%19, %22, %24) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %26
%26 = tuple_extract %25 : $(Builtin.Word, Builtin.Int1), 0 // user: %33
%27 = apply %23(%17, %22, %24) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %28
%28 = tuple_extract %27 : $(Builtin.Word, Builtin.Int1), 0 // user: %31
%29 = integer_literal $Builtin.Word, -1 // user: %31
%30 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %31
%31 = apply %30(%28, %29) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %33
%32 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %33
%33 = apply %32(%26, %31) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %34
%34 = struct $Int (%33 : $Builtin.Word) // user: %35
return %34 : $Int // id: %35
}
// Swift.HeapBuffer._address.getter : Swift.UnsafeMutablePointer<Swift.Int8>
sil public_external Swift.HeapBuffer._address.getter : Swift.UnsafeMutablePointer<Swift.Int8> : $@cc(method) @thin <Value, Element> (@owned HeapBuffer<Value, Element>) -> UnsafeMutablePointer<Int8> {
bb0(%0 : $HeapBuffer<Value, Element>):
// function_ref Swift.HeapBuffer._nativeObject.getter : Builtin.NativeObject
%1 = function_ref Swift.HeapBuffer._nativeObject.getter : Builtin.NativeObject : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> @owned Builtin.NativeObject // user: %3
retain_value %0 : $HeapBuffer<Value, Element> // id: %2
%3 = apply %1<Value, Element>(%0) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> @owned Builtin.NativeObject // users: %4, %6
%4 = ref_to_raw_pointer %3 : $Builtin.NativeObject to $Builtin.RawPointer // user: %5
%5 = struct $UnsafeMutablePointer<Int8> (%4 : $Builtin.RawPointer) // user: %8
strong_release %3 : $Builtin.NativeObject // id: %6
release_value %0 : $HeapBuffer<Value, Element> // id: %7
return %5 : $UnsafeMutablePointer<Int8> // id: %8
}
// Swift.HeapBuffer._valueOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
sil public_external Swift.HeapBuffer._valueOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin <Value, Element> (@thin HeapBuffer<Value, Element>.Type) -> Int {
bb0(%0 : $@thin HeapBuffer<Value, Element>.Type):
%1 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %3
%2 = metatype $@thick HeapObject.Type // user: %3
%3 = apply %1<HeapObject>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %10
// function_ref Swift.alignof <A>(A.Type) -> Swift.Int
%4 = function_ref Swift.alignof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %6
%5 = metatype $@thick Value.Type // user: %6
%6 = apply [transparent] %4<Value>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %8
%7 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %10
%8 = struct_extract %6 : $Int, #Int.value // users: %10, %19
%9 = integer_literal $Builtin.Int1, -1 // user: %10
%10 = apply %7(%3, %8, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %11, %12
%11 = tuple_extract %10 : $(Builtin.Word, Builtin.Int1), 0 // user: %17
%12 = tuple_extract %10 : $(Builtin.Word, Builtin.Int1), 1 // user: %13
cond_fail %12 : $Builtin.Int1 // id: %13
%14 = integer_literal $Builtin.Word, 1 // users: %17, %19
%15 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %17, %19
%16 = integer_literal $Builtin.Int1, 0 // users: %17, %19
%17 = apply %15(%11, %14, %16) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %18
%18 = tuple_extract %17 : $(Builtin.Word, Builtin.Int1), 0 // user: %25
%19 = apply %15(%8, %14, %16) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %20
%20 = tuple_extract %19 : $(Builtin.Word, Builtin.Int1), 0 // user: %23
%21 = integer_literal $Builtin.Word, -1 // user: %23
%22 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %23
%23 = apply %22(%20, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %25
%24 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %25
%25 = apply %24(%18, %23) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %26
%26 = struct $Int (%25 : $Builtin.Word) // user: %27
return %26 : $Int // id: %27
}
// Swift.alignof <A>(A.Type) -> Swift.Int
sil public_external [transparent] Swift.alignof <A>(A.Type) -> Swift.Int : $@thin <T> (@thick T.Type) -> Int {
bb0(%0 : $@thick T.Type):
%1 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %3
%2 = metatype $@thick T.Type // user: %3
%3 = apply %1<T>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %4
%4 = struct $Int (%3 : $Builtin.Word) // user: %5
return %4 : $Int // id: %5
}
// Swift.HeapBuffer._nativeObject.getter : Builtin.NativeObject
sil public_external Swift.HeapBuffer._nativeObject.getter : Builtin.NativeObject : $@cc(method) @thin <Value, Element> (@owned HeapBuffer<Value, Element>) -> @owned Builtin.NativeObject {
bb0(%0 : $HeapBuffer<Value, Element>):
// function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B
%1 = function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> () // user: %7
%2 = alloc_stack $Optional<HeapBufferStorage<Value, Element>> // users: %4, %7, %10
%3 = struct_extract %0 : $HeapBuffer<Value, Element>, #HeapBuffer.storage // user: %4
store %3 to %2#1 : $*Optional<HeapBufferStorage<Value, Element>> // id: %4
%5 = metatype $@thick Builtin.NativeObject.Type // user: %7
%6 = alloc_stack $Builtin.NativeObject // users: %7, %8, %9
%7 = apply [transparent] %1<HeapBufferStorage<Value, Element>?, Builtin.NativeObject>(%6#1, %2#1, %5) : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> ()
%8 = load %6#1 : $*Builtin.NativeObject // user: %11
dealloc_stack %6#0 : $*@local_storage Builtin.NativeObject // id: %9
dealloc_stack %2#0 : $*@local_storage Optional<HeapBufferStorage<Value, Element>> // id: %10
return %8 : $Builtin.NativeObject // id: %11
}
// swift_bridgeNonVerbatimToObjectiveC
sil @swift_bridgeNonVerbatimToObjectiveC : $@thin <τ_0_0> (@in τ_0_0) -> @owned Optional<AnyObject>
// Swift.HeapBuffer._value.getter : Swift.UnsafeMutablePointer<A>
sil public_external Swift.HeapBuffer._value.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin <Value, Element> (@owned HeapBuffer<Value, Element>) -> UnsafeMutablePointer<Value> {
bb0(%0 : $HeapBuffer<Value, Element>):
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafeMutablePointer<A>
%1 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0><τ_1_0> (UnsafeMutablePointer<τ_1_0>, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %20
%2 = metatype $@thin UnsafeMutablePointer<Value>.Type // user: %20
// function_ref Swift.HeapBuffer._valueOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
%3 = function_ref Swift.HeapBuffer._valueOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %5
%4 = metatype $@thin HeapBuffer<Value, Element>.Type // user: %5
%5 = apply %3<Value, Element>(%4) : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %13
// function_ref Swift.HeapBuffer._address.getter : Swift.UnsafeMutablePointer<Swift.Int8>
%6 = function_ref Swift.HeapBuffer._address.getter : Swift.UnsafeMutablePointer<Swift.Int8> : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<Int8> // user: %8
retain_value %0 : $HeapBuffer<Value, Element> // id: %7
%8 = apply %6<Value, Element>(%0) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<Int8> // user: %9
%9 = struct_extract %8 : $UnsafeMutablePointer<Int8>, #UnsafeMutablePointer.value // user: %18
%10 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %12
%11 = metatype $@thick Int8.Type // user: %12
%12 = apply %10<Int8>(%11) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %16
%13 = struct_extract %5 : $Int, #Int.value // user: %16
%14 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %16
%15 = integer_literal $Builtin.Int1, 0 // user: %16
%16 = apply %14(%13, %12, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %17
%17 = tuple_extract %16 : $(Builtin.Word, Builtin.Int1), 0 // user: %18
%18 = index_raw_pointer %9 : $Builtin.RawPointer, %17 : $Builtin.Word // user: %19
%19 = struct $UnsafeMutablePointer<Int8> (%18 : $Builtin.RawPointer) // user: %20
%20 = apply [transparent] %1<Value, Int8>(%19, %2) : $@thin <τ_0_0><τ_1_0> (UnsafeMutablePointer<τ_1_0>, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %22
release_value %0 : $HeapBuffer<Value, Element> // id: %21
return %20 : $UnsafeMutablePointer<Value> // id: %22
}
// Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(nilLiteral : ()) -> Swift.UnsafeMutablePointer<A>
sil public_external [transparent] Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(nilLiteral : ()) -> Swift.UnsafeMutablePointer<A> : $@thin <T> (@thin UnsafeMutablePointer<T>.Type) -> UnsafeMutablePointer<T> {
bb0(%0 : $@thin UnsafeMutablePointer<T>.Type):
// function_ref Swift.UnsafeMutablePointer.null <A>(Swift.UnsafeMutablePointer<A>.Type)() -> Swift.UnsafeMutablePointer<A>
%1 = function_ref Swift.UnsafeMutablePointer.null <A>(Swift.UnsafeMutablePointer<A>.Type)() -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (@thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %3
%2 = metatype $@thin UnsafeMutablePointer<T>.Type // user: %3
%3 = apply [transparent] %1<T>(%2) : $@thin <τ_0_0> (@thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %4
return %3 : $UnsafeMutablePointer<T> // id: %4
}
// Swift.UnsafeMutablePointer.null <A>(Swift.UnsafeMutablePointer<A>.Type)() -> Swift.UnsafeMutablePointer<A>
sil public_external [transparent] Swift.UnsafeMutablePointer.null <A>(Swift.UnsafeMutablePointer<A>.Type)() -> Swift.UnsafeMutablePointer<A> : $@thin <T> (@thin UnsafeMutablePointer<T>.Type) -> UnsafeMutablePointer<T> {
bb0(%0 : $@thin UnsafeMutablePointer<T>.Type):
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)() -> Swift.UnsafeMutablePointer<A>
%1 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)() -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (@thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %3
%2 = metatype $@thin UnsafeMutablePointer<T>.Type // user: %3
%3 = apply [transparent] %1<T>(%2) : $@thin <τ_0_0> (@thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %4
return %3 : $UnsafeMutablePointer<T> // id: %4
}
// Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)() -> Swift.UnsafeMutablePointer<A>
sil public_external [transparent] Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)() -> Swift.UnsafeMutablePointer<A> : $@thin <T> (@thin UnsafeMutablePointer<T>.Type) -> UnsafeMutablePointer<T> {
bb0(%0 : $@thin UnsafeMutablePointer<T>.Type):
%1 = builtin_function_ref "inttoptr_Word" : $@thin (Builtin.Word) -> Builtin.RawPointer // user: %3
%2 = integer_literal $Builtin.Word, 0 // user: %3
%3 = apply %1(%2) : $@thin (Builtin.Word) -> Builtin.RawPointer // user: %4
%4 = struct $UnsafeMutablePointer<T> (%3 : $Builtin.RawPointer) // user: %5
return %4 : $UnsafeMutablePointer<T> // id: %5
}
// Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafePointer<A>
sil public_external [transparent] Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafePointer<A> : $@thin <T> (Builtin.RawPointer, @thin UnsafePointer<T>.Type) -> UnsafePointer<T> {
bb0(%0 : $Builtin.RawPointer, %1 : $@thin UnsafePointer<T>.Type):
%2 = struct $UnsafePointer<T> (%0 : $Builtin.RawPointer) // user: %3
return %2 : $UnsafePointer<T> // id: %3
}
// Swift.Range.generate <A : Swift.ForwardIndexType>(Swift.Range<A>)() -> Swift.RangeGenerator<A>
sil public_external Swift.Range.generate <A : Swift.ForwardIndexType>(Swift.Range<A>)() -> Swift.RangeGenerator<A> : $@cc(method) @thin <T where T : ForwardIndexType, T.Distance : _SignedIntegerType, T.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out RangeGenerator<T>, @in Range<T>) -> () {
bb0(%0 : $*RangeGenerator<T>, %1 : $*Range<T>):
// function_ref Swift.RangeGenerator.init <A : Swift.ForwardIndexType>(Swift.RangeGenerator<A>.Type)(Swift.Range<A>) -> Swift.RangeGenerator<A>
%2 = function_ref Swift.RangeGenerator.init <A : Swift.ForwardIndexType>(Swift.RangeGenerator<A>.Type)(Swift.Range<A>) -> Swift.RangeGenerator<A> : $@thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out RangeGenerator<τ_0_0>, @in Range<τ_0_0>, @thin RangeGenerator<τ_0_0>.Type) -> () // user: %6
%3 = metatype $@thin RangeGenerator<T>.Type // user: %6
%4 = alloc_stack $Range<T> // users: %5, %6, %7
copy_addr %1 to [initialization] %4#1 : $*Range<T> // id: %5
%6 = apply [transparent] %2<T, T.Distance, T.Distance.IntegerLiteralType, T._DisabledRangeIndex>(%0, %4#1, %3) : $@thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out RangeGenerator<τ_0_0>, @in Range<τ_0_0>, @thin RangeGenerator<τ_0_0>.Type) -> ()
dealloc_stack %4#0 : $*@local_storage Range<T> // id: %7
destroy_addr %1 : $*Range<T> // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// Swift.indices <A : Swift.CollectionType>(A) -> Swift.Range<A.Index>
sil public_external Swift.indices <A : Swift.CollectionType>(A) -> Swift.Range<A.Index> : $@thin <C where C : CollectionType, C.Generator : GeneratorType, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Range<C.Index>, @in C) -> () {
bb0(%0 : $*Range<C.Index>, %1 : $*C):
// function_ref Swift.Range.init <A : Swift.ForwardIndexType>(Swift.Range<A>.Type)(start : A, end : A) -> Swift.Range<A>
%2 = function_ref Swift.Range.init <A : Swift.ForwardIndexType>(Swift.Range<A>.Type)(start : A, end : A) -> Swift.Range<A> : $@thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Range<τ_0_0>, @in τ_0_0, @in τ_0_0, @thin Range<τ_0_0>.Type) -> () // user: %10
%3 = metatype $@thin Range<C.Index>.Type // user: %10
%4 = alloc_stack $C.Index // users: %6, %10, %12
%5 = witness_method $C, #_CollectionType.startIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %6
%6 = apply %5<C, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%4#1, %1) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
%7 = alloc_stack $C.Index // users: %9, %10, %11
%8 = witness_method $C, #_CollectionType.endIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %9
%9 = apply %8<C, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%7#1, %1) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
%10 = apply [transparent] %2<C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex>(%0, %4#1, %7#1, %3) : $@thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Range<τ_0_0>, @in τ_0_0, @in τ_0_0, @thin Range<τ_0_0>.Type) -> ()
dealloc_stack %7#0 : $*@local_storage C.Index // id: %11
dealloc_stack %4#0 : $*@local_storage C.Index // id: %12
destroy_addr %1 : $*C // id: %13
%14 = tuple () // user: %15
return %14 : $() // id: %15
}
// Swift.RangeGenerator.next <A : Swift.ForwardIndexType>(inout Swift.RangeGenerator<A>)() -> Swift.Optional<A>
sil public_external Swift.RangeGenerator.next <A : Swift.ForwardIndexType>(inout Swift.RangeGenerator<A>)() -> A? : $@cc(method) @thin <T where T : ForwardIndexType, T.Distance : _SignedIntegerType, T.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<T>, @inout RangeGenerator<T>) -> () {
bb0(%0 : $*Optional<T>, %1 : $*RangeGenerator<T>):
%2 = metatype $@thick T.Type // user: %10
%3 = witness_method $T, #Equatable."=="!1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : Equatable> (@in τ_0_0, @in τ_0_0, @thick τ_0_0.Type) -> Bool // user: %10
%4 = alloc_stack $T // users: %6, %10, %13
%5 = struct_element_addr %1 : $*RangeGenerator<T>, #RangeGenerator.startIndex // users: %6, %21
copy_addr %5 to [initialization] %4#1 : $*T // id: %6
%7 = alloc_stack $T // users: %9, %10, %12
%8 = struct_element_addr %1 : $*RangeGenerator<T>, #RangeGenerator.endIndex // user: %9
copy_addr %8 to [initialization] %7#1 : $*T // id: %9
%10 = apply %3<T>(%4#1, %7#1, %2) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : Equatable> (@in τ_0_0, @in τ_0_0, @thick τ_0_0.Type) -> Bool // user: %11
%11 = struct_extract %10 : $Bool, #Bool.value // user: %14
dealloc_stack %7#0 : $*@local_storage T // id: %12
dealloc_stack %4#0 : $*@local_storage T // id: %13
cond_br %11, bb1, bb2 // id: %14
bb1: // Preds: bb0
// function_ref Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
%15 = function_ref Swift.Optional.None <A>(A?.Type) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %17
%16 = metatype $@thin Optional<T>.Type // user: %17
%17 = apply [transparent] %15<T>(%0, %16) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
br bb3 // id: %18
bb2: // Preds: bb0
%19 = alloc_stack $T // users: %21, %23, %24
// function_ref Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A
%20 = function_ref Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A : $@thin <τ_0_0 where τ_0_0 : _Incrementable> (@out τ_0_0, @inout τ_0_0) -> () // user: %21
%21 = apply [transparent] %20<T>(%19#1, %5) : $@thin <τ_0_0 where τ_0_0 : _Incrementable> (@out τ_0_0, @inout τ_0_0) -> ()
// function_ref Swift._injectValueIntoOptional <A>(A) -> Swift.Optional<A>
%22 = function_ref Swift._injectValueIntoOptional <A>(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> () // user: %23
%23 = apply [transparent] %22<T>(%0, %19#1) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> ()
dealloc_stack %19#0 : $*@local_storage T // id: %24
br bb3 // id: %25
bb3: // Preds: bb1 bb2
%26 = tuple () // user: %27
return %26 : $() // id: %27
}
// Swift.LazyForwardCollection.init <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>.Type)(A) -> Swift.LazyForwardCollection<A>
sil public_external Swift.LazyForwardCollection.init <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>.Type)(A) -> Swift.LazyForwardCollection<A> : $@thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<S>, @in S, @thin LazyForwardCollection<S>.Type) -> () {
bb0(%0 : $*LazyForwardCollection<S>, %1 : $*S, %2 : $@thin LazyForwardCollection<S>.Type):
%3 = alloc_stack $LazyForwardCollection<S> // users: %6, %10, %12
%4 = alloc_stack $S // users: %5, %7, %8
copy_addr %1 to [initialization] %4#1 : $*S // id: %5
%6 = struct_element_addr %3#1 : $*LazyForwardCollection<S>, #LazyForwardCollection._base // user: %7
copy_addr [take] %4#1 to [initialization] %6 : $*S // id: %7
dealloc_stack %4#0 : $*@local_storage S // id: %8
destroy_addr %1 : $*S // id: %9
copy_addr [take] %3#1 to [initialization] %0 : $*LazyForwardCollection<S> // id: %10
%11 = tuple () // user: %13
dealloc_stack %3#0 : $*@local_storage LazyForwardCollection<S> // id: %12
return %11 : $() // id: %13
}
// Swift.MapCollectionView.init <A : Swift.CollectionType, B>(Swift.MapCollectionView<A, B>.Type)(_base : A, _transform : (A.Generator.Element) -> B) -> Swift.MapCollectionView<A, B>
sil public_external Swift.MapCollectionView.init <A : Swift.CollectionType, B>(Swift.MapCollectionView<A, B>.Type)(_base : A, _transform : (A.Generator.Element) -> B) -> Swift.MapCollectionView<A, B> : $@thin <Base, T where Base : CollectionType, Base.Generator : GeneratorType, Base.Index : ForwardIndexType, Base.Index.Distance : _SignedIntegerType, Base.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out MapCollectionView<Base, T>, @in Base, @owned @callee_owned (@out T, @in Base.Generator.Element) -> (), @thin MapCollectionView<Base, T>.Type) -> () {
bb0(%0 : $*MapCollectionView<Base, T>, %1 : $*Base, %2 : $@callee_owned (@out T, @in Base.Generator.Element) -> (), %3 : $@thin MapCollectionView<Base, T>.Type):
%4 = struct_element_addr %0 : $*MapCollectionView<Base, T>, #MapCollectionView._base // user: %5
copy_addr [take] %1 to [initialization] %4 : $*Base // id: %5
%6 = struct_element_addr %0 : $*MapCollectionView<Base, T>, #MapCollectionView._transform // user: %7
store %2 to %6 : $*@callee_owned (@out T, @in Base.Generator.Element) -> () // id: %7
%8 = tuple () // user: %9
return %8 : $() // id: %9
}
// Swift.RangeGenerator.init <A : Swift.ForwardIndexType>(Swift.RangeGenerator<A>.Type)(Swift.Range<A>) -> Swift.RangeGenerator<A>
sil public_external [transparent] Swift.RangeGenerator.init <A : Swift.ForwardIndexType>(Swift.RangeGenerator<A>.Type)(Swift.Range<A>) -> Swift.RangeGenerator<A> : $@thin <T where T : ForwardIndexType, T.Distance : _SignedIntegerType, T.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out RangeGenerator<T>, @in Range<T>, @thin RangeGenerator<T>.Type) -> () {
bb0(%0 : $*RangeGenerator<T>, %1 : $*Range<T>, %2 : $@thin RangeGenerator<T>.Type):
%3 = alloc_stack $RangeGenerator<T> // users: %9, %18, %23, %25
%4 = alloc_stack $Range<T> // users: %5, %8, %12
copy_addr %1 to [initialization] %4#1 : $*Range<T> // id: %5
// function_ref Swift.Range.startIndex.getter : A
%6 = function_ref Swift.Range.startIndex.getter : A : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0, @in Range<τ_0_0>) -> () // user: %8
%7 = alloc_stack $T // users: %8, %10, %11
%8 = apply %6<T, T.Distance, T.Distance.IntegerLiteralType, T._DisabledRangeIndex>(%7#1, %4#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0, @in Range<τ_0_0>) -> ()
%9 = struct_element_addr %3#1 : $*RangeGenerator<T>, #RangeGenerator.startIndex // user: %10
copy_addr [take] %7#1 to [initialization] %9 : $*T // id: %10
dealloc_stack %7#0 : $*@local_storage T // id: %11
dealloc_stack %4#0 : $*@local_storage Range<T> // id: %12
%13 = alloc_stack $Range<T> // users: %14, %17, %21
copy_addr %1 to [initialization] %13#1 : $*Range<T> // id: %14
// function_ref Swift.Range.endIndex.getter : A
%15 = function_ref Swift.Range.endIndex.getter : A : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0, @in Range<τ_0_0>) -> () // user: %17
%16 = alloc_stack $T // users: %17, %19, %20
%17 = apply %15<T, T.Distance, T.Distance.IntegerLiteralType, T._DisabledRangeIndex>(%16#1, %13#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0, @in Range<τ_0_0>) -> ()
%18 = struct_element_addr %3#1 : $*RangeGenerator<T>, #RangeGenerator.endIndex // user: %19
copy_addr [take] %16#1 to [initialization] %18 : $*T // id: %19
dealloc_stack %16#0 : $*@local_storage T // id: %20
dealloc_stack %13#0 : $*@local_storage Range<T> // id: %21
destroy_addr %1 : $*Range<T> // id: %22
copy_addr [take] %3#1 to [initialization] %0 : $*RangeGenerator<T> // id: %23
%24 = tuple () // user: %26
dealloc_stack %3#0 : $*@local_storage RangeGenerator<T> // id: %25
return %24 : $() // id: %26
}
// Swift.Range.init <A : Swift.ForwardIndexType>(Swift.Range<A>.Type)(start : A, end : A) -> Swift.Range<A>
sil public_external [transparent] Swift.Range.init <A : Swift.ForwardIndexType>(Swift.Range<A>.Type)(start : A, end : A) -> Swift.Range<A> : $@thin <T where T : ForwardIndexType, T.Distance : _SignedIntegerType, T.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Range<T>, @in T, @in T, @thin Range<T>.Type) -> () {
bb0(%0 : $*Range<T>, %1 : $*T, %2 : $*T, %3 : $@thin Range<T>.Type):
%4 = alloc_stack $Range<T> // users: %7, %12, %17, %19
%5 = alloc_stack $T // users: %6, %8, %9
copy_addr %1 to [initialization] %5#1 : $*T // id: %6
%7 = struct_element_addr %4#1 : $*Range<T>, #Range._startIndex // user: %8
copy_addr [take] %5#1 to [initialization] %7 : $*T // id: %8
dealloc_stack %5#0 : $*@local_storage T // id: %9
%10 = alloc_stack $T // users: %11, %13, %14
copy_addr %2 to [initialization] %10#1 : $*T // id: %11
%12 = struct_element_addr %4#1 : $*Range<T>, #Range._endIndex // user: %13
copy_addr [take] %10#1 to [initialization] %12 : $*T // id: %13
dealloc_stack %10#0 : $*@local_storage T // id: %14
destroy_addr %2 : $*T // id: %15
destroy_addr %1 : $*T // id: %16
copy_addr [take] %4#1 to [initialization] %0 : $*Range<T> // id: %17
%18 = tuple () // user: %20
dealloc_stack %4#0 : $*@local_storage Range<T> // id: %19
return %18 : $() // id: %20
}
// Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A
sil public_external [transparent] Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A : $@thin <T where T : _Incrementable> (@out T, @inout T) -> () {
bb0(%0 : $*T, %1 : $*T):
%2 = alloc_stack $T // users: %3, %9, %11
copy_addr %1 to [initialization] %2#1 : $*T // id: %3
%4 = witness_method $T, #_Incrementable.successor!1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _Incrementable> (@out τ_0_0, @inout τ_0_0) -> () // user: %6
%5 = alloc_stack $T // users: %6, %7, %8
%6 = apply %4<T>(%5#1, %1) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _Incrementable> (@out τ_0_0, @inout τ_0_0) -> ()
copy_addr [take] %5#1 to %1 : $*T // id: %7
dealloc_stack %5#0 : $*@local_storage T // id: %8
copy_addr [take] %2#1 to [initialization] %0 : $*T // id: %9
%10 = tuple () // user: %12
dealloc_stack %2#0 : $*@local_storage T // id: %11
return %10 : $() // id: %12
}
// Swift.Range.startIndex.getter : A
sil public_external Swift.Range.startIndex.getter : A : $@cc(method) @thin <T where T : ForwardIndexType, T.Distance : _SignedIntegerType, T.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out T, @in Range<T>) -> () {
bb0(%0 : $*T, %1 : $*Range<T>):
%2 = struct_element_addr %1 : $*Range<T>, #Range._startIndex // user: %3
copy_addr %2 to [initialization] %0 : $*T // id: %3
destroy_addr %1 : $*Range<T> // id: %4
%5 = tuple () // user: %6
return %5 : $() // id: %6
}
// Swift.Range.endIndex.getter : A
sil public_external Swift.Range.endIndex.getter : A : $@cc(method) @thin <T where T : ForwardIndexType, T.Distance : _SignedIntegerType, T.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out T, @in Range<T>) -> () {
bb0(%0 : $*T, %1 : $*Range<T>):
%2 = struct_element_addr %1 : $*Range<T>, #Range._endIndex // user: %3
copy_addr %2 to [initialization] %0 : $*T // id: %3
destroy_addr %1 : $*Range<T> // id: %4
%5 = tuple () // user: %6
return %5 : $() // id: %6
}
// Swift.EnumerateGenerator.init <A : Swift.GeneratorType>(Swift.EnumerateGenerator<A>.Type)(A) -> Swift.EnumerateGenerator<A>
sil public_external Swift.EnumerateGenerator.init <A : Swift.GeneratorType>(Swift.EnumerateGenerator<A>.Type)(A) -> Swift.EnumerateGenerator<A> : $@thin <Base where Base : GeneratorType> (@out EnumerateGenerator<Base>, @in Base, @thin EnumerateGenerator<Base>.Type) -> () {
bb0(%0 : $*EnumerateGenerator<Base>, %1 : $*Base, %2 : $@thin EnumerateGenerator<Base>.Type):
%3 = alloc_stack $EnumerateGenerator<Base> // users: %6, %11, %14, %16
%4 = alloc_stack $Base // users: %5, %7, %8
copy_addr %1 to [initialization] %4#1 : $*Base // id: %5
%6 = struct_element_addr %3#1 : $*EnumerateGenerator<Base>, #EnumerateGenerator.base // user: %7
copy_addr [take] %4#1 to [initialization] %6 : $*Base // id: %7
dealloc_stack %4#0 : $*@local_storage Base // id: %8
%9 = integer_literal $Builtin.Word, 0 // user: %10
%10 = struct $Int (%9 : $Builtin.Word) // user: %12
%11 = struct_element_addr %3#1 : $*EnumerateGenerator<Base>, #EnumerateGenerator.count // user: %12
store %10 to %11 : $*Int // id: %12
destroy_addr %1 : $*Base // id: %13
copy_addr [take] %3#1 to [initialization] %0 : $*EnumerateGenerator<Base> // id: %14
%15 = tuple () // user: %17
dealloc_stack %3#0 : $*@local_storage EnumerateGenerator<Base> // id: %16
return %15 : $() // id: %17
}
// Swift.EnumerateSequence.init <A : Swift.SequenceType>(Swift.EnumerateSequence<A>.Type)(A) -> Swift.EnumerateSequence<A>
sil public_external Swift.EnumerateSequence.init <A : Swift.SequenceType>(Swift.EnumerateSequence<A>.Type)(A) -> Swift.EnumerateSequence<A> : $@thin <Base where Base : SequenceType, Base.Generator : GeneratorType> (@out EnumerateSequence<Base>, @in Base, @thin EnumerateSequence<Base>.Type) -> () {
bb0(%0 : $*EnumerateSequence<Base>, %1 : $*Base, %2 : $@thin EnumerateSequence<Base>.Type):
%3 = alloc_stack $EnumerateSequence<Base> // users: %6, %10, %12
%4 = alloc_stack $Base // users: %5, %7, %8
copy_addr %1 to [initialization] %4#1 : $*Base // id: %5
%6 = struct_element_addr %3#1 : $*EnumerateSequence<Base>, #EnumerateSequence.base // user: %7
copy_addr [take] %4#1 to [initialization] %6 : $*Base // id: %7
dealloc_stack %4#0 : $*@local_storage Base // id: %8
destroy_addr %1 : $*Base // id: %9
copy_addr [take] %3#1 to [initialization] %0 : $*EnumerateSequence<Base> // id: %10
%11 = tuple () // user: %13
dealloc_stack %3#0 : $*@local_storage EnumerateSequence<Base> // id: %12
return %11 : $() // id: %13
}
// Swift.== infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
sil public_external Swift.== infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <T> (@in Optional<T>, _OptionalNilComparisonType) -> Bool {
bb0(%0 : $*Optional<T>, %1 : $_OptionalNilComparisonType):
%2 = alloc_stack $Optional<T> // users: %3, %4, %5, %13
copy_addr %0 to [initialization] %2#1 : $*Optional<T> // id: %3
switch_enum_addr %2#1 : $*Optional<T>, case #Optional.Some!enumelt.1: bb1, case #Optional.None!enumelt: bb2 // id: %4
bb1: // Preds: bb0
%5 = unchecked_take_enum_data_addr %2#1 : $*Optional<T>, #Optional.Some!enumelt.1 // user: %6
destroy_addr %5 : $*T // id: %6
%7 = integer_literal $Builtin.Int1, 0 // user: %8
br bb3(%7 : $Builtin.Int1) // id: %8
bb2: // Preds: bb0
%9 = integer_literal $Builtin.Int1, -1 // user: %10
br bb3(%9 : $Builtin.Int1) // id: %10
bb3(%11 : $Builtin.Int1): // Preds: bb1 bb2
%12 = struct $Bool (%11 : $Builtin.Int1) // user: %15
dealloc_stack %2#0 : $*@local_storage Optional<T> // id: %13
destroy_addr %0 : $*Optional<T> // id: %14
return %12 : $Bool // id: %15
}
// Swift._preconditionOptionalHasValue <A>(inout Swift.Optional<A>) -> ()
sil public_external [transparent] Swift._preconditionOptionalHasValue <A>(inout A?) -> () : $@thin <T> (@inout Optional<T>) -> () {
bb0(%0 : $*Optional<T>):
%1 = integer_literal $Builtin.Int1, -1 // user: %10
// function_ref Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
%2 = function_ref Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %6
%3 = alloc_stack $Optional<T> // users: %4, %6, %7
copy_addr %0 to [initialization] %3#1 : $*Optional<T> // id: %4
%5 = struct $_OptionalNilComparisonType () // user: %6
%6 = apply %2<T>(%3#1, %5) : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %9
dealloc_stack %3#0 : $*@local_storage Optional<T> // id: %7
%8 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %10
%9 = struct_extract %6 : $Bool, #Bool.value // user: %10
%10 = apply %8(%9, %1) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %11
cond_fail %10 : $Builtin.Int1 // id: %11
%12 = tuple () // user: %13
return %12 : $() // id: %13
}
// specialization <Swift.Int> of Swift.Array.convertFromHeapArray <A>(Swift.Array<A>.Type)(Builtin.RawPointer, owner : Builtin.NativeObject, count : Builtin.Word) -> Swift.Array<A>
sil shared [readonly] specialization <Swift.Int> of Swift.Array.convertFromHeapArray <A>([A].Type)(Builtin.RawPointer, owner : Builtin.NativeObject, count : Builtin.Word) -> [A] : $@thin (Builtin.RawPointer, @owned Builtin.NativeObject, Builtin.Word, @thin Array<Int>.Type) -> @owned Array<Int> {
bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.NativeObject, %2 : $Builtin.Word, %3 : $@thin Array<Int>.Type):
%4 = integer_literal $Builtin.Int1, -1 // users: %13, %22, %29, %66, %81, %86, %96, %100, %124, %133, %151, %180, %213
%5 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %7, %9, %18, %20, %61, %80, %120, %122, %129, %131, %209, %211
%6 = metatype $@thick Builtin.RawPointer.Type // user: %7
%7 = apply %5<Builtin.RawPointer>(%6) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %11
%8 = metatype $@thick UnsafeMutablePointer<Int>.Type // user: %9
%9 = apply %5<UnsafeMutablePointer<Int>>(%8) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %11
%10 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %11, %21, %37, %40, %42, %48, %123, %132, %155, %182, %199, %212
%11 = apply %10(%7, %9) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %13
%12 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %13, %22, %29, %124, %133, %180, %213
%13 = apply %12(%11, %4) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %14
cond_fail %13 : $Builtin.Int1 // id: %14
%15 = unchecked_trivial_bit_cast %0 : $Builtin.RawPointer to $UnsafeMutablePointer<Int> // user: %16
%16 = struct_extract %15 : $UnsafeMutablePointer<Int>, #UnsafeMutablePointer.value // user: %194
%17 = metatype $@thick Builtin.Word.Type // user: %18
%18 = apply %5<Builtin.Word>(%17) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %21
%19 = metatype $@thick Int.Type // users: %20, %32, %85
%20 = apply %5<Int>(%19) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %21
%21 = apply %10(%18, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %22
%22 = apply %12(%21, %4) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %23
cond_fail %22 : $Builtin.Int1 // id: %23
%24 = unchecked_trivial_bit_cast %2 : $Builtin.Word to $Int // user: %27
%25 = integer_literal $Builtin.Word, 0 // users: %28, %37, %48, %56, %57, %143, %144, %171, %179, %182, %185, %185
%26 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %28
%27 = struct_extract %24 : $Int, #Int.value // users: %28, %35
%28 = apply %26(%27, %25) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %29
%29 = apply %12(%28, %4) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %30
cond_fail %29 : $Builtin.Int1 // id: %30
%31 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %32, %138
%32 = apply %31<Int>(%19) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %35, %37, %42, %47, %96, %158, %191
%33 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %35, %96, %139, %175
%34 = integer_literal $Builtin.Int1, 0 // users: %35, %72, %74, %90, %92, %106, %139, %175, %189, %192
%35 = apply %33(%27, %32, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %36
%36 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 0 // users: %40, %47
%37 = apply %10(%32, %25) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %38
cond_fail %37 : $Builtin.Int1 // id: %38
%39 = integer_literal $Builtin.Word, -9223372036854775808 // users: %40, %155
%40 = apply %10(%36, %39) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %44
%41 = integer_literal $Builtin.Word, -1 // users: %42, %77, %94
%42 = apply %10(%32, %41) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %44, %156
%43 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %44, %156
%44 = apply %43(%40, %42) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %45
cond_fail %44 : $Builtin.Int1 // id: %45
%46 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %47, %158
%47 = apply %46(%36, %32) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %48, %52, %56, %58, %179, %182, %199
%48 = apply %10(%47, %25) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %49
cond_br %48, bb1, bb2 // id: %49
bb1: // Preds: bb0
%50 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.None!enumelt // user: %51
br bb15(%50 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // id: %51
bb2: // Preds: bb0
%52 = struct $Int (%47 : $Builtin.Word) // user: %173
%53 = metatype $@thick _ContiguousArrayStorage<Int>.Type // user: %54
%54 = upcast %53 : $@thick _ContiguousArrayStorage<Int>.Type to $@thick AnyObject.Type // user: %118
%55 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %56, %111, %113, %202
%56 = apply %55(%25, %47) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %57
cond_br %56, bb3, bb4(%25 : $Builtin.Word) // id: %57
bb3: // Preds: bb2
br bb4(%47 : $Builtin.Word) // id: %58
bb4(%59 : $Builtin.Word): // Preds: bb2 bb3
%60 = metatype $@thick HeapObject.Type // users: %61, %105
%61 = apply %5<HeapObject>(%60) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %66
%62 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %64, %85, %105
%63 = metatype $@thick _ArrayBody.Type // users: %64, %80
%64 = apply %62<_ArrayBody>(%63) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %66, %74
%65 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %66, %81, %86, %100, %189, %192
%66 = apply %65(%61, %64, %4) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %67, %68
%67 = tuple_extract %66 : $(Builtin.Word, Builtin.Int1), 0 // user: %72
%68 = tuple_extract %66 : $(Builtin.Word, Builtin.Int1), 1 // user: %69
cond_fail %68 : $Builtin.Int1 // id: %69
%70 = integer_literal $Builtin.Word, 1 // users: %72, %74, %90, %92, %106, %169, %189, %192
%71 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %72, %74, %90, %92, %106, %151
%72 = apply %71(%67, %70, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %73
%73 = tuple_extract %72 : $(Builtin.Word, Builtin.Int1), 0 // user: %79
%74 = apply %71(%64, %70, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %75
%75 = tuple_extract %74 : $(Builtin.Word, Builtin.Int1), 0 // users: %77, %109, %111, %113
%76 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %77, %94
%77 = apply %76(%75, %41) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %79
%78 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %79, %95
%79 = apply %78(%73, %77) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %81, %139
%80 = apply %5<_ArrayBody>(%63) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %81
%81 = apply %65(%79, %80, %4) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %82, %83
%82 = tuple_extract %81 : $(Builtin.Word, Builtin.Int1), 0 // user: %86
%83 = tuple_extract %81 : $(Builtin.Word, Builtin.Int1), 1 // user: %84
cond_fail %83 : $Builtin.Int1 // id: %84
%85 = apply %62<Int>(%19) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %86, %92
%86 = apply %65(%82, %85, %4) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %87, %88
%87 = tuple_extract %86 : $(Builtin.Word, Builtin.Int1), 0 // user: %90
%88 = tuple_extract %86 : $(Builtin.Word, Builtin.Int1), 1 // user: %89
cond_fail %88 : $Builtin.Int1 // id: %89
%90 = apply %71(%87, %70, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %91
%91 = tuple_extract %90 : $(Builtin.Word, Builtin.Int1), 0 // user: %95
%92 = apply %71(%85, %70, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %93
%93 = tuple_extract %92 : $(Builtin.Word, Builtin.Int1), 0 // users: %94, %110, %113, %202
%94 = apply %76(%93, %41) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %95
%95 = apply %78(%91, %94) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %100, %151, %175
%96 = apply %33(%59, %32, %4) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %97, %98
%97 = tuple_extract %96 : $(Builtin.Word, Builtin.Int1), 0 // user: %100
%98 = tuple_extract %96 : $(Builtin.Word, Builtin.Int1), 1 // user: %99
cond_fail %98 : $Builtin.Int1 // id: %99
%100 = apply %65(%95, %97, %4) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %101, %102
%101 = tuple_extract %100 : $(Builtin.Word, Builtin.Int1), 0 // user: %104
%102 = tuple_extract %100 : $(Builtin.Word, Builtin.Int1), 1 // user: %103
cond_fail %102 : $Builtin.Int1 // id: %103
%104 = struct $Int (%101 : $Builtin.Word) // user: %118
%105 = apply %62<HeapObject>(%60) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %106
%106 = apply %71(%105, %70, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %107
%107 = tuple_extract %106 : $(Builtin.Word, Builtin.Int1), 0 // users: %108, %111, %202
%108 = struct $Int (%107 : $Builtin.Word) // user: %205
%109 = struct $Int (%75 : $Builtin.Word) // user: %201
%110 = struct $Int (%93 : $Builtin.Word) // users: %115, %204
%111 = apply %55(%107, %75) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %112
cond_br %111, bb5, bb12 // id: %112
bb5: // Preds: bb4
%113 = apply %55(%75, %93) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %114
cond_br %113, bb6, bb11 // id: %114
bb6: // Preds: bb5
br bb7(%110 : $Int) // id: %115
bb7(%116 : $Int): // Preds: bb6 bb11 bb13 bb14
// function_ref swift_bufferAllocate
%117 = function_ref @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %118
%118 = apply %117(%54, %104, %116) : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %126
%119 = metatype $@thick AnyObject.Protocol // user: %120
%120 = apply %5<AnyObject>(%119) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %123
%121 = metatype $@thick HeapBufferStorage<_ArrayBody, Int>.Type // user: %122
%122 = apply %5<HeapBufferStorage<_ArrayBody, Int>>(%121) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %123
%123 = apply %10(%120, %122) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %124
%124 = apply %12(%123, %4) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %125
cond_fail %124 : $Builtin.Int1 // id: %125
%126 = unchecked_ref_bit_cast %118 : $AnyObject to $HeapBufferStorage<_ArrayBody, Int> // user: %127
%127 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1, %126 : $HeapBufferStorage<_ArrayBody, Int> // users: %135, %184
%128 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %129
%129 = apply %5<HeapBufferStorage<_ArrayBody, Int>?>(%128) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %132
%130 = metatype $@thick Builtin.NativeObject.Type // user: %131
%131 = apply %5<Builtin.NativeObject>(%130) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %132
%132 = apply %10(%129, %131) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %133
%133 = apply %12(%132, %4) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %134
cond_fail %133 : $Builtin.Int1 // id: %134
%135 = unchecked_ref_bit_cast %127 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %136
%136 = ref_to_raw_pointer %135 : $Builtin.NativeObject to $Builtin.RawPointer // users: %141, %148, %177
%137 = metatype $@thick Int8.Type // user: %138
%138 = apply %31<Int8>(%137) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %139, %175
%139 = apply %33(%79, %138, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %140
%140 = tuple_extract %139 : $(Builtin.Word, Builtin.Int1), 0 // user: %141
%141 = index_raw_pointer %136 : $Builtin.RawPointer, %140 : $Builtin.Word // user: %142
%142 = pointer_to_address %141 : $Builtin.RawPointer to $*_ArrayBody // users: %146, %174
%143 = struct $Int (%25 : $Builtin.Word) // user: %145
%144 = struct $UInt (%25 : $Builtin.Word) // user: %145
%145 = struct $_ArrayBody (%143 : $Int, %144 : $UInt) // user: %146
store %145 to %142 : $*_ArrayBody // id: %146
// function_ref malloc_size
%147 = function_ref @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %149
%148 = struct $UnsafePointer<()> (%136 : $Builtin.RawPointer) // user: %149
%149 = apply %147(%148) : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %150
%150 = struct_extract %149 : $UInt, #UInt.value // user: %151
%151 = apply %71(%150, %95, %4) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %152, %153
%152 = tuple_extract %151 : $(Builtin.Word, Builtin.Int1), 0 // users: %155, %158
%153 = tuple_extract %151 : $(Builtin.Word, Builtin.Int1), 1 // user: %154
cond_fail %153 : $Builtin.Int1 // id: %154
%155 = apply %10(%152, %39) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %156
%156 = apply %43(%155, %42) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %157
cond_fail %156 : $Builtin.Int1 // id: %157
%158 = apply %46(%152, %32) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %160
%159 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // user: %160
%160 = apply %159(%158) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %162
%161 = builtin_function_ref "s_to_u_checked_conversion_Int64" : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // user: %162
%162 = apply %161(%160) : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // users: %163, %164
%163 = tuple_extract %162 : $(Builtin.Int64, Builtin.Int1), 0 // user: %167
%164 = tuple_extract %162 : $(Builtin.Int64, Builtin.Int1), 1 // user: %165
cond_fail %164 : $Builtin.Int1 // id: %165
%166 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %167
%167 = apply %166(%163) : $@thin (Builtin.Int64) -> Builtin.Word // user: %169
%168 = builtin_function_ref "shl_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %169
%169 = apply %168(%167, %70) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %171
%170 = builtin_function_ref "or_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %171
%171 = apply %170(%169, %25) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %172
%172 = struct $UInt (%171 : $Builtin.Word) // user: %173
%173 = struct $_ArrayBody (%52 : $Int, %172 : $UInt) // user: %174
store %173 to %142 : $*_ArrayBody // id: %174
%175 = apply %33(%95, %138, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %176
%176 = tuple_extract %175 : $(Builtin.Word, Builtin.Int1), 0 // user: %177
%177 = index_raw_pointer %136 : $Builtin.RawPointer, %176 : $Builtin.Word // user: %185
%178 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %179
%179 = apply %178(%25, %47) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %180
%180 = apply %12(%179, %4) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %181
cond_fail %180 : $Builtin.Int1 // id: %181
%182 = apply %10(%25, %47) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %183
cond_br %182, bb8, bb9 // id: %183
bb8: // Preds: bb7 bb10
br bb15(%127 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // id: %184
bb9: // Preds: bb7
br bb10(%25 : $Builtin.Word, %177 : $Builtin.RawPointer, %25 : $Builtin.Word) // id: %185
bb10(%186 : $Builtin.Word, %187 : $Builtin.RawPointer, %188 : $Builtin.Word): // Preds: bb9 bb10
%189 = apply %65(%186, %70, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %190
%190 = tuple_extract %189 : $(Builtin.Word, Builtin.Int1), 0 // users: %199, %200
%191 = index_raw_pointer %187 : $Builtin.RawPointer, %32 : $Builtin.Word // user: %200
%192 = apply %65(%188, %70, %34) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %193
%193 = tuple_extract %192 : $(Builtin.Word, Builtin.Int1), 0 // user: %200
%194 = pointer_to_address %16 : $Builtin.RawPointer to $*Int // user: %195
%195 = index_addr %194 : $*Int, %188 : $Builtin.Word // user: %196
%196 = load %195 : $*Int // user: %198
%197 = pointer_to_address %187 : $Builtin.RawPointer to $*Int // user: %198
store %196 to %197 : $*Int // id: %198
%199 = apply %10(%190, %47) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %200
cond_br %199, bb8, bb10(%190 : $Builtin.Word, %191 : $Builtin.RawPointer, %193 : $Builtin.Word) // id: %200
bb11: // Preds: bb5
br bb7(%109 : $Int) // id: %201
bb12: // Preds: bb4
%202 = apply %55(%107, %93) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %203
cond_br %202, bb13, bb14 // id: %203
bb13: // Preds: bb12
br bb7(%110 : $Int) // id: %204
bb14: // Preds: bb12
br bb7(%108 : $Int) // id: %205
bb15(%206 : $Optional<HeapBufferStorage<_ArrayBody, Int>>): // Preds: bb1 bb8
%207 = enum $Optional<Builtin.NativeObject>, #Optional.None!enumelt // user: %232
%208 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %209
%209 = apply %5<HeapBufferStorage<_ArrayBody, Int>?>(%208) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %212
%210 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %211
%211 = apply %5<_ContiguousArrayStorage<Int>?>(%210) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %212
%212 = apply %10(%209, %211) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %213
%213 = apply %12(%212, %4) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %214
cond_fail %213 : $Builtin.Int1 // id: %214
%215 = unchecked_ref_bit_cast %206 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Optional<_ContiguousArrayStorage<Int>> // user: %216
%216 = enum_is_tag $Builtin.Int1, %215 : $Optional<_ContiguousArrayStorage<Int>>, #Optional.Some!enumelt.1 // user: %217
cond_br %216, bb16, bb18 // id: %217
bb16: // Preds: bb15
%218 = unchecked_ref_bit_cast %206 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $_ContiguousArrayStorage<Int> // user: %219
%219 = unchecked_ref_cast %218 : $_ContiguousArrayStorage<Int> to $Builtin.NativeObject // user: %220
%220 = enum $Optional<Builtin.NativeObject>, #Optional.Some!enumelt.1, %219 : $Builtin.NativeObject // user: %221
br bb17(%220 : $Optional<Builtin.NativeObject>) // id: %221
bb17(%222 : $Optional<Builtin.NativeObject>): // Preds: bb16 bb18
%223 = struct $_ArrayBuffer<Int> (%222 : $Optional<Builtin.NativeObject>) // user: %224
%224 = struct $Array<Int> (%223 : $_ArrayBuffer<Int>) // user: %231
%225 = alloc_stack $Builtin.NativeObject // users: %226, %227, %228, %230
store %1 to %225#1 : $*Builtin.NativeObject // id: %226
fix_lifetime %225#1 : $*Builtin.NativeObject // id: %227
%228 = load %225#1 : $*Builtin.NativeObject // user: %229
strong_release %228 : $Builtin.NativeObject // id: %229
dealloc_stack %225#0 : $*@local_storage Builtin.NativeObject // id: %230
return %224 : $Array<Int> // id: %231
bb18: // Preds: bb15
br bb17(%207 : $Optional<Builtin.NativeObject>) // id: %232
}
// specialization <Builtin.RawPointer, Swift.UnsafeMutablePointer<Swift.Int>> of Swift.unsafeBitCast <A, B>(A, B.Type) -> B
sil shared [transparent] specialization <Builtin.RawPointer, Swift.UnsafeMutablePointer<Swift.Int>> of Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin (@out UnsafeMutablePointer<Int>, @in Builtin.RawPointer, @thick UnsafeMutablePointer<Int>.Type) -> () {
bb0(%0 : $*UnsafeMutablePointer<Int>, %1 : $*Builtin.RawPointer, %2 : $@thick UnsafeMutablePointer<Int>.Type):
%3 = alloc_stack $Builtin.RawPointer // users: %5, %21, %26
%4 = load %1 : $*Builtin.RawPointer // user: %5
store %4 to %3#1 : $*Builtin.RawPointer // id: %5
%6 = integer_literal $Builtin.Int1, -1 // user: %17
// function_ref Swift.sizeof <A>(A.Type) -> Swift.Int
%7 = function_ref Swift.sizeof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // users: %9, %11
%8 = metatype $@thick Builtin.RawPointer.Type // user: %9
%9 = apply [transparent] %7<Builtin.RawPointer>(%8) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %13
%10 = metatype $@thick UnsafeMutablePointer<Int>.Type // user: %11
%11 = apply [transparent] %7<UnsafeMutablePointer<Int>>(%10) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %14
%12 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %15
%13 = struct_extract %9 : $Int, #Int.value // user: %15
%14 = struct_extract %11 : $Int, #Int.value // user: %15
%15 = apply %12(%13, %14) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %17
%16 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
%17 = apply %16(%15, %6) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %18
cond_fail %17 : $Builtin.Int1 // id: %18
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A>
%19 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %22
%20 = metatype $@thin UnsafeMutablePointer<UnsafeMutablePointer<Int>>.Type // user: %22
%21 = address_to_pointer %3#1 : $*Builtin.RawPointer to $Builtin.RawPointer // user: %22
%22 = apply [transparent] %19<UnsafeMutablePointer<Int>>(%21, %20) : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %24
// function_ref Swift.UnsafeMutablePointer.memory.getter : A
%23 = function_ref Swift.UnsafeMutablePointer.memory.getter : A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> () // user: %24
%24 = apply [transparent] %23<UnsafeMutablePointer<Int>>(%0, %22) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> ()
%25 = tuple () // user: %27
dealloc_stack %3#0 : $*@local_storage Builtin.RawPointer // id: %26
return %25 : $() // id: %27
}
// specialization <Swift.UnsafeMutablePointer<Swift.Int> with Swift.UnsafeMutablePointer<Swift.Int> : Swift._PointerType, Swift.UnsafePointer<Swift.Int> with Swift.UnsafePointer<Swift.Int> : Swift._PointerType> of Swift._convertPointerToPointerArgument <A : Swift._PointerType, B : Swift._PointerType>(A) -> B
sil shared [transparent] specialization <Swift.UnsafeMutablePointer<Swift.Int> with Swift.UnsafeMutablePointer<Swift.Int> : Swift._PointerType, Swift.UnsafePointer<Swift.Int> with Swift.UnsafePointer<Swift.Int> : Swift._PointerType> of Swift._convertPointerToPointerArgument <A : Swift._PointerType, B : Swift._PointerType>(A) -> B : $@thin (@out UnsafePointer<Int>, @in UnsafeMutablePointer<Int>) -> () {
bb0(%0 : $*UnsafePointer<Int>, %1 : $*UnsafeMutablePointer<Int>):
%2 = metatype $@thick UnsafePointer<Int>.Type // user: %6
// function_ref protocol witness for Swift._PointerType.value.getter : Builtin.RawPointer in conformance Swift.UnsafeMutablePointer : Swift._PointerType
%3 = function_ref protocol witness for Swift._PointerType.value.getter : Builtin.RawPointer in conformance Swift.UnsafeMutablePointer : Swift._PointerType : $@cc(witness_method) @thin <τ_0_0> (@inout UnsafeMutablePointer<τ_0_0>) -> Builtin.RawPointer // user: %4
%4 = apply %3<Int>(%1) : $@cc(witness_method) @thin <τ_0_0> (@inout UnsafeMutablePointer<τ_0_0>) -> Builtin.RawPointer // user: %6
// function_ref protocol witness for Swift._PointerType.init <A : Swift._PointerType>(Swift._PointerType.Self.Type)(Builtin.RawPointer) -> Swift._PointerType.Self in conformance Swift.UnsafePointer : Swift._PointerType
%5 = function_ref protocol witness for Swift._PointerType.init <A : Swift._PointerType>(Swift._PointerType.Self.Type)(Builtin.RawPointer) -> Swift._PointerType.Self in conformance Swift.UnsafePointer : Swift._PointerType : $@cc(witness_method) @thin <τ_0_0> (@out UnsafePointer<τ_0_0>, Builtin.RawPointer, @thick UnsafePointer<τ_0_0>.Type) -> () // user: %6
%6 = apply %5<Int>(%0, %4, %2) : $@cc(witness_method) @thin <τ_0_0> (@out UnsafePointer<τ_0_0>, Builtin.RawPointer, @thick UnsafePointer<τ_0_0>.Type) -> ()
%7 = tuple () // user: %8
return %7 : $() // id: %8
}
// specialization <Swift.Int> of Swift.UnsafeBufferPointer.init <A>(Swift.UnsafeBufferPointer<A>.Type)(start : Swift.UnsafePointer<A>, count : Swift.Int) -> Swift.UnsafeBufferPointer<A>
sil shared specialization <Swift.Int> of Swift.UnsafeBufferPointer.init <A>(Swift.UnsafeBufferPointer<A>.Type)(start : Swift.UnsafePointer<A>, count : Swift.Int) -> Swift.UnsafeBufferPointer<A> : $@thin (UnsafePointer<Int>, Int, @thin UnsafeBufferPointer<Int>.Type) -> UnsafeBufferPointer<Int> {
bb0(%0 : $UnsafePointer<Int>, %1 : $Int, %2 : $@thin UnsafeBufferPointer<Int>.Type):
%3 = integer_literal $Builtin.Int1, -1 // user: %9
%4 = integer_literal $Builtin.Word, 0 // user: %7
%5 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %7
%6 = struct_extract %1 : $Int, #Int.value // users: %7, %17
%7 = apply %5(%6, %4) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %9
%8 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %9
%9 = apply %8(%7, %3) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %10
cond_fail %9 : $Builtin.Int1 // id: %10
%11 = struct_extract %0 : $UnsafePointer<Int>, #UnsafePointer.value // user: %19
%12 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %14
%13 = metatype $@thick Int.Type // user: %14
%14 = apply %12<Int>(%13) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %17
%15 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %17
%16 = integer_literal $Builtin.Int1, 0 // user: %17
%17 = apply %15(%6, %14, %16) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %18
%18 = tuple_extract %17 : $(Builtin.Word, Builtin.Int1), 0 // user: %19
%19 = index_raw_pointer %11 : $Builtin.RawPointer, %18 : $Builtin.Word // user: %20
%20 = struct $UnsafePointer<Int> (%19 : $Builtin.RawPointer) // user: %21
%21 = struct $UnsafeBufferPointer<Int> (%0 : $UnsafePointer<Int>, %20 : $UnsafePointer<Int>) // user: %22
return %21 : $UnsafeBufferPointer<Int> // id: %22
}
// specialization <Swift.Int> of Swift.+ infix <A>(Swift.UnsafePointer<A>, Swift.Int) -> Swift.UnsafePointer<A>
sil shared [transparent] specialization <Swift.Int> of Swift.+ infix <A>(Swift.UnsafePointer<A>, Swift.Int) -> Swift.UnsafePointer<A> : $@thin (UnsafePointer<Int>, Int) -> UnsafePointer<Int> {
bb0(%0 : $UnsafePointer<Int>, %1 : $Int):
// function_ref Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafePointer<A>
%2 = function_ref Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafePointer<A> : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafePointer<τ_0_0>.Type) -> UnsafePointer<τ_0_0> // user: %15
%3 = metatype $@thin UnsafePointer<Int>.Type // user: %15
%4 = struct_extract %0 : $UnsafePointer<Int>, #UnsafePointer.value // user: %14
// function_ref Swift.strideof <A>(A.Type) -> Swift.Int
%5 = function_ref Swift.strideof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %7
%6 = metatype $@thick Int.Type // user: %7
%7 = apply [transparent] %5<Int>(%6) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %9
%8 = struct_extract %1 : $Int, #Int.value // user: %12
%9 = struct_extract %7 : $Int, #Int.value // user: %12
%10 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %12
%11 = integer_literal $Builtin.Int1, 0 // user: %12
%12 = apply %10(%8, %9, %11) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %13
%13 = tuple_extract %12 : $(Builtin.Word, Builtin.Int1), 0 // user: %14
%14 = index_raw_pointer %4 : $Builtin.RawPointer, %13 : $Builtin.Word // user: %15
%15 = apply [transparent] %2<Int>(%14, %3) : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafePointer<τ_0_0>.Type) -> UnsafePointer<τ_0_0> // user: %16
return %15 : $UnsafePointer<Int> // id: %16
}
// specialization <Swift.Int, Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift.SequenceType, Swift.UnsafeBufferPointerGenerator<Swift.Int> with Swift.UnsafeBufferPointerGenerator<Swift.Int> : Swift.GeneratorType> of Swift.Array.init <A>(Swift.Array<A>.Type)<B : Swift.SequenceType>(B) -> Swift.Array<A>
sil shared specialization <Swift.Int, Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift.SequenceType, Swift.UnsafeBufferPointerGenerator<Swift.Int> with Swift.UnsafeBufferPointerGenerator<Swift.Int> : Swift.GeneratorType> of Swift.Array.init <A>([A].Type)<B : Swift.SequenceType>(B) -> [A] : $@thin (@in UnsafeBufferPointer<Int>, @thin Array<Int>.Type) -> @owned Array<Int> {
bb0(%0 : $*UnsafeBufferPointer<Int>, %1 : $@thin Array<Int>.Type):
%2 = struct_element_addr %0 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._position // user: %3
%3 = struct_element_addr %2 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %4
%4 = load %3 : $*Builtin.RawPointer // users: %12, %180
%5 = struct_element_addr %0 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._end // user: %6
%6 = struct_element_addr %5 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %7
%7 = load %6 : $*Builtin.RawPointer // user: %11
%8 = integer_literal $Builtin.Word, 0 // users: %18, %30, %38, %39, %129, %130, %157, %165, %168, %171, %171
%9 = builtin_function_ref "sub_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %13
%10 = builtin_function_ref "ptrtoint_Word" : $@thin (Builtin.RawPointer) -> Builtin.Word // users: %11, %12
%11 = apply %10(%7) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %13
%12 = apply %10(%4) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %13
%13 = apply %9(%11, %12) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %21, %28
%14 = metatype $@thick Int.Type // users: %16, %69
%15 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %16, %124
%16 = apply %15<Int>(%14) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %18, %23, %28, %81, %144, %177
%17 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %18, %21, %23, %30, %108, %118, %141, %168, %185, %200
%18 = apply %17(%16, %8) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %19
cond_fail %18 : $Builtin.Int1 // id: %19
%20 = integer_literal $Builtin.Word, -9223372036854775808 // users: %21, %141
%21 = apply %17(%13, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %25
%22 = integer_literal $Builtin.Word, -1 // users: %23, %61, %78
%23 = apply %17(%16, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %25, %142
%24 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %25, %142
%25 = apply %24(%21, %23) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %26
cond_fail %25 : $Builtin.Int1 // id: %26
%27 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %28, %144
%28 = apply %27(%13, %16) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %30, %34, %38, %40, %165, %168, %185
%29 = integer_literal $Builtin.Int1, 0 // users: %56, %58, %74, %76, %91, %125, %161, %175, %178
%30 = apply %17(%28, %8) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %31
cond_br %30, bb1, bb2 // id: %31
bb1: // Preds: bb0
%32 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.None!enumelt // user: %33
br bb15(%32 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // id: %33
bb2: // Preds: bb0
%34 = struct $Int (%28 : $Builtin.Word) // user: %159
%35 = metatype $@thick _ContiguousArrayStorage<Int>.Type // user: %36
%36 = upcast %35 : $@thick _ContiguousArrayStorage<Int>.Type to $@thick AnyObject.Type // user: %103
%37 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %38, %96, %98, %188
%38 = apply %37(%8, %28) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %39
cond_br %38, bb3, bb4(%8 : $Builtin.Word) // id: %39
bb3: // Preds: bb2
br bb4(%28 : $Builtin.Word) // id: %40
bb4(%41 : $Builtin.Word): // Preds: bb2 bb3
%42 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %44, %64, %105, %107, %115, %117
%43 = metatype $@thick HeapObject.Type // users: %44, %90
%44 = apply %42<HeapObject>(%43) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %50
%45 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %47, %69, %90
%46 = metatype $@thick _ArrayBody.Type // users: %47, %64
%47 = apply %45<_ArrayBody>(%46) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %50, %58
%48 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %50, %65, %70, %85, %175, %178
%49 = integer_literal $Builtin.Int1, -1 // users: %50, %65, %70, %81, %85, %110, %119, %137, %166
%50 = apply %48(%44, %47, %49) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %51, %52
%51 = tuple_extract %50 : $(Builtin.Word, Builtin.Int1), 0 // user: %56
%52 = tuple_extract %50 : $(Builtin.Word, Builtin.Int1), 1 // user: %53
cond_fail %52 : $Builtin.Int1 // id: %53
%54 = integer_literal $Builtin.Word, 1 // users: %56, %58, %74, %76, %91, %155, %175, %178
%55 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %56, %58, %74, %76, %91, %137
%56 = apply %55(%51, %54, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %57
%57 = tuple_extract %56 : $(Builtin.Word, Builtin.Int1), 0 // user: %63
%58 = apply %55(%47, %54, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %59
%59 = tuple_extract %58 : $(Builtin.Word, Builtin.Int1), 0 // users: %61, %94, %96, %98
%60 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %61, %78
%61 = apply %60(%59, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %63
%62 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %63, %79
%63 = apply %62(%57, %61) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %65, %125
%64 = apply %42<_ArrayBody>(%46) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %65
%65 = apply %48(%63, %64, %49) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %66, %67
%66 = tuple_extract %65 : $(Builtin.Word, Builtin.Int1), 0 // user: %70
%67 = tuple_extract %65 : $(Builtin.Word, Builtin.Int1), 1 // user: %68
cond_fail %67 : $Builtin.Int1 // id: %68
%69 = apply %45<Int>(%14) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %70, %76
%70 = apply %48(%66, %69, %49) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %71, %72
%71 = tuple_extract %70 : $(Builtin.Word, Builtin.Int1), 0 // user: %74
%72 = tuple_extract %70 : $(Builtin.Word, Builtin.Int1), 1 // user: %73
cond_fail %72 : $Builtin.Int1 // id: %73
%74 = apply %55(%71, %54, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %75
%75 = tuple_extract %74 : $(Builtin.Word, Builtin.Int1), 0 // user: %79
%76 = apply %55(%69, %54, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %77
%77 = tuple_extract %76 : $(Builtin.Word, Builtin.Int1), 0 // users: %78, %95, %98, %188
%78 = apply %60(%77, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %79
%79 = apply %62(%75, %78) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %85, %137, %161
%80 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %81, %125, %161
%81 = apply %80(%41, %16, %49) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %82, %83
%82 = tuple_extract %81 : $(Builtin.Word, Builtin.Int1), 0 // user: %85
%83 = tuple_extract %81 : $(Builtin.Word, Builtin.Int1), 1 // user: %84
cond_fail %83 : $Builtin.Int1 // id: %84
%85 = apply %48(%79, %82, %49) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %86, %87
%86 = tuple_extract %85 : $(Builtin.Word, Builtin.Int1), 0 // user: %89
%87 = tuple_extract %85 : $(Builtin.Word, Builtin.Int1), 1 // user: %88
cond_fail %87 : $Builtin.Int1 // id: %88
%89 = struct $Int (%86 : $Builtin.Word) // user: %103
%90 = apply %45<HeapObject>(%43) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %91
%91 = apply %55(%90, %54, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %92
%92 = tuple_extract %91 : $(Builtin.Word, Builtin.Int1), 0 // users: %93, %96, %188
%93 = struct $Int (%92 : $Builtin.Word) // user: %191
%94 = struct $Int (%59 : $Builtin.Word) // user: %187
%95 = struct $Int (%77 : $Builtin.Word) // users: %100, %190
%96 = apply %37(%92, %59) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %97
cond_br %96, bb5, bb12 // id: %97
bb5: // Preds: bb4
%98 = apply %37(%59, %77) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %99
cond_br %98, bb6, bb11 // id: %99
bb6: // Preds: bb5
br bb7(%95 : $Int) // id: %100
bb7(%101 : $Int): // Preds: bb6 bb11 bb13 bb14
// function_ref swift_bufferAllocate
%102 = function_ref @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %103
%103 = apply %102(%36, %89, %101) : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %112
%104 = metatype $@thick AnyObject.Protocol // user: %105
%105 = apply %42<AnyObject>(%104) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %108
%106 = metatype $@thick HeapBufferStorage<_ArrayBody, Int>.Type // user: %107
%107 = apply %42<HeapBufferStorage<_ArrayBody, Int>>(%106) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %108
%108 = apply %17(%105, %107) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %110
%109 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %110, %119, %166
%110 = apply %109(%108, %49) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %111
cond_fail %110 : $Builtin.Int1 // id: %111
%112 = unchecked_ref_bit_cast %103 : $AnyObject to $HeapBufferStorage<_ArrayBody, Int> // user: %113
%113 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1, %112 : $HeapBufferStorage<_ArrayBody, Int> // users: %121, %170
%114 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %115
%115 = apply %42<HeapBufferStorage<_ArrayBody, Int>?>(%114) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %118
%116 = metatype $@thick Builtin.NativeObject.Type // user: %117
%117 = apply %42<Builtin.NativeObject>(%116) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %118
%118 = apply %17(%115, %117) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %119
%119 = apply %109(%118, %49) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %120
cond_fail %119 : $Builtin.Int1 // id: %120
%121 = unchecked_ref_bit_cast %113 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %122
%122 = ref_to_raw_pointer %121 : $Builtin.NativeObject to $Builtin.RawPointer // users: %127, %134, %163
%123 = metatype $@thick Int8.Type // user: %124
%124 = apply %15<Int8>(%123) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %125, %161
%125 = apply %80(%63, %124, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %126
%126 = tuple_extract %125 : $(Builtin.Word, Builtin.Int1), 0 // user: %127
%127 = index_raw_pointer %122 : $Builtin.RawPointer, %126 : $Builtin.Word // user: %128
%128 = pointer_to_address %127 : $Builtin.RawPointer to $*_ArrayBody // users: %132, %160
%129 = struct $Int (%8 : $Builtin.Word) // user: %131
%130 = struct $UInt (%8 : $Builtin.Word) // user: %131
%131 = struct $_ArrayBody (%129 : $Int, %130 : $UInt) // user: %132
store %131 to %128 : $*_ArrayBody // id: %132
// function_ref malloc_size
%133 = function_ref @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %135
%134 = struct $UnsafePointer<()> (%122 : $Builtin.RawPointer) // user: %135
%135 = apply %133(%134) : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %136
%136 = struct_extract %135 : $UInt, #UInt.value // user: %137
%137 = apply %55(%136, %79, %49) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %138, %139
%138 = tuple_extract %137 : $(Builtin.Word, Builtin.Int1), 0 // users: %141, %144
%139 = tuple_extract %137 : $(Builtin.Word, Builtin.Int1), 1 // user: %140
cond_fail %139 : $Builtin.Int1 // id: %140
%141 = apply %17(%138, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %142
%142 = apply %24(%141, %23) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %143
cond_fail %142 : $Builtin.Int1 // id: %143
%144 = apply %27(%138, %16) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %146
%145 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // user: %146
%146 = apply %145(%144) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %148
%147 = builtin_function_ref "s_to_u_checked_conversion_Int64" : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // user: %148
%148 = apply %147(%146) : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // users: %149, %150
%149 = tuple_extract %148 : $(Builtin.Int64, Builtin.Int1), 0 // user: %153
%150 = tuple_extract %148 : $(Builtin.Int64, Builtin.Int1), 1 // user: %151
cond_fail %150 : $Builtin.Int1 // id: %151
%152 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %153
%153 = apply %152(%149) : $@thin (Builtin.Int64) -> Builtin.Word // user: %155
%154 = builtin_function_ref "shl_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %155
%155 = apply %154(%153, %54) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %157
%156 = builtin_function_ref "or_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %157
%157 = apply %156(%155, %8) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %158
%158 = struct $UInt (%157 : $Builtin.Word) // user: %159
%159 = struct $_ArrayBody (%34 : $Int, %158 : $UInt) // user: %160
store %159 to %128 : $*_ArrayBody // id: %160
%161 = apply %80(%79, %124, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %162
%162 = tuple_extract %161 : $(Builtin.Word, Builtin.Int1), 0 // user: %163
%163 = index_raw_pointer %122 : $Builtin.RawPointer, %162 : $Builtin.Word // user: %171
%164 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %165
%165 = apply %164(%8, %28) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %166
%166 = apply %109(%165, %49) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %167
cond_fail %166 : $Builtin.Int1 // id: %167
%168 = apply %17(%8, %28) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %169
cond_br %168, bb8, bb9 // id: %169
bb8: // Preds: bb7 bb10
br bb15(%113 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // id: %170
bb9: // Preds: bb7
br bb10(%8 : $Builtin.Word, %163 : $Builtin.RawPointer, %8 : $Builtin.Word) // id: %171
bb10(%172 : $Builtin.Word, %173 : $Builtin.RawPointer, %174 : $Builtin.Word): // Preds: bb9 bb10
%175 = apply %48(%172, %54, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %176
%176 = tuple_extract %175 : $(Builtin.Word, Builtin.Int1), 0 // users: %185, %186
%177 = index_raw_pointer %173 : $Builtin.RawPointer, %16 : $Builtin.Word // user: %186
%178 = apply %48(%174, %54, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %179
%179 = tuple_extract %178 : $(Builtin.Word, Builtin.Int1), 0 // user: %186
%180 = pointer_to_address %4 : $Builtin.RawPointer to $*Int // user: %181
%181 = index_addr %180 : $*Int, %174 : $Builtin.Word // user: %182
%182 = load %181 : $*Int // user: %184
%183 = pointer_to_address %173 : $Builtin.RawPointer to $*Int // user: %184
store %182 to %183 : $*Int // id: %184
%185 = apply %17(%176, %28) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %186
cond_br %185, bb8, bb10(%176 : $Builtin.Word, %177 : $Builtin.RawPointer, %179 : $Builtin.Word) // id: %186
bb11: // Preds: bb5
br bb7(%94 : $Int) // id: %187
bb12: // Preds: bb4
%188 = apply %37(%92, %77) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %189
cond_br %188, bb13, bb14 // id: %189
bb13: // Preds: bb12
br bb7(%95 : $Int) // id: %190
bb14: // Preds: bb12
br bb7(%93 : $Int) // id: %191
bb15(%192 : $Optional<HeapBufferStorage<_ArrayBody, Int>>): // Preds: bb1 bb8
%193 = enum $Optional<Builtin.NativeObject>, #Optional.None!enumelt // user: %215
%194 = integer_literal $Builtin.Int1, -1 // user: %202
%195 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %197, %199
%196 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %197
%197 = apply %195<HeapBufferStorage<_ArrayBody, Int>?>(%196) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %200
%198 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %199
%199 = apply %195<_ContiguousArrayStorage<Int>?>(%198) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %200
%200 = apply %17(%197, %199) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %202
%201 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %202
%202 = apply %201(%200, %194) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %203
cond_fail %202 : $Builtin.Int1 // id: %203
%204 = unchecked_ref_bit_cast %192 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Optional<_ContiguousArrayStorage<Int>> // user: %205
%205 = enum_is_tag $Builtin.Int1, %204 : $Optional<_ContiguousArrayStorage<Int>>, #Optional.Some!enumelt.1 // user: %206
cond_br %205, bb16, bb18 // id: %206
bb16: // Preds: bb15
%207 = unchecked_ref_bit_cast %192 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $_ContiguousArrayStorage<Int> // user: %208
%208 = unchecked_ref_cast %207 : $_ContiguousArrayStorage<Int> to $Builtin.NativeObject // user: %209
%209 = enum $Optional<Builtin.NativeObject>, #Optional.Some!enumelt.1, %208 : $Builtin.NativeObject // user: %210
br bb17(%209 : $Optional<Builtin.NativeObject>) // id: %210
bb17(%211 : $Optional<Builtin.NativeObject>): // Preds: bb16 bb18
%212 = struct $_ArrayBuffer<Int> (%211 : $Optional<Builtin.NativeObject>) // user: %213
%213 = struct $Array<Int> (%212 : $_ArrayBuffer<Int>) // user: %214
return %213 : $Array<Int> // id: %214
bb18: // Preds: bb15
br bb17(%193 : $Optional<Builtin.NativeObject>) // id: %215
}
// specialization <Swift.Int> of Swift._ArrayBuffer.init <A>(Swift._ArrayBuffer<A>.Type)(Swift._ContiguousArrayBuffer<A>) -> Swift._ArrayBuffer<A>
sil shared specialization <Swift.Int> of Swift._ArrayBuffer.init <A>(Swift._ArrayBuffer<A>.Type)(Swift._ContiguousArrayBuffer<A>) -> Swift._ArrayBuffer<A> : $@thin (@owned _ContiguousArrayBuffer<Int>, @thin _ArrayBuffer<Int>.Type) -> @owned _ArrayBuffer<Int> {
bb0(%0 : $_ContiguousArrayBuffer<Int>, %1 : $@thin _ArrayBuffer<Int>.Type):
%2 = enum $Optional<Builtin.NativeObject>, #Optional.None!enumelt // user: %26
%3 = struct_extract %0 : $_ContiguousArrayBuffer<Int>, #_ContiguousArrayBuffer._base // user: %4
%4 = struct_extract %3 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %16, %22
%5 = integer_literal $Builtin.Int1, -1 // user: %14
%6 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %8, %10
%7 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %8
%8 = apply %6<HeapBufferStorage<_ArrayBody, Int>?>(%7) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %12
%9 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %10
%10 = apply %6<_ContiguousArrayStorage<Int>?>(%9) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %12
%11 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %12
%12 = apply %11(%8, %10) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %14
%13 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %14
%14 = apply %13(%12, %5) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %15
cond_fail %14 : $Builtin.Int1 // id: %15
%16 = unchecked_ref_bit_cast %4 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Optional<_ContiguousArrayStorage<Int>> // user: %17
%17 = enum_is_tag $Builtin.Int1, %16 : $Optional<_ContiguousArrayStorage<Int>>, #Optional.Some!enumelt.1 // user: %18
cond_br %17, bb2, bb3 // id: %18
bb1(%19 : $Optional<Builtin.NativeObject>): // Preds: bb2 bb3
%20 = struct $_ArrayBuffer<Int> (%19 : $Optional<Builtin.NativeObject>) // user: %21
return %20 : $_ArrayBuffer<Int> // id: %21
bb2: // Preds: bb0
%22 = unchecked_ref_bit_cast %4 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $_ContiguousArrayStorage<Int> // user: %23
%23 = unchecked_ref_cast %22 : $_ContiguousArrayStorage<Int> to $Builtin.NativeObject // user: %24
%24 = enum $Optional<Builtin.NativeObject>, #Optional.Some!enumelt.1, %23 : $Builtin.NativeObject // user: %25
br bb1(%24 : $Optional<Builtin.NativeObject>) // id: %25
bb3: // Preds: bb0
br bb1(%2 : $Optional<Builtin.NativeObject>) // id: %26
}
// specialization <Swift.Int> of Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool
sil shared specialization <Swift.Int> of Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool : $@thin (@thick Int.Type) -> Bool {
bb0(%0 : $@thick Int.Type):
%1 = integer_literal $Builtin.Int1, 0 // user: %2
%2 = struct $Bool (%1 : $Builtin.Int1) // user: %3
return %2 : $Bool // id: %3
}
// specialization <Swift.Int> of Swift._canBeClass <A>(A.Type) -> Swift.Int8
sil shared [transparent] specialization <Swift.Int> of Swift._canBeClass <A>(A.Type) -> Swift.Int8 : $@thin (@thick Int.Type) -> Int8 {
bb0(%0 : $@thick Int.Type):
%1 = integer_literal $Builtin.Int8, 0 // user: %2
%2 = struct $Int8 (%1 : $Builtin.Int8) // user: %3
return %2 : $Int8 // id: %3
}
// specialization <Swift.Int> of Swift._IndirectArrayBuffer.__allocating_init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer
sil shared specialization <Swift.Int> of Swift._IndirectArrayBuffer.__allocating_init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer : $@thin (@owned _ContiguousArrayBuffer<Int>, Bool, Bool, @thick _IndirectArrayBuffer.Type) -> @owned _IndirectArrayBuffer {
bb0(%0 : $_ContiguousArrayBuffer<Int>, %1 : $Bool, %2 : $Bool, %3 : $@thick _IndirectArrayBuffer.Type):
%4 = alloc_ref $_IndirectArrayBuffer // users: %6, %29, %33, %35, %37
%5 = enum $Optional<AnyObject>, #Optional.None!enumelt // user: %38
%6 = ref_element_addr %4 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.buffer // user: %28
%7 = struct_extract %0 : $_ContiguousArrayBuffer<Int>, #_ContiguousArrayBuffer._base // user: %8
%8 = struct_extract %7 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %20, %23
%9 = integer_literal $Builtin.Int1, -1 // user: %18
%10 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %12, %14
%11 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %12
%12 = apply %10<HeapBufferStorage<_ArrayBody, Int>?>(%11) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %16
%13 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %14
%14 = apply %10<_ContiguousArrayStorage<Int>?>(%13) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %16
%15 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %16
%16 = apply %15(%12, %14) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %18
%17 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %18
%18 = apply %17(%16, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %19
cond_fail %18 : $Builtin.Int1 // id: %19
%20 = unchecked_ref_bit_cast %8 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Optional<_ContiguousArrayStorage<Int>> // user: %21
%21 = enum_is_tag $Builtin.Int1, %20 : $Optional<_ContiguousArrayStorage<Int>>, #Optional.Some!enumelt.1 // user: %22
cond_br %21, bb1, bb3 // id: %22
bb1: // Preds: bb0
%23 = unchecked_ref_bit_cast %8 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $_ContiguousArrayStorage<Int> // user: %24
%24 = init_existential_ref %23 : $_ContiguousArrayStorage<Int> : $_ContiguousArrayStorage<Int>, $AnyObject // user: %25
%25 = enum $Optional<AnyObject>, #Optional.Some!enumelt.1, %24 : $AnyObject // user: %26
br bb2(%25 : $Optional<AnyObject>) // id: %26
bb2(%27 : $Optional<AnyObject>): // Preds: bb1 bb3
store %27 to %6 : $*Optional<AnyObject> // id: %28
%29 = ref_element_addr %4 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isMutable // user: %30
store %1 to %29 : $*Bool // id: %30
%31 = integer_literal $Builtin.Int1, 0 // user: %32
%32 = struct $Bool (%31 : $Builtin.Int1) // user: %34
%33 = ref_element_addr %4 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isCocoa // user: %34
store %32 to %33 : $*Bool // id: %34
%35 = ref_element_addr %4 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.needsElementTypeCheck // user: %36
store %2 to %35 : $*Bool // id: %36
return %4 : $_IndirectArrayBuffer // id: %37
bb3: // Preds: bb0
br bb2(%5 : $Optional<AnyObject>) // id: %38
}
// specialization <Swift.Int> of Swift._IndirectArrayBuffer.init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer
sil shared specialization <Swift.Int> of Swift._IndirectArrayBuffer.init (Swift._IndirectArrayBuffer.Type)<A>(nativeBuffer : Swift._ContiguousArrayBuffer<A>, isMutable : Swift.Bool, needsElementTypeCheck : Swift.Bool) -> Swift._IndirectArrayBuffer : $@cc(method) @thin (@owned _ContiguousArrayBuffer<Int>, Bool, Bool, @owned _IndirectArrayBuffer) -> @owned _IndirectArrayBuffer {
bb0(%0 : $_ContiguousArrayBuffer<Int>, %1 : $Bool, %2 : $Bool, %3 : $_IndirectArrayBuffer):
%4 = enum $Optional<AnyObject>, #Optional.None!enumelt // user: %37
%5 = ref_element_addr %3 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.buffer // user: %27
%6 = struct_extract %0 : $_ContiguousArrayBuffer<Int>, #_ContiguousArrayBuffer._base // user: %7
%7 = struct_extract %6 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %19, %22
%8 = integer_literal $Builtin.Int1, -1 // user: %17
%9 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %11, %13
%10 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %11
%11 = apply %9<HeapBufferStorage<_ArrayBody, Int>?>(%10) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %15
%12 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %13
%13 = apply %9<_ContiguousArrayStorage<Int>?>(%12) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %15
%14 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %15
%15 = apply %14(%11, %13) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %17
%16 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
%17 = apply %16(%15, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %18
cond_fail %17 : $Builtin.Int1 // id: %18
%19 = unchecked_ref_bit_cast %7 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Optional<_ContiguousArrayStorage<Int>> // user: %20
%20 = enum_is_tag $Builtin.Int1, %19 : $Optional<_ContiguousArrayStorage<Int>>, #Optional.Some!enumelt.1 // user: %21
cond_br %20, bb1, bb3 // id: %21
bb1: // Preds: bb0
%22 = unchecked_ref_bit_cast %7 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $_ContiguousArrayStorage<Int> // user: %23
%23 = init_existential_ref %22 : $_ContiguousArrayStorage<Int> : $_ContiguousArrayStorage<Int>, $AnyObject // user: %24
%24 = enum $Optional<AnyObject>, #Optional.Some!enumelt.1, %23 : $AnyObject // user: %25
br bb2(%24 : $Optional<AnyObject>) // id: %25
bb2(%26 : $Optional<AnyObject>): // Preds: bb1 bb3
store %26 to %5 : $*Optional<AnyObject> // id: %27
%28 = ref_element_addr %3 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isMutable // user: %29
store %1 to %28 : $*Bool // id: %29
%30 = integer_literal $Builtin.Int1, 0 // user: %31
%31 = struct $Bool (%30 : $Builtin.Int1) // user: %33
%32 = ref_element_addr %3 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isCocoa // user: %33
store %31 to %32 : $*Bool // id: %33
%34 = ref_element_addr %3 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.needsElementTypeCheck // user: %35
store %2 to %34 : $*Bool // id: %35
return %3 : $_IndirectArrayBuffer // id: %36
bb3: // Preds: bb0
br bb2(%4 : $Optional<AnyObject>) // id: %37
}
// specialization <Swift.Int> of Swift._ContiguousArrayBuffer._storage.getter : Swift.Optional<Swift._ContiguousArrayStorage<A>>
sil shared specialization <Swift.Int> of Swift._ContiguousArrayBuffer._storage.getter : Swift._ContiguousArrayStorage<A>? : $@cc(method) @thin (@owned _ContiguousArrayBuffer<Int>) -> @owned Optional<_ContiguousArrayStorage<Int>> {
bb0(%0 : $_ContiguousArrayBuffer<Int>):
%1 = struct_extract %0 : $_ContiguousArrayBuffer<Int>, #_ContiguousArrayBuffer._base // user: %2
%2 = struct_extract %1 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // user: %14
%3 = integer_literal $Builtin.Int1, -1 // user: %12
%4 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %6, %8
%5 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %6
%6 = apply %4<HeapBufferStorage<_ArrayBody, Int>?>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %10
%7 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %8
%8 = apply %4<_ContiguousArrayStorage<Int>?>(%7) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %10
%9 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %10
%10 = apply %9(%6, %8) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %12
%11 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %12
%12 = apply %11(%10, %3) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %13
cond_fail %12 : $Builtin.Int1 // id: %13
%14 = unchecked_ref_bit_cast %2 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Optional<_ContiguousArrayStorage<Int>> // user: %15
return %14 : $Optional<_ContiguousArrayStorage<Int>> // id: %15
}
// specialization <Swift.Int> of Swift.Array.init <A>(Swift.Array<A>.Type)(Swift._ArrayBuffer<A>) -> Swift.Array<A>
sil shared specialization <Swift.Int> of Swift.Array.init <A>([A].Type)(Swift._ArrayBuffer<A>) -> [A] : $@thin (@owned _ArrayBuffer<Int>, @thin Array<Int>.Type) -> @owned Array<Int> {
bb0(%0 : $_ArrayBuffer<Int>, %1 : $@thin Array<Int>.Type):
%2 = struct $Array<Int> (%0 : $_ArrayBuffer<Int>) // user: %3
return %2 : $Array<Int> // id: %3
}
// specialization <Swift.Int> of Swift.Array.init <A>(Swift.Array<A>.Type)(arrayLiteral : Swift.Array<A>...) -> Swift.Array<A>
sil shared specialization <Swift.Int> of Swift.Array.init <A>([A].Type)(arrayLiteral : [A]...) -> [A] : $@thin (@owned Array<Int>, @thin Array<Int>.Type) -> @owned Array<Int> {
bb0(%0 : $Array<Int>, %1 : $@thin Array<Int>.Type):
return %0 : $Array<Int> // id: %2
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift.CollectionType, Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int with Swift.Int : Swift.Equatable, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of indexof.v1_index_of <A : Swift.CollectionType>(A, (A.Generator.Element) -> Swift.Bool) -> Swift.Optional<A.Index>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift.CollectionType, Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int with Swift.Int : Swift.Equatable, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of indexof.v1_index_of <A : Swift.CollectionType>(A, (A.Generator.Element) -> Swift.Bool) -> A.Index? : $@thin (@out Optional<Int>, @in Array<Int>, @owned @callee_owned (@in Int) -> Bool) -> () {
bb0(%0 : $*Optional<Int>, %1 : $*Array<Int>, %2 : $@callee_owned (@in Int) -> Bool):
%3 = alloc_stack $LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> // users: %11, %17, %94
%4 = load %1 : $*Array<Int> // users: %5, %9
%5 = struct_extract %4 : $Array<Int>, #Array._buffer // user: %6
%6 = struct_extract %5 : $_ArrayBuffer<Int>, #_ArrayBuffer.storage // user: %16
// function_ref reabstraction thunk helper <T_0_0 where T_0_0: Swift.CollectionType, T_0_0.Generator: Swift.GeneratorType, T_0_0.Generator.Element: Swift.Equatable, T_0_0.Index: Swift.ForwardIndexType, T_0_0.Index.Distance: Swift._SignedIntegerType, T_0_0.Index.Distance.IntegerLiteralType: Swift._BuiltinIntegerLiteralConvertible> from @callee_owned (@in T_0_0.Generator.Element) -> (@unowned Swift.Bool) to @callee_owned (@in T_0_0.Generator.Element) -> (@out Swift.Bool)
%7 = function_ref reabstraction thunk helper <T_0_0 where T_0_0: Swift.CollectionType, T_0_0.Generator: Swift.GeneratorType, T_0_0.Generator.Element: Swift.Equatable, T_0_0.Index: Swift.ForwardIndexType, T_0_0.Index.Distance: Swift._SignedIntegerType, T_0_0.Index.Distance.IntegerLiteralType: Swift._BuiltinIntegerLiteralConvertible> from @callee_owned (@in T_0_0.Generator.Element) -> (@unowned Swift.Bool) to @callee_owned (@in T_0_0.Generator.Element) -> (@out Swift.Bool) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Generator.Element : Equatable, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Bool, @in τ_0_0.Generator.Element, @owned @callee_owned (@in τ_0_0.Generator.Element) -> Bool) -> () // user: %8
%8 = partial_apply %7<[Int], IndexingGenerator<Array<Int>>, Int, Int, Int, Int, Int, Int>(%2) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Generator.Element : Equatable, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Bool, @in τ_0_0.Generator.Element, @owned @callee_owned (@in τ_0_0.Generator.Element) -> Bool) -> () // user: %9
%9 = struct $MapCollectionView<Array<Int>, Bool> (%4 : $Array<Int>, %8 : $@callee_owned (@out Bool, @in Int) -> ()) // user: %10
%10 = struct $LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> (%9 : $MapCollectionView<Array<Int>, Bool>) // user: %11
store %10 to %3#1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> // id: %11
%12 = alloc_stack $Bool // users: %15, %93, %204
%13 = integer_literal $Builtin.Int1, -1 // users: %14, %32, %37, %48, %69, %117, %127, %146, %165, %169, %175, %178, %184
%14 = struct $Bool (%13 : $Builtin.Int1) // user: %15
store %14 to %12#1 : $*Bool // id: %15
retain_value %6 : $Optional<Builtin.NativeObject> // id: %16
%17 = struct_element_addr %3#1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, #LazyForwardCollection._base // users: %18, %22
%18 = struct_element_addr %17 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._base // user: %19
%19 = struct_element_addr %18 : $*Array<Int>, #Array._buffer // user: %20
%20 = struct_element_addr %19 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // users: %21, %89, %112
%21 = load %20 : $*Optional<Builtin.NativeObject> // users: %39, %71, %221
%22 = struct_element_addr %17 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._transform // users: %90, %113
%23 = integer_literal $Builtin.Word, 0 // users: %84, %105, %121
%24 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %26, %28, %35, %43, %65, %67, %123, %142, %144, %177
%25 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %26
%26 = apply %24<Builtin.NativeObject?>(%25) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %30
%27 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %28
%28 = apply %24<_ContiguousArrayStorage<Int>?>(%27) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %30, %36
%29 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %30, %36, %68, %84, %145, %214
%30 = apply %29(%26, %28) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %32
%31 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %32, %37, %69, %117, %146, %165, %169, %175
%32 = apply %31(%30, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %33
cond_fail %32 : $Builtin.Int1 // id: %33
%34 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %35
%35 = apply %24<HeapBuffer<_ArrayBody, Int>>(%34) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %36
%36 = apply %29(%28, %35) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %37
%37 = apply %31(%36, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %38
cond_fail %37 : $Builtin.Int1 // id: %38
%39 = unchecked_ref_bit_cast %21 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %40
%40 = enum_is_tag $Builtin.Int1, %39 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %41
cond_br %40, bb1, bb9 // id: %41
bb1: // Preds: bb0
%42 = metatype $@thick HeapObject.Type // user: %43
%43 = apply %24<HeapObject>(%42) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %48
%44 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %46
%45 = metatype $@thick _ArrayBody.Type // user: %46
%46 = apply %44<_ArrayBody>(%45) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %48, %57
%47 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %48
%48 = apply %47(%43, %46, %13) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %49, %50
%49 = tuple_extract %48 : $(Builtin.Word, Builtin.Int1), 0 // user: %55
%50 = tuple_extract %48 : $(Builtin.Word, Builtin.Int1), 1 // user: %51
cond_fail %50 : $Builtin.Int1 // id: %51
%52 = integer_literal $Builtin.Word, 1 // users: %55, %57
%53 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %55, %57
%54 = integer_literal $Builtin.Int1, 0 // users: %55, %57, %77
%55 = apply %53(%49, %52, %54) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %56
%56 = tuple_extract %55 : $(Builtin.Word, Builtin.Int1), 0 // user: %63
%57 = apply %53(%46, %52, %54) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %58
%58 = tuple_extract %57 : $(Builtin.Word, Builtin.Int1), 0 // user: %61
%59 = integer_literal $Builtin.Word, -1 // user: %61
%60 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %61
%61 = apply %60(%58, %59) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %63
%62 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %63
%63 = apply %62(%56, %61) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %77
%64 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %65
%65 = apply %24<HeapBufferStorage<_ArrayBody, Int>?>(%64) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %68
%66 = metatype $@thick Builtin.NativeObject.Type // user: %67
%67 = apply %24<Builtin.NativeObject>(%66) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %68
%68 = apply %29(%65, %67) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %69
%69 = apply %31(%68, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %70
cond_fail %69 : $Builtin.Int1 // id: %70
%71 = unchecked_ref_bit_cast %21 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %72
%72 = ref_to_raw_pointer %71 : $Builtin.NativeObject to $Builtin.RawPointer // user: %79
%73 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %75
%74 = metatype $@thick Int8.Type // user: %75
%75 = apply %73<Int8>(%74) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %77
%76 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %77
%77 = apply %76(%63, %75, %54) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %78
%78 = tuple_extract %77 : $(Builtin.Word, Builtin.Int1), 0 // user: %79
%79 = index_raw_pointer %72 : $Builtin.RawPointer, %78 : $Builtin.Word // user: %80
%80 = pointer_to_address %79 : $Builtin.RawPointer to $*_ArrayBody // user: %81
%81 = struct_element_addr %80 : $*_ArrayBody, #_ArrayBody.count // user: %82
%82 = struct_element_addr %81 : $*Int, #Int.value // user: %83
%83 = load %82 : $*Builtin.Word // users: %84, %85
%84 = apply %29(%23, %83) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %85
cond_br %84, bb2, bb4(%83 : $Builtin.Word) // id: %85
bb2: // Preds: bb1 bb7 bb9
%86 = enum $Optional<Int>, #Optional.None!enumelt // user: %87
store %86 to %0 : $*Optional<Int> // id: %87
br bb3 // id: %88
bb3: // Preds: bb2 bb6
%89 = load %20 : $*Optional<Builtin.NativeObject> // user: %91
%90 = load %22 : $*@callee_owned (@out Bool, @in Int) -> () // user: %92
release_value %89 : $Optional<Builtin.NativeObject> // id: %91
strong_release %90 : $@callee_owned (@out Bool, @in Int) -> () // id: %92
dealloc_stack %12#0 : $*@local_storage Bool // id: %93
dealloc_stack %3#0 : $*@local_storage LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> // id: %94
%95 = struct_element_addr %1 : $*Array<Int>, #Array._buffer // user: %96
%96 = struct_element_addr %95 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // user: %97
%97 = load %96 : $*Optional<Builtin.NativeObject> // user: %98
release_value %97 : $Optional<Builtin.NativeObject> // id: %98
%99 = tuple () // user: %100
return %99 : $() // id: %100
bb4(%101 : $Builtin.Word): // Preds: bb1
%102 = integer_literal $Builtin.Word, 1 // users: %107, %132, %134, %171, %188, %190, %216
%103 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %127, %171, %178, %184, %216
%104 = integer_literal $Builtin.Int1, 0 // users: %132, %134, %154, %171, %188, %190, %194, %216
%105 = struct $Int (%23 : $Builtin.Word) // user: %106
%106 = enum $Optional<Int>, #Optional.Some!enumelt.1, %105 : $Int // user: %107
br bb5(%102 : $Builtin.Word, %106 : $Optional<Int>) // id: %107
bb5(%108 : $Builtin.Word, %109 : $Optional<Int>): // Preds: bb4 bb8
%110 = unchecked_enum_data %109 : $Optional<Int>, #Optional.Some!enumelt.1 // user: %120
%111 = alloc_stack $Bool // users: %202, %206, %210
%112 = load %20 : $*Optional<Builtin.NativeObject> // users: %115, %148
%113 = load %22 : $*@callee_owned (@out Bool, @in Int) -> () // users: %201, %202
%114 = alloc_stack $Int // users: %200, %202, %203
%115 = unchecked_ref_bit_cast %112 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %116
%116 = enum_is_tag $Builtin.Int1, %115 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %117
%117 = apply %31(%116, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %118
cond_fail %117 : $Builtin.Int1 // id: %118
%119 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %121
%120 = struct_extract %110 : $Int, #Int.value // users: %121, %162, %168, %168, %171, %174, %198
%121 = apply %119(%120, %23) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %164
%122 = metatype $@thick HeapObject.Type // user: %123
%123 = apply %24<HeapObject>(%122) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %127
%124 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %126, %183
%125 = metatype $@thick _ArrayBody.Type // users: %126, %177
%126 = apply %124<_ArrayBody>(%125) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %127, %134
%127 = apply %103(%123, %126, %13) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %128, %129
%128 = tuple_extract %127 : $(Builtin.Word, Builtin.Int1), 0 // user: %132
%129 = tuple_extract %127 : $(Builtin.Word, Builtin.Int1), 1 // user: %130
cond_fail %129 : $Builtin.Int1 // id: %130
%131 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %132, %134, %188, %190
%132 = apply %131(%128, %102, %104) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %133
%133 = tuple_extract %132 : $(Builtin.Word, Builtin.Int1), 0 // user: %140
%134 = apply %131(%126, %102, %104) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %135
%135 = tuple_extract %134 : $(Builtin.Word, Builtin.Int1), 0 // user: %138
%136 = integer_literal $Builtin.Word, -1 // users: %138, %192
%137 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %138, %192
%138 = apply %137(%135, %136) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %140
%139 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %140, %193
%140 = apply %139(%133, %138) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %154, %178
%141 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %142
%142 = apply %24<HeapBufferStorage<_ArrayBody, Int>?>(%141) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %145
%143 = metatype $@thick Builtin.NativeObject.Type // user: %144
%144 = apply %24<Builtin.NativeObject>(%143) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %145
%145 = apply %29(%142, %144) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %146
%146 = apply %31(%145, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %147
cond_fail %146 : $Builtin.Int1 // id: %147
%148 = unchecked_ref_bit_cast %112 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %149
%149 = ref_to_raw_pointer %148 : $Builtin.NativeObject to $Builtin.RawPointer // users: %156, %196
%150 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %152
%151 = metatype $@thick Int8.Type // user: %152
%152 = apply %150<Int8>(%151) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %154, %194
%153 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %154, %194
%154 = apply %153(%140, %152, %104) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %155
%155 = tuple_extract %154 : $(Builtin.Word, Builtin.Int1), 0 // user: %156
%156 = index_raw_pointer %149 : $Builtin.RawPointer, %155 : $Builtin.Word // user: %157
%157 = pointer_to_address %156 : $Builtin.RawPointer to $*_ArrayBody // user: %158
%158 = struct_element_addr %157 : $*_ArrayBody, #_ArrayBody.count // user: %159
%159 = struct_element_addr %158 : $*Int, #Int.value // user: %160
%160 = load %159 : $*Builtin.Word // user: %162
%161 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %162
%162 = apply %161(%120, %160) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %164
%163 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %164
%164 = apply %163(%121, %162) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %165
%165 = apply %31(%164, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %166
cond_fail %165 : $Builtin.Int1 // id: %166
%167 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %168
%168 = apply %167(%120, %120) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %169
%169 = apply %31(%168, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %170
cond_fail %169 : $Builtin.Int1 // id: %170
%171 = apply %103(%120, %102, %104) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %172
%172 = tuple_extract %171 : $(Builtin.Word, Builtin.Int1), 0 // user: %174
%173 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %174
%174 = apply %173(%172, %120) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %175
%175 = apply %31(%174, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %176
cond_fail %175 : $Builtin.Int1 // id: %176
%177 = apply %24<_ArrayBody>(%125) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %178
%178 = apply %103(%140, %177, %13) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %179, %180
%179 = tuple_extract %178 : $(Builtin.Word, Builtin.Int1), 0 // user: %184
%180 = tuple_extract %178 : $(Builtin.Word, Builtin.Int1), 1 // user: %181
cond_fail %180 : $Builtin.Int1 // id: %181
%182 = metatype $@thick Int.Type // user: %183
%183 = apply %124<Int>(%182) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %184, %190
%184 = apply %103(%179, %183, %13) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %185, %186
%185 = tuple_extract %184 : $(Builtin.Word, Builtin.Int1), 0 // user: %188
%186 = tuple_extract %184 : $(Builtin.Word, Builtin.Int1), 1 // user: %187
cond_fail %186 : $Builtin.Int1 // id: %187
%188 = apply %131(%185, %102, %104) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %189
%189 = tuple_extract %188 : $(Builtin.Word, Builtin.Int1), 0 // user: %193
%190 = apply %131(%183, %102, %104) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %191
%191 = tuple_extract %190 : $(Builtin.Word, Builtin.Int1), 0 // user: %192
%192 = apply %137(%191, %136) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %193
%193 = apply %139(%189, %192) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %194
%194 = apply %153(%193, %152, %104) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %195
%195 = tuple_extract %194 : $(Builtin.Word, Builtin.Int1), 0 // user: %196
%196 = index_raw_pointer %149 : $Builtin.RawPointer, %195 : $Builtin.Word // user: %197
%197 = pointer_to_address %196 : $Builtin.RawPointer to $*Int // user: %198
%198 = index_addr %197 : $*Int, %120 : $Builtin.Word // user: %199
%199 = load %198 : $*Int // user: %200
store %199 to %114#1 : $*Int // id: %200
strong_retain %113 : $@callee_owned (@out Bool, @in Int) -> () // id: %201
%202 = apply %113(%111#1, %114#1) : $@callee_owned (@out Bool, @in Int) -> ()
dealloc_stack %114#0 : $*@local_storage Int // id: %203
%204 = struct_element_addr %12#1 : $*Bool, #Bool.value // user: %205
%205 = load %204 : $*Builtin.Int1 // user: %209
%206 = struct_element_addr %111#1 : $*Bool, #Bool.value // user: %207
%207 = load %206 : $*Builtin.Int1 // user: %209
%208 = builtin_function_ref "cmp_eq_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %209
%209 = apply %208(%207, %205) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %211
dealloc_stack %111#0 : $*@local_storage Bool // id: %210
cond_br %209, bb6, bb7 // id: %211
bb6: // Preds: bb5
store %109 to %0 : $*Optional<Int> // id: %212
br bb3 // id: %213
bb7: // Preds: bb5
%214 = apply %29(%108, %101) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %215
cond_br %214, bb2, bb8 // id: %215
bb8: // Preds: bb7
%216 = apply %103(%108, %102, %104) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %217
%217 = tuple_extract %216 : $(Builtin.Word, Builtin.Int1), 0 // user: %220
%218 = struct $Int (%108 : $Builtin.Word) // user: %219
%219 = enum $Optional<Int>, #Optional.Some!enumelt.1, %218 : $Int // user: %220
br bb5(%217 : $Builtin.Word, %219 : $Optional<Int>) // id: %220
bb9: // Preds: bb0
retain_value %21 : $Optional<Builtin.NativeObject> // id: %221
br bb2 // id: %222
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift.CollectionType, Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.lazy <A : Swift.CollectionType>(A) -> Swift.LazyForwardCollection<A>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift.CollectionType, Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.lazy <A : Swift.CollectionType>(A) -> Swift.LazyForwardCollection<A> : $@thin (@out LazyForwardCollection<Array<Int>>, @in Array<Int>) -> () {
bb0(%0 : $*LazyForwardCollection<Array<Int>>, %1 : $*Array<Int>):
%2 = load %1 : $*Array<Int> // user: %3
%3 = struct $LazyForwardCollection<Array<Int>> (%2 : $Array<Int>) // user: %4
store %3 to %0 : $*LazyForwardCollection<Array<Int>> // id: %4
%5 = tuple () // user: %6
return %5 : $() // id: %6
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift.CollectionType, Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int, Swift.Bool> of Swift.LazyForwardCollection.map <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>)<E>((A.Generator.Element) -> E) -> Swift.LazyForwardCollection<Swift.MapCollectionView<A, E>>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift.CollectionType, Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int, Swift.Bool> of Swift.LazyForwardCollection.map <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>)<E>((A.Generator.Element) -> E) -> Swift.LazyForwardCollection<Swift.MapCollectionView<A, E>> : $@cc(method) @thin (@out LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, @owned @callee_owned (@out Bool, @in Int) -> (), @in LazyForwardCollection<Array<Int>>) -> () {
bb0(%0 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, %1 : $@callee_owned (@out Bool, @in Int) -> (), %2 : $*LazyForwardCollection<Array<Int>>):
%3 = struct_element_addr %2 : $*LazyForwardCollection<Array<Int>>, #LazyForwardCollection._base // user: %4
%4 = load %3 : $*Array<Int> // user: %5
%5 = struct $MapCollectionView<Array<Int>, Bool> (%4 : $Array<Int>, %1 : $@callee_owned (@out Bool, @in Int) -> ()) // user: %6
%6 = struct $LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> (%5 : $MapCollectionView<Array<Int>, Bool>) // user: %7
store %6 to %0 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> // id: %7
%8 = tuple () // user: %9
return %8 : $() // id: %9
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift.CollectionType, Swift.Bool, Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.MapCollectionView.init <A : Swift.CollectionType, B>(Swift.MapCollectionView<A, B>.Type)(_base : A, _transform : (A.Generator.Element) -> B) -> Swift.MapCollectionView<A, B>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift.CollectionType, Swift.Bool, Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.MapCollectionView.init <A : Swift.CollectionType, B>(Swift.MapCollectionView<A, B>.Type)(_base : A, _transform : (A.Generator.Element) -> B) -> Swift.MapCollectionView<A, B> : $@thin (@out MapCollectionView<Array<Int>, Bool>, @in Array<Int>, @owned @callee_owned (@out Bool, @in Int) -> (), @thin MapCollectionView<Array<Int>, Bool>.Type) -> () {
bb0(%0 : $*MapCollectionView<Array<Int>, Bool>, %1 : $*Array<Int>, %2 : $@callee_owned (@out Bool, @in Int) -> (), %3 : $@thin MapCollectionView<Array<Int>, Bool>.Type):
%4 = struct_element_addr %0 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._base // user: %6
%5 = load %1 : $*Array<Int> // user: %6
store %5 to %4 : $*Array<Int> // id: %6
%7 = struct_element_addr %0 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._transform // user: %8
store %2 to %7 : $*@callee_owned (@out Bool, @in Int) -> () // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift.CollectionType, Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.LazyForwardCollection.init <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>.Type)(A) -> Swift.LazyForwardCollection<A>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift.CollectionType, Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.LazyForwardCollection.init <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>.Type)(A) -> Swift.LazyForwardCollection<A> : $@thin (@out LazyForwardCollection<Array<Int>>, @in Array<Int>, @thin LazyForwardCollection<Array<Int>>.Type) -> () {
bb0(%0 : $*LazyForwardCollection<Array<Int>>, %1 : $*Array<Int>, %2 : $@thin LazyForwardCollection<Array<Int>>.Type):
%3 = load %1 : $*Array<Int> // user: %4
%4 = struct $LazyForwardCollection<Array<Int>> (%3 : $Array<Int>) // user: %5
store %4 to %0 : $*LazyForwardCollection<Array<Int>> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// specialization <Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> with Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.LazyForwardCollection.init <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>.Type)(A) -> Swift.LazyForwardCollection<A>
sil shared specialization <Swift.MapCollectionView<[Swift.Int], Swift.Bool> with Swift.MapCollectionView<[Swift.Int], Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.LazyForwardCollection.init <A : Swift.CollectionType>(Swift.LazyForwardCollection<A>.Type)(A) -> Swift.LazyForwardCollection<A> : $@thin (@out LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, @in MapCollectionView<Array<Int>, Bool>, @thin LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>.Type) -> () {
bb0(%0 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, %1 : $*MapCollectionView<Array<Int>, Bool>, %2 : $@thin LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>.Type):
%3 = load %1 : $*MapCollectionView<Array<Int>, Bool> // user: %4
%4 = struct $LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> (%3 : $MapCollectionView<Array<Int>, Bool>) // user: %5
store %4 to %0 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// specialization <Swift.LazyForwardCollection<Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool>> with Swift.LazyForwardCollection<Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool>> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> : Swift.GeneratorType, Swift.Bool with Swift.Bool : Swift.Equatable, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.find <A : Swift.CollectionType>(A, A.Generator.Element) -> Swift.Optional<A.Index>
sil shared specialization <Swift.LazyForwardCollection<Swift.MapCollectionView<[Swift.Int], Swift.Bool>> with Swift.LazyForwardCollection<Swift.MapCollectionView<[Swift.Int], Swift.Bool>> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> : Swift.GeneratorType, Swift.Bool with Swift.Bool : Swift.Equatable, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.find <A : Swift.CollectionType>(A, A.Generator.Element) -> A.Index? : $@thin (@out Optional<Int>, @in LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, @in Bool) -> () {
bb0(%0 : $*Optional<Int>, %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, %2 : $*Bool):
%3 = struct_element_addr %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, #LazyForwardCollection._base // users: %4, %8
%4 = struct_element_addr %3 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._base // user: %5
%5 = struct_element_addr %4 : $*Array<Int>, #Array._buffer // user: %6
%6 = struct_element_addr %5 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // users: %7, %86, %188
%7 = load %6 : $*Optional<Builtin.NativeObject> // users: %26, %58, %73
%8 = struct_element_addr %3 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._transform // users: %87, %189
%9 = integer_literal $Builtin.Word, 0 // users: %71, %79, %95
%10 = integer_literal $Builtin.Int1, -1 // users: %19, %24, %35, %56, %91, %101, %120, %139, %143, %149, %152, %158
%11 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %13, %15, %22, %30, %52, %54, %97, %116, %118, %151
%12 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %13
%13 = apply %11<Builtin.NativeObject?>(%12) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %17
%14 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %15
%15 = apply %11<_ContiguousArrayStorage<Int>?>(%14) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %17, %23
%16 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %17, %23, %55, %71, %119, %194
%17 = apply %16(%13, %15) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %19
%18 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %19, %24, %56, %91, %120, %139, %143, %149
%19 = apply %18(%17, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %20
cond_fail %19 : $Builtin.Int1 // id: %20
%21 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %22
%22 = apply %11<HeapBuffer<_ArrayBody, Int>>(%21) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %23
%23 = apply %16(%15, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %24
%24 = apply %18(%23, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %25
cond_fail %24 : $Builtin.Int1 // id: %25
%26 = unchecked_ref_bit_cast %7 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %27
%27 = enum_is_tag $Builtin.Int1, %26 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %28
cond_br %27, bb1, bb2 // id: %28
bb1: // Preds: bb0
%29 = metatype $@thick HeapObject.Type // user: %30
%30 = apply %11<HeapObject>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %35
%31 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %33
%32 = metatype $@thick _ArrayBody.Type // user: %33
%33 = apply %31<_ArrayBody>(%32) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %35, %44
%34 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %35
%35 = apply %34(%30, %33, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %36, %37
%36 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 0 // user: %42
%37 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 1 // user: %38
cond_fail %37 : $Builtin.Int1 // id: %38
%39 = integer_literal $Builtin.Word, 1 // users: %42, %44
%40 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %42, %44
%41 = integer_literal $Builtin.Int1, 0 // users: %42, %44, %64
%42 = apply %40(%36, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %43
%43 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 0 // user: %50
%44 = apply %40(%33, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %45
%45 = tuple_extract %44 : $(Builtin.Word, Builtin.Int1), 0 // user: %48
%46 = integer_literal $Builtin.Word, -1 // user: %48
%47 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %48
%48 = apply %47(%45, %46) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %50
%49 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %50
%50 = apply %49(%43, %48) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %64
%51 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %52
%52 = apply %11<HeapBufferStorage<_ArrayBody, Int>?>(%51) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %55
%53 = metatype $@thick Builtin.NativeObject.Type // user: %54
%54 = apply %11<Builtin.NativeObject>(%53) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %55
%55 = apply %16(%52, %54) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %56
%56 = apply %18(%55, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %57
cond_fail %56 : $Builtin.Int1 // id: %57
%58 = unchecked_ref_bit_cast %7 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %59
%59 = ref_to_raw_pointer %58 : $Builtin.NativeObject to $Builtin.RawPointer // user: %66
%60 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %62
%61 = metatype $@thick Int8.Type // user: %62
%62 = apply %60<Int8>(%61) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %64
%63 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %64
%64 = apply %63(%50, %62, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %65
%65 = tuple_extract %64 : $(Builtin.Word, Builtin.Int1), 0 // user: %66
%66 = index_raw_pointer %59 : $Builtin.RawPointer, %65 : $Builtin.Word // user: %67
%67 = pointer_to_address %66 : $Builtin.RawPointer to $*_ArrayBody // user: %68
%68 = struct_element_addr %67 : $*_ArrayBody, #_ArrayBody.count // user: %69
%69 = struct_element_addr %68 : $*Int, #Int.value // user: %70
%70 = load %69 : $*Builtin.Word // users: %71, %72
%71 = apply %16(%9, %70) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %72
cond_br %71, bb9, bb3(%70 : $Builtin.Word) // id: %72
bb2: // Preds: bb0
retain_value %7 : $Optional<Builtin.NativeObject> // id: %73
br bb9 // id: %74
bb3(%75 : $Builtin.Word): // Preds: bb1
%76 = integer_literal $Builtin.Word, 1 // users: %81, %106, %108, %145, %162, %164, %196
%77 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %101, %145, %152, %158, %196
%78 = integer_literal $Builtin.Int1, 0 // users: %106, %108, %128, %145, %162, %164, %168, %196
%79 = struct $Int (%9 : $Builtin.Word) // user: %80
%80 = enum $Optional<Int>, #Optional.Some!enumelt.1, %79 : $Int // user: %81
br bb4(%76 : $Builtin.Word, %80 : $Optional<Int>) // id: %81
bb4(%82 : $Builtin.Word, %83 : $Optional<Int>): // Preds: bb3 bb8
%84 = unchecked_enum_data %83 : $Optional<Int>, #Optional.Some!enumelt.1 // user: %94
%85 = alloc_stack $Bool // users: %176, %180, %184
%86 = load %6 : $*Optional<Builtin.NativeObject> // users: %89, %122
%87 = load %8 : $*@callee_owned (@out Bool, @in Int) -> () // users: %175, %176
%88 = alloc_stack $Int // users: %174, %176, %177
%89 = unchecked_ref_bit_cast %86 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %90
%90 = enum_is_tag $Builtin.Int1, %89 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %91
%91 = apply %18(%90, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %92
cond_fail %91 : $Builtin.Int1 // id: %92
%93 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %95
%94 = struct_extract %84 : $Int, #Int.value // users: %95, %136, %142, %142, %145, %148, %172
%95 = apply %93(%94, %9) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %138
%96 = metatype $@thick HeapObject.Type // user: %97
%97 = apply %11<HeapObject>(%96) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %101
%98 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %100, %157
%99 = metatype $@thick _ArrayBody.Type // users: %100, %151
%100 = apply %98<_ArrayBody>(%99) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %101, %108
%101 = apply %77(%97, %100, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %102, %103
%102 = tuple_extract %101 : $(Builtin.Word, Builtin.Int1), 0 // user: %106
%103 = tuple_extract %101 : $(Builtin.Word, Builtin.Int1), 1 // user: %104
cond_fail %103 : $Builtin.Int1 // id: %104
%105 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %106, %108, %162, %164
%106 = apply %105(%102, %76, %78) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %107
%107 = tuple_extract %106 : $(Builtin.Word, Builtin.Int1), 0 // user: %114
%108 = apply %105(%100, %76, %78) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %109
%109 = tuple_extract %108 : $(Builtin.Word, Builtin.Int1), 0 // user: %112
%110 = integer_literal $Builtin.Word, -1 // users: %112, %166
%111 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %112, %166
%112 = apply %111(%109, %110) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %114
%113 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %114, %167
%114 = apply %113(%107, %112) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %128, %152
%115 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %116
%116 = apply %11<HeapBufferStorage<_ArrayBody, Int>?>(%115) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %119
%117 = metatype $@thick Builtin.NativeObject.Type // user: %118
%118 = apply %11<Builtin.NativeObject>(%117) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %119
%119 = apply %16(%116, %118) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %120
%120 = apply %18(%119, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %121
cond_fail %120 : $Builtin.Int1 // id: %121
%122 = unchecked_ref_bit_cast %86 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %123
%123 = ref_to_raw_pointer %122 : $Builtin.NativeObject to $Builtin.RawPointer // users: %130, %170
%124 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %126
%125 = metatype $@thick Int8.Type // user: %126
%126 = apply %124<Int8>(%125) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %128, %168
%127 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %128, %168
%128 = apply %127(%114, %126, %78) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %129
%129 = tuple_extract %128 : $(Builtin.Word, Builtin.Int1), 0 // user: %130
%130 = index_raw_pointer %123 : $Builtin.RawPointer, %129 : $Builtin.Word // user: %131
%131 = pointer_to_address %130 : $Builtin.RawPointer to $*_ArrayBody // user: %132
%132 = struct_element_addr %131 : $*_ArrayBody, #_ArrayBody.count // user: %133
%133 = struct_element_addr %132 : $*Int, #Int.value // user: %134
%134 = load %133 : $*Builtin.Word // user: %136
%135 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %136
%136 = apply %135(%94, %134) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %138
%137 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %138
%138 = apply %137(%95, %136) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %139
%139 = apply %18(%138, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %140
cond_fail %139 : $Builtin.Int1 // id: %140
%141 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %142
%142 = apply %141(%94, %94) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %143
%143 = apply %18(%142, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %144
cond_fail %143 : $Builtin.Int1 // id: %144
%145 = apply %77(%94, %76, %78) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %146
%146 = tuple_extract %145 : $(Builtin.Word, Builtin.Int1), 0 // user: %148
%147 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %148
%148 = apply %147(%146, %94) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %149
%149 = apply %18(%148, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %150
cond_fail %149 : $Builtin.Int1 // id: %150
%151 = apply %11<_ArrayBody>(%99) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %152
%152 = apply %77(%114, %151, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %153, %154
%153 = tuple_extract %152 : $(Builtin.Word, Builtin.Int1), 0 // user: %158
%154 = tuple_extract %152 : $(Builtin.Word, Builtin.Int1), 1 // user: %155
cond_fail %154 : $Builtin.Int1 // id: %155
%156 = metatype $@thick Int.Type // user: %157
%157 = apply %98<Int>(%156) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %158, %164
%158 = apply %77(%153, %157, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %159, %160
%159 = tuple_extract %158 : $(Builtin.Word, Builtin.Int1), 0 // user: %162
%160 = tuple_extract %158 : $(Builtin.Word, Builtin.Int1), 1 // user: %161
cond_fail %160 : $Builtin.Int1 // id: %161
%162 = apply %105(%159, %76, %78) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %163
%163 = tuple_extract %162 : $(Builtin.Word, Builtin.Int1), 0 // user: %167
%164 = apply %105(%157, %76, %78) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %165
%165 = tuple_extract %164 : $(Builtin.Word, Builtin.Int1), 0 // user: %166
%166 = apply %111(%165, %110) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %167
%167 = apply %113(%163, %166) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %168
%168 = apply %127(%167, %126, %78) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %169
%169 = tuple_extract %168 : $(Builtin.Word, Builtin.Int1), 0 // user: %170
%170 = index_raw_pointer %123 : $Builtin.RawPointer, %169 : $Builtin.Word // user: %171
%171 = pointer_to_address %170 : $Builtin.RawPointer to $*Int // user: %172
%172 = index_addr %171 : $*Int, %94 : $Builtin.Word // user: %173
%173 = load %172 : $*Int // user: %174
store %173 to %88#1 : $*Int // id: %174
strong_retain %87 : $@callee_owned (@out Bool, @in Int) -> () // id: %175
%176 = apply %87(%85#1, %88#1) : $@callee_owned (@out Bool, @in Int) -> ()
dealloc_stack %88#0 : $*@local_storage Int // id: %177
%178 = struct_element_addr %2 : $*Bool, #Bool.value // user: %179
%179 = load %178 : $*Builtin.Int1 // user: %183
%180 = struct_element_addr %85#1 : $*Bool, #Bool.value // user: %181
%181 = load %180 : $*Builtin.Int1 // user: %183
%182 = builtin_function_ref "cmp_eq_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %183
%183 = apply %182(%181, %179) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %185
dealloc_stack %85#0 : $*@local_storage Bool // id: %184
cond_br %183, bb5, bb7 // id: %185
bb5: // Preds: bb4
store %83 to %0 : $*Optional<Int> // id: %186
br bb6 // id: %187
bb6: // Preds: bb5 bb9
%188 = load %6 : $*Optional<Builtin.NativeObject> // user: %190
%189 = load %8 : $*@callee_owned (@out Bool, @in Int) -> () // user: %191
release_value %188 : $Optional<Builtin.NativeObject> // id: %190
strong_release %189 : $@callee_owned (@out Bool, @in Int) -> () // id: %191
%192 = tuple () // user: %193
return %192 : $() // id: %193
bb7: // Preds: bb4
%194 = apply %16(%82, %75) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %195
cond_br %194, bb9, bb8 // id: %195
bb8: // Preds: bb7
%196 = apply %77(%82, %76, %78) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %197
%197 = tuple_extract %196 : $(Builtin.Word, Builtin.Int1), 0 // user: %200
%198 = struct $Int (%82 : $Builtin.Word) // user: %199
%199 = enum $Optional<Int>, #Optional.Some!enumelt.1, %198 : $Int // user: %200
br bb4(%197 : $Builtin.Word, %199 : $Optional<Int>) // id: %200
bb9: // Preds: bb1 bb2 bb7
%201 = enum $Optional<Int>, #Optional.None!enumelt // user: %202
store %201 to %0 : $*Optional<Int> // id: %202
br bb6 // id: %203
}
// specialization <Swift.LazyForwardCollection<Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool>> with Swift.LazyForwardCollection<Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool>> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.indices <A : Swift.CollectionType>(A) -> Swift.Range<A.Index>
sil shared specialization <Swift.LazyForwardCollection<Swift.MapCollectionView<[Swift.Int], Swift.Bool>> with Swift.LazyForwardCollection<Swift.MapCollectionView<[Swift.Int], Swift.Bool>> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.indices <A : Swift.CollectionType>(A) -> Swift.Range<A.Index> : $@thin (@out Range<Int>, @in LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>) -> () {
bb0(%0 : $*Range<Int>, %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>):
%2 = struct_element_addr %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, #LazyForwardCollection._base // users: %3, %6
%3 = struct_element_addr %2 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._base // user: %4
%4 = struct_element_addr %3 : $*Array<Int>, #Array._buffer // user: %5
%5 = struct_element_addr %4 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // users: %8, %76
%6 = struct_element_addr %2 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._transform // user: %77
%7 = integer_literal $Builtin.Word, 0 // users: %73, %83
%8 = load %5 : $*Optional<Builtin.NativeObject> // users: %25, %57, %82
%9 = integer_literal $Builtin.Int1, -1 // users: %18, %23, %34, %55
%10 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %12, %14, %21, %29, %51, %53
%11 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %12
%12 = apply %10<Builtin.NativeObject?>(%11) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %16
%13 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %14
%14 = apply %10<_ContiguousArrayStorage<Int>?>(%13) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %16, %22
%15 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %16, %22, %54
%16 = apply %15(%12, %14) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %18
%17 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %18, %23, %55
%18 = apply %17(%16, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %19
cond_fail %18 : $Builtin.Int1 // id: %19
%20 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %21
%21 = apply %10<HeapBuffer<_ArrayBody, Int>>(%20) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %22
%22 = apply %15(%14, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %23
%23 = apply %17(%22, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %24
cond_fail %23 : $Builtin.Int1 // id: %24
%25 = unchecked_ref_bit_cast %8 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %26
%26 = enum_is_tag $Builtin.Int1, %25 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %27
cond_br %26, bb1, bb3 // id: %27
bb1: // Preds: bb0
%28 = metatype $@thick HeapObject.Type // user: %29
%29 = apply %10<HeapObject>(%28) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %34
%30 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %32
%31 = metatype $@thick _ArrayBody.Type // user: %32
%32 = apply %30<_ArrayBody>(%31) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %34, %43
%33 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %34
%34 = apply %33(%29, %32, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %35, %36
%35 = tuple_extract %34 : $(Builtin.Word, Builtin.Int1), 0 // user: %41
%36 = tuple_extract %34 : $(Builtin.Word, Builtin.Int1), 1 // user: %37
cond_fail %36 : $Builtin.Int1 // id: %37
%38 = integer_literal $Builtin.Word, 1 // users: %41, %43
%39 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %41, %43
%40 = integer_literal $Builtin.Int1, 0 // users: %41, %43, %63
%41 = apply %39(%35, %38, %40) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %42
%42 = tuple_extract %41 : $(Builtin.Word, Builtin.Int1), 0 // user: %49
%43 = apply %39(%32, %38, %40) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %44
%44 = tuple_extract %43 : $(Builtin.Word, Builtin.Int1), 0 // user: %47
%45 = integer_literal $Builtin.Word, -1 // user: %47
%46 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %47
%47 = apply %46(%44, %45) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %49
%48 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %49
%49 = apply %48(%42, %47) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %63
%50 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %51
%51 = apply %10<HeapBufferStorage<_ArrayBody, Int>?>(%50) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %54
%52 = metatype $@thick Builtin.NativeObject.Type // user: %53
%53 = apply %10<Builtin.NativeObject>(%52) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %54
%54 = apply %15(%51, %53) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %55
%55 = apply %17(%54, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %56
cond_fail %55 : $Builtin.Int1 // id: %56
%57 = unchecked_ref_bit_cast %8 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %58
%58 = ref_to_raw_pointer %57 : $Builtin.NativeObject to $Builtin.RawPointer // user: %65
%59 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %61
%60 = metatype $@thick Int8.Type // user: %61
%61 = apply %59<Int8>(%60) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %63
%62 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %63
%63 = apply %62(%49, %61, %40) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %64
%64 = tuple_extract %63 : $(Builtin.Word, Builtin.Int1), 0 // user: %65
%65 = index_raw_pointer %58 : $Builtin.RawPointer, %64 : $Builtin.Word // user: %66
%66 = pointer_to_address %65 : $Builtin.RawPointer to $*_ArrayBody // user: %67
%67 = struct_element_addr %66 : $*_ArrayBody, #_ArrayBody.count // user: %68
%68 = struct_element_addr %67 : $*Int, #Int.value // user: %69
%69 = load %68 : $*Builtin.Word // user: %70
br bb2(%69 : $Builtin.Word) // id: %70
bb2(%71 : $Builtin.Word): // Preds: bb1 bb3
%72 = struct $Int (%71 : $Builtin.Word) // user: %74
%73 = struct $Int (%7 : $Builtin.Word) // user: %74
%74 = struct $Range<Int> (%73 : $Int, %72 : $Int) // user: %75
store %74 to %0 : $*Range<Int> // id: %75
%76 = load %5 : $*Optional<Builtin.NativeObject> // user: %78
%77 = load %6 : $*@callee_owned (@out Bool, @in Int) -> () // user: %79
release_value %76 : $Optional<Builtin.NativeObject> // id: %78
strong_release %77 : $@callee_owned (@out Bool, @in Int) -> () // id: %79
%80 = tuple () // user: %81
return %80 : $() // id: %81
bb3: // Preds: bb0
retain_value %8 : $Optional<Builtin.NativeObject> // id: %82
br bb2(%7 : $Builtin.Word) // id: %83
}
// protocol witness for Swift._CollectionType.startIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.LazyForwardCollection : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.startIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.LazyForwardCollection : Swift._CollectionType : $@cc(witness_method) @thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<S>.Index, @inout LazyForwardCollection<S>) -> () {
bb0(%0 : $*S.Index, %1 : $*LazyForwardCollection<S>):
%2 = alloc_stack $LazyForwardCollection<S> // users: %3, %5, %6
copy_addr %1 to [initialization] %2#1 : $*LazyForwardCollection<S> // id: %3
// function_ref Swift.LazyForwardCollection.startIndex.getter : A.Index
%4 = function_ref Swift.LazyForwardCollection.startIndex.getter : A.Index : $@cc(method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @in LazyForwardCollection<τ_0_0>) -> () // user: %5
%5 = apply %4<S, S.Generator, S.Generator.Element, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, S._Element>(%0, %2#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @in LazyForwardCollection<τ_0_0>) -> () // user: %7
dealloc_stack %2#0 : $*@local_storage LazyForwardCollection<S> // id: %6
return %5 : $() // id: %7
}
// protocol witness for Swift._CollectionType.endIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.LazyForwardCollection : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.endIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.LazyForwardCollection : Swift._CollectionType : $@cc(witness_method) @thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<S>.Index, @inout LazyForwardCollection<S>) -> () {
bb0(%0 : $*S.Index, %1 : $*LazyForwardCollection<S>):
%2 = alloc_stack $LazyForwardCollection<S> // users: %3, %5, %6
copy_addr %1 to [initialization] %2#1 : $*LazyForwardCollection<S> // id: %3
// function_ref Swift.LazyForwardCollection.endIndex.getter : A.Index
%4 = function_ref Swift.LazyForwardCollection.endIndex.getter : A.Index : $@cc(method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @in LazyForwardCollection<τ_0_0>) -> () // user: %5
%5 = apply %4<S, S.Generator, S.Generator.Element, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, S._Element>(%0, %2#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @in LazyForwardCollection<τ_0_0>) -> () // user: %7
dealloc_stack %2#0 : $*@local_storage LazyForwardCollection<S> // id: %6
return %5 : $() // id: %7
}
// protocol witness for Swift._CollectionType.subscript.getter (Swift._CollectionType.Self.Index) -> Swift._CollectionType.Self._Element in conformance Swift.LazyForwardCollection : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.subscript.getter (Swift._CollectionType.Self.Index) -> Swift._CollectionType.Self._Element in conformance Swift.LazyForwardCollection : Swift._CollectionType : $@cc(witness_method) @thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<S>._Element, @in LazyForwardCollection<S>.Index, @inout LazyForwardCollection<S>) -> () {
bb0(%0 : $*S.Generator.Element, %1 : $*S.Index, %2 : $*LazyForwardCollection<S>):
%3 = alloc_stack $LazyForwardCollection<S> // users: %4, %6, %7
copy_addr %2 to [initialization] %3#1 : $*LazyForwardCollection<S> // id: %4
// function_ref Swift.LazyForwardCollection.subscript.getter (A.Index) -> A.Generator.Element
%5 = function_ref Swift.LazyForwardCollection.subscript.getter (A.Index) -> A.Generator.Element : $@cc(method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @in LazyForwardCollection<τ_0_0>) -> () // user: %6
%6 = apply %5<S, S.Generator, S.Generator.Element, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, S._Element>(%0, %1, %3#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @in LazyForwardCollection<τ_0_0>) -> () // user: %8
dealloc_stack %3#0 : $*@local_storage LazyForwardCollection<S> // id: %7
return %6 : $() // id: %8
}
// specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.Range.init <A : Swift.ForwardIndexType>(Swift.Range<A>.Type)(start : A, end : A) -> Swift.Range<A>
sil shared [transparent] specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.Range.init <A : Swift.ForwardIndexType>(Swift.Range<A>.Type)(start : A, end : A) -> Swift.Range<A> : $@thin (@out Range<Int>, @in Int, @in Int, @thin Range<Int>.Type) -> () {
bb0(%0 : $*Range<Int>, %1 : $*Int, %2 : $*Int, %3 : $@thin Range<Int>.Type):
%4 = load %1 : $*Int // user: %6
%5 = load %2 : $*Int // user: %6
%6 = struct $Range<Int> (%4 : $Int, %5 : $Int) // user: %7
store %6 to %0 : $*Range<Int> // id: %7
%8 = tuple () // user: %9
return %8 : $() // id: %9
}
// specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.Range.generate <A : Swift.ForwardIndexType>(Swift.Range<A>)() -> Swift.RangeGenerator<A>
sil shared specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.Range.generate <A : Swift.ForwardIndexType>(Swift.Range<A>)() -> Swift.RangeGenerator<A> : $@cc(method) @thin (@out RangeGenerator<Int>, @in Range<Int>) -> () {
bb0(%0 : $*RangeGenerator<Int>, %1 : $*Range<Int>):
%2 = struct_element_addr %1 : $*Range<Int>, #Range._startIndex // user: %3
%3 = struct_element_addr %2 : $*Int, #Int.value // user: %4
%4 = load %3 : $*Builtin.Word // user: %8
%5 = struct_element_addr %1 : $*Range<Int>, #Range._endIndex // user: %6
%6 = struct_element_addr %5 : $*Int, #Int.value // user: %7
%7 = load %6 : $*Builtin.Word // user: %9
%8 = struct $Int (%4 : $Builtin.Word) // user: %10
%9 = struct $Int (%7 : $Builtin.Word) // user: %10
%10 = struct $RangeGenerator<Int> (%8 : $Int, %9 : $Int) // user: %11
store %10 to %0 : $*RangeGenerator<Int> // id: %11
%12 = tuple () // user: %13
return %12 : $() // id: %13
}
// specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.RangeGenerator.init <A : Swift.ForwardIndexType>(Swift.RangeGenerator<A>.Type)(Swift.Range<A>) -> Swift.RangeGenerator<A>
sil shared [transparent] specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.RangeGenerator.init <A : Swift.ForwardIndexType>(Swift.RangeGenerator<A>.Type)(Swift.Range<A>) -> Swift.RangeGenerator<A> : $@thin (@out RangeGenerator<Int>, @in Range<Int>, @thin RangeGenerator<Int>.Type) -> () {
bb0(%0 : $*RangeGenerator<Int>, %1 : $*Range<Int>, %2 : $@thin RangeGenerator<Int>.Type):
%3 = alloc_stack $Range<Int> // users: %5, %8, %11
%4 = load %1 : $*Range<Int> // user: %5
store %4 to %3#1 : $*Range<Int> // id: %5
// function_ref Swift.Range.startIndex.getter : A
%6 = function_ref Swift.Range.startIndex.getter : A : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0, @in Range<τ_0_0>) -> () // user: %8
%7 = alloc_stack $Int // users: %8, %9, %10
%8 = apply %6<Int, Int, Int, Int>(%7#1, %3#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0, @in Range<τ_0_0>) -> ()
%9 = load %7#1 : $*Int // user: %21
dealloc_stack %7#0 : $*@local_storage Int // id: %10
dealloc_stack %3#0 : $*@local_storage Range<Int> // id: %11
%12 = alloc_stack $Range<Int> // users: %14, %17, %20
%13 = load %1 : $*Range<Int> // user: %14
store %13 to %12#1 : $*Range<Int> // id: %14
// function_ref Swift.Range.endIndex.getter : A
%15 = function_ref Swift.Range.endIndex.getter : A : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0, @in Range<τ_0_0>) -> () // user: %17
%16 = alloc_stack $Int // users: %17, %18, %19
%17 = apply %15<Int, Int, Int, Int>(%16#1, %12#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0, @in Range<τ_0_0>) -> ()
%18 = load %16#1 : $*Int // user: %21
dealloc_stack %16#0 : $*@local_storage Int // id: %19
dealloc_stack %12#0 : $*@local_storage Range<Int> // id: %20
%21 = struct $RangeGenerator<Int> (%9 : $Int, %18 : $Int) // user: %22
store %21 to %0 : $*RangeGenerator<Int> // id: %22
%23 = tuple () // user: %24
return %23 : $() // id: %24
}
// specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.RangeGenerator.next <A : Swift.ForwardIndexType>(inout Swift.RangeGenerator<A>)() -> Swift.Optional<A>
sil shared specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.RangeGenerator.next <A : Swift.ForwardIndexType>(inout Swift.RangeGenerator<A>)() -> A? : $@cc(method) @thin (@out Optional<Int>, @inout RangeGenerator<Int>) -> () {
bb0(%0 : $*Optional<Int>, %1 : $*RangeGenerator<Int>):
%2 = struct_element_addr %1 : $*RangeGenerator<Int>, #RangeGenerator.startIndex // users: %3, %22
%3 = struct_element_addr %2 : $*Int, #Int.value // user: %4
%4 = load %3 : $*Builtin.Word // users: %9, %19, %23
%5 = struct_element_addr %1 : $*RangeGenerator<Int>, #RangeGenerator.endIndex // user: %6
%6 = struct_element_addr %5 : $*Int, #Int.value // user: %7
%7 = load %6 : $*Builtin.Word // user: %9
%8 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %9
%9 = apply %8(%4, %7) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %10
cond_br %9, bb1, bb3 // id: %10
bb1: // Preds: bb0
%11 = enum $Optional<Int>, #Optional.None!enumelt // user: %12
store %11 to %0 : $*Optional<Int> // id: %12
br bb2 // id: %13
bb2: // Preds: bb1 bb3
%14 = tuple () // user: %15
return %14 : $() // id: %15
bb3: // Preds: bb0
%16 = integer_literal $Builtin.Word, 1 // user: %19
%17 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %19
%18 = integer_literal $Builtin.Int1, 0 // user: %19
%19 = apply %17(%4, %16, %18) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %20
%20 = tuple_extract %19 : $(Builtin.Word, Builtin.Int1), 0 // user: %21
%21 = struct $Int (%20 : $Builtin.Word) // user: %22
store %21 to %2 : $*Int // id: %22
%23 = struct $Int (%4 : $Builtin.Word) // user: %24
%24 = enum $Optional<Int>, #Optional.Some!enumelt.1, %23 : $Int // user: %25
store %24 to %0 : $*Optional<Int> // id: %25
br bb2 // id: %26
}
// specialization <Swift.Int with Swift.Int : Swift._Incrementable> of Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A
sil shared [transparent] specialization <Swift.Int with Swift.Int : Swift._Incrementable> of Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A : $@thin (@out Int, @inout Int) -> () {
bb0(%0 : $*Int, %1 : $*Int):
%2 = load %1 : $*Int // users: %3, %11
%3 = struct_extract %2 : $Int, #Int.value // user: %7
%4 = integer_literal $Builtin.Word, 1 // user: %7
%5 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %7
%6 = integer_literal $Builtin.Int1, 0 // user: %7
%7 = apply %5(%3, %4, %6) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %8
%8 = tuple_extract %7 : $(Builtin.Word, Builtin.Int1), 0 // user: %9
%9 = struct $Int (%8 : $Builtin.Word) // user: %10
store %9 to %1 : $*Int // id: %10
store %2 to %0 : $*Int // id: %11
%12 = tuple () // user: %13
return %12 : $() // id: %13
}
// specialization <Swift.Int> of Swift._injectValueIntoOptional <A>(A) -> Swift.Optional<A>
sil shared [transparent] specialization <Swift.Int> of Swift._injectValueIntoOptional <A>(A) -> A? : $@thin (@out Optional<Int>, @in Int) -> () {
bb0(%0 : $*Optional<Int>, %1 : $*Int):
// function_ref Swift.Optional.Some <A>(Swift.Optional<A>.Type)(A) -> Swift.Optional<A>
%2 = function_ref Swift.Optional.Some <A>(A?.Type)(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0, @thin Optional<τ_0_0>.Type) -> () // user: %7
%3 = metatype $@thin Optional<Int>.Type // user: %7
%4 = alloc_stack $Int // users: %6, %7, %8
%5 = load %1 : $*Int // user: %6
store %5 to %4#1 : $*Int // id: %6
%7 = apply [transparent] %2<Int>(%0, %4#1, %3) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0, @thin Optional<τ_0_0>.Type) -> ()
dealloc_stack %4#0 : $*@local_storage Int // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift.CollectionType, Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of indexof.v2_index_of <A : Swift.CollectionType>(A, (A.Generator.Element) -> Swift.Bool) -> Swift.Optional<A.Index>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift.CollectionType, Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of indexof.v2_index_of <A : Swift.CollectionType>(A, (A.Generator.Element) -> Swift.Bool) -> A.Index? : $@thin (@out Optional<Int>, @in Array<Int>, @owned @callee_owned (@in Int) -> Bool) -> () {
bb0(%0 : $*Optional<Int>, %1 : $*Array<Int>, %2 : $@callee_owned (@in Int) -> Bool):
%3 = struct_element_addr %1 : $*Array<Int>, #Array._buffer // user: %4
%4 = struct_element_addr %3 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // users: %5, %143
%5 = load %4 : $*Optional<Builtin.NativeObject> // users: %18, %24, %26, %58, %71, %75, %140
%6 = integer_literal $Builtin.Word, 0 // users: %72, %74, %74, %87, %152
%7 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %14, %21, %55, %72, %150, %152
%8 = integer_literal $Builtin.Int1, -1 // users: %16, %22, %35, %56, %84, %93, %97, %101, %104, %110, %127
%9 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %11, %13, %20, %30, %52, %54, %103
%10 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %11
%11 = apply %9<Builtin.NativeObject?>(%10) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %14
%12 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %13
%13 = apply %9<_ContiguousArrayStorage<Int>?>(%12) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %14, %21
%14 = apply %7(%11, %13) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %16
%15 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %16, %22, %56, %84, %93, %97, %101
%16 = apply %15(%14, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
cond_fail %16 : $Builtin.Int1 // id: %17
%18 = unchecked_ref_bit_cast %5 : $Optional<Builtin.NativeObject> to $Optional<_ContiguousArrayStorage<Int>> // users: %27, %153
%19 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %20
%20 = apply %9<HeapBuffer<_ArrayBody, Int>>(%19) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %21
%21 = apply %7(%13, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %22
%22 = apply %15(%21, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %23
cond_fail %22 : $Builtin.Int1 // id: %23
%24 = unchecked_ref_bit_cast %5 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // users: %25, %83, %147
%25 = enum_is_tag $Builtin.Int1, %24 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %28
retain_value %5 : $Optional<Builtin.NativeObject> // id: %26
retain_value %18 : $Optional<_ContiguousArrayStorage<Int>> // id: %27
cond_br %25, bb1, bb3 // id: %28
bb1: // Preds: bb0
%29 = metatype $@thick HeapObject.Type // user: %30
%30 = apply %9<HeapObject>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %35
%31 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %33, %109
%32 = metatype $@thick _ArrayBody.Type // users: %33, %103
%33 = apply %31<_ArrayBody>(%32) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %35, %44
%34 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %35, %81, %104, %110, %127
%35 = apply %34(%30, %33, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %36, %37
%36 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 0 // user: %42
%37 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 1 // user: %38
cond_fail %37 : $Builtin.Int1 // id: %38
%39 = integer_literal $Builtin.Word, 1 // users: %42, %44, %81, %114, %116, %127
%40 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %42, %44, %114, %116
%41 = integer_literal $Builtin.Int1, 0 // users: %42, %44, %64, %81, %114, %116, %120
%42 = apply %40(%36, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %43
%43 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 0 // user: %50
%44 = apply %40(%33, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %45
%45 = tuple_extract %44 : $(Builtin.Word, Builtin.Int1), 0 // user: %48
%46 = integer_literal $Builtin.Word, -1 // users: %48, %118
%47 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %48, %118
%48 = apply %47(%45, %46) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %50
%49 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %50, %119
%50 = apply %49(%43, %48) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %64, %104
%51 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %52
%52 = apply %9<HeapBufferStorage<_ArrayBody, Int>?>(%51) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %55
%53 = metatype $@thick Builtin.NativeObject.Type // user: %54
%54 = apply %9<Builtin.NativeObject>(%53) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %55
%55 = apply %7(%52, %54) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %56
%56 = apply %15(%55, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %57
cond_fail %56 : $Builtin.Int1 // id: %57
%58 = unchecked_ref_bit_cast %5 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %59
%59 = ref_to_raw_pointer %58 : $Builtin.NativeObject to $Builtin.RawPointer // users: %66, %122
%60 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %62
%61 = metatype $@thick Int8.Type // user: %62
%62 = apply %60<Int8>(%61) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %64, %120
%63 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %64, %120
%64 = apply %63(%50, %62, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %65
%65 = tuple_extract %64 : $(Builtin.Word, Builtin.Int1), 0 // user: %66
%66 = index_raw_pointer %59 : $Builtin.RawPointer, %65 : $Builtin.Word // user: %67
%67 = pointer_to_address %66 : $Builtin.RawPointer to $*_ArrayBody // user: %68
%68 = struct_element_addr %67 : $*_ArrayBody, #_ArrayBody.count // user: %69
%69 = struct_element_addr %68 : $*Int, #Int.value // users: %70, %88, %149
%70 = load %69 : $*Builtin.Word // user: %72
release_value %5 : $Optional<Builtin.NativeObject> // id: %71
%72 = apply %7(%6, %70) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %73
cond_br %72, bb3, bb2 // id: %73
bb2: // Preds: bb1
br bb4(%6 : $Builtin.Word, %6 : $Builtin.Word) // id: %74
bb3: // Preds: bb0 bb1 bb8 bb9
release_value %5 : $Optional<Builtin.NativeObject> // id: %75
%76 = enum $Optional<Int>, #Optional.None!enumelt // user: %77
store %76 to %0 : $*Optional<Int> // id: %77
br bb6 // id: %78
bb4(%79 : $Builtin.Word, %80 : $Builtin.Word): // Preds: bb2 bb8 bb9
%81 = apply %34(%79, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %82
%82 = tuple_extract %81 : $(Builtin.Word, Builtin.Int1), 0 // users: %100, %150, %151, %152, %154
%83 = enum_is_tag $Builtin.Int1, %24 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %84
%84 = apply %15(%83, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %85
cond_fail %84 : $Builtin.Int1 // id: %85
%86 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %87
%87 = apply %86(%79, %6) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %92
%88 = load %69 : $*Builtin.Word // user: %90
%89 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %90
%90 = apply %89(%79, %88) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %92
%91 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %92
%92 = apply %91(%87, %90) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %93
%93 = apply %15(%92, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %94
cond_fail %93 : $Builtin.Int1 // id: %94
%95 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %96
%96 = apply %95(%79, %79) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %97
%97 = apply %15(%96, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %98
cond_fail %97 : $Builtin.Int1 // id: %98
%99 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %100
%100 = apply %99(%82, %79) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %101
%101 = apply %15(%100, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %102
cond_fail %101 : $Builtin.Int1 // id: %102
%103 = apply %9<_ArrayBody>(%32) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %104
%104 = apply %34(%50, %103, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %105, %106
%105 = tuple_extract %104 : $(Builtin.Word, Builtin.Int1), 0 // user: %110
%106 = tuple_extract %104 : $(Builtin.Word, Builtin.Int1), 1 // user: %107
cond_fail %106 : $Builtin.Int1 // id: %107
%108 = metatype $@thick Int.Type // user: %109
%109 = apply %31<Int>(%108) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %110, %116
%110 = apply %34(%105, %109, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %111, %112
%111 = tuple_extract %110 : $(Builtin.Word, Builtin.Int1), 0 // user: %114
%112 = tuple_extract %110 : $(Builtin.Word, Builtin.Int1), 1 // user: %113
cond_fail %112 : $Builtin.Int1 // id: %113
%114 = apply %40(%111, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %115
%115 = tuple_extract %114 : $(Builtin.Word, Builtin.Int1), 0 // user: %119
%116 = apply %40(%109, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %117
%117 = tuple_extract %116 : $(Builtin.Word, Builtin.Int1), 0 // user: %118
%118 = apply %47(%117, %46) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %119
%119 = apply %49(%115, %118) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %120
%120 = apply %63(%119, %62, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %121
%121 = tuple_extract %120 : $(Builtin.Word, Builtin.Int1), 0 // user: %122
%122 = index_raw_pointer %59 : $Builtin.RawPointer, %121 : $Builtin.Word // user: %123
%123 = pointer_to_address %122 : $Builtin.RawPointer to $*Int // user: %124
%124 = index_addr %123 : $*Int, %79 : $Builtin.Word // user: %125
%125 = load %124 : $*Int // user: %132
%126 = struct $Int (%80 : $Builtin.Word) // user: %138
%127 = apply %34(%80, %39, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %128, %129
%128 = tuple_extract %127 : $(Builtin.Word, Builtin.Int1), 0 // users: %151, %154
%129 = tuple_extract %127 : $(Builtin.Word, Builtin.Int1), 1 // user: %130
cond_fail %129 : $Builtin.Int1 // id: %130
%131 = alloc_stack $Int // users: %132, %134, %136
store %125 to %131#1 : $*Int // id: %132
strong_retain %2 : $@callee_owned (@in Int) -> Bool // id: %133
%134 = apply %2(%131#1) : $@callee_owned (@in Int) -> Bool // user: %135
%135 = struct_extract %134 : $Bool, #Bool.value // user: %137
dealloc_stack %131#0 : $*@local_storage Int // id: %136
cond_br %135, bb5, bb7 // id: %137
bb5: // Preds: bb4
%138 = enum $Optional<Int>, #Optional.Some!enumelt.1, %126 : $Int // user: %139
store %138 to %0 : $*Optional<Int> // id: %139
release_value %5 : $Optional<Builtin.NativeObject> // id: %140
br bb6 // id: %141
bb6: // Preds: bb3 bb5
strong_release %2 : $@callee_owned (@in Int) -> Bool // id: %142
%143 = load %4 : $*Optional<Builtin.NativeObject> // user: %144
release_value %143 : $Optional<Builtin.NativeObject> // id: %144
%145 = tuple () // user: %146
return %145 : $() // id: %146
bb7: // Preds: bb4
%147 = enum_is_tag $Builtin.Int1, %24 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %148
cond_br %147, bb8, bb9 // id: %148
bb8: // Preds: bb7
%149 = load %69 : $*Builtin.Word // user: %150
%150 = apply %7(%82, %149) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %151
cond_br %150, bb3, bb4(%82 : $Builtin.Word, %128 : $Builtin.Word) // id: %151
bb9: // Preds: bb7
%152 = apply %7(%82, %6) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %154
retain_value %18 : $Optional<_ContiguousArrayStorage<Int>> // id: %153
cond_br %152, bb3, bb4(%82 : $Builtin.Word, %128 : $Builtin.Word) // id: %154
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift.SequenceType, Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int> of Swift.enumerate <A : Swift.SequenceType>(A) -> Swift.EnumerateSequence<A>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift.SequenceType, Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int> of Swift.enumerate <A : Swift.SequenceType>(A) -> Swift.EnumerateSequence<A> : $@thin (@out EnumerateSequence<Array<Int>>, @in Array<Int>) -> () {
bb0(%0 : $*EnumerateSequence<Array<Int>>, %1 : $*Array<Int>):
%2 = load %1 : $*Array<Int> // user: %3
%3 = struct $EnumerateSequence<Array<Int>> (%2 : $Array<Int>) // user: %4
store %3 to %0 : $*EnumerateSequence<Array<Int>> // id: %4
%5 = tuple () // user: %6
return %5 : $() // id: %6
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift.SequenceType, Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int> of Swift.EnumerateSequence.init <A : Swift.SequenceType>(Swift.EnumerateSequence<A>.Type)(A) -> Swift.EnumerateSequence<A>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift.SequenceType, Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int> of Swift.EnumerateSequence.init <A : Swift.SequenceType>(Swift.EnumerateSequence<A>.Type)(A) -> Swift.EnumerateSequence<A> : $@thin (@out EnumerateSequence<Array<Int>>, @in Array<Int>, @thin EnumerateSequence<Array<Int>>.Type) -> () {
bb0(%0 : $*EnumerateSequence<Array<Int>>, %1 : $*Array<Int>, %2 : $@thin EnumerateSequence<Array<Int>>.Type):
%3 = load %1 : $*Array<Int> // user: %4
%4 = struct $EnumerateSequence<Array<Int>> (%3 : $Array<Int>) // user: %5
store %4 to %0 : $*EnumerateSequence<Array<Int>> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift.SequenceType, Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int> of Swift.EnumerateSequence.generate <A : Swift.SequenceType>(Swift.EnumerateSequence<A>)() -> Swift.EnumerateGenerator<A.Generator>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift.SequenceType, Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int> of Swift.EnumerateSequence.generate <A : Swift.SequenceType>(Swift.EnumerateSequence<A>)() -> Swift.EnumerateGenerator<A.Generator> : $@cc(method) @thin (@out EnumerateGenerator<IndexingGenerator<Array<Int>>>, @in EnumerateSequence<Array<Int>>) -> () {
bb0(%0 : $*EnumerateGenerator<IndexingGenerator<Array<Int>>>, %1 : $*EnumerateSequence<Array<Int>>):
%2 = struct_element_addr %1 : $*EnumerateSequence<Array<Int>>, #EnumerateSequence.base // user: %3
%3 = load %2 : $*Array<Int> // user: %6
%4 = integer_literal $Builtin.Word, 0 // user: %5
%5 = struct $Int (%4 : $Builtin.Word) // users: %6, %7
%6 = struct $IndexingGenerator<Array<Int>> (%3 : $Array<Int>, %5 : $Int) // user: %7
%7 = struct $EnumerateGenerator<IndexingGenerator<Array<Int>>> (%6 : $IndexingGenerator<Array<Int>>, %5 : $Int) // user: %8
store %7 to %0 : $*EnumerateGenerator<IndexingGenerator<Array<Int>>> // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// specialization <Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int> of Swift.EnumerateGenerator.init <A : Swift.GeneratorType>(Swift.EnumerateGenerator<A>.Type)(A) -> Swift.EnumerateGenerator<A>
sil shared specialization <Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int> of Swift.EnumerateGenerator.init <A : Swift.GeneratorType>(Swift.EnumerateGenerator<A>.Type)(A) -> Swift.EnumerateGenerator<A> : $@thin (@out EnumerateGenerator<IndexingGenerator<Array<Int>>>, @in IndexingGenerator<Array<Int>>, @thin EnumerateGenerator<IndexingGenerator<Array<Int>>>.Type) -> () {
bb0(%0 : $*EnumerateGenerator<IndexingGenerator<Array<Int>>>, %1 : $*IndexingGenerator<Array<Int>>, %2 : $@thin EnumerateGenerator<IndexingGenerator<Array<Int>>>.Type):
%3 = load %1 : $*IndexingGenerator<Array<Int>> // user: %6
%4 = integer_literal $Builtin.Word, 0 // user: %5
%5 = struct $Int (%4 : $Builtin.Word) // user: %6
%6 = struct $EnumerateGenerator<IndexingGenerator<Array<Int>>> (%3 : $IndexingGenerator<Array<Int>>, %5 : $Int) // user: %7
store %6 to %0 : $*EnumerateGenerator<IndexingGenerator<Array<Int>>> // id: %7
%8 = tuple () // user: %9
return %8 : $() // id: %9
}
// specialization <Swift.IndexingGenerator<Swift.Array<Swift.Int>> with Swift.IndexingGenerator<Swift.Array<Swift.Int>> : Swift.GeneratorType, Swift.Int> of Swift.EnumerateGenerator.next <A : Swift.GeneratorType>(inout Swift.EnumerateGenerator<A>)() -> Swift.Optional<(index : Swift.Int, element : A.Element)>
sil shared specialization <Swift.IndexingGenerator<[Swift.Int]> with Swift.IndexingGenerator<[Swift.Int]> : Swift.GeneratorType, Swift.Int> of Swift.EnumerateGenerator.next <A : Swift.GeneratorType>(inout Swift.EnumerateGenerator<A>)() -> (index : Swift.Int, element : A.Element)? : $@cc(method) @thin (@out Optional<(index: Int, element: Int)>, @inout EnumerateGenerator<IndexingGenerator<Array<Int>>>) -> () {
bb0(%0 : $*Optional<(index: Int, element: Int)>, %1 : $*EnumerateGenerator<IndexingGenerator<Array<Int>>>):
%2 = struct_element_addr %1 : $*EnumerateGenerator<IndexingGenerator<Array<Int>>>, #EnumerateGenerator.base // users: %3, %6
%3 = struct_element_addr %2 : $*IndexingGenerator<Array<Int>>, #IndexingGenerator._position // users: %4, %88
%4 = struct_element_addr %3 : $*Int, #Int.value // users: %5, %81
%5 = load %4 : $*Builtin.Word // users: %72, %75
%6 = struct_element_addr %2 : $*IndexingGenerator<Array<Int>>, #IndexingGenerator._elements // user: %7
%7 = struct_element_addr %6 : $*Array<Int>, #Array._buffer // user: %8
%8 = struct_element_addr %7 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // users: %9, %89
%9 = load %8 : $*Optional<Builtin.NativeObject> // users: %21, %27, %59
%10 = integer_literal $Builtin.Int1, -1 // users: %19, %25, %36, %57, %92, %102, %121, %140, %144, %148, %151, %157, %176
%11 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %13, %15, %23, %31, %53, %55, %98, %117, %119, %150
%12 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %13
%13 = apply %11<Builtin.NativeObject?>(%12) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %17
%14 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %15
%15 = apply %11<_ContiguousArrayStorage<Int>?>(%14) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %17, %24
%16 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %17, %24, %56, %72, %75, %120
%17 = apply %16(%13, %15) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %19
%18 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %19, %25, %57, %92, %121, %140, %144, %148
%19 = apply %18(%17, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %20
cond_fail %19 : $Builtin.Int1 // id: %20
%21 = unchecked_ref_bit_cast %9 : $Optional<Builtin.NativeObject> to $Optional<_ContiguousArrayStorage<Int>> // user: %76
%22 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %23
%23 = apply %11<HeapBuffer<_ArrayBody, Int>>(%22) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %24
%24 = apply %16(%15, %23) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %25
%25 = apply %18(%24, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %26
cond_fail %25 : $Builtin.Int1 // id: %26
%27 = unchecked_ref_bit_cast %9 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %28
%28 = enum_is_tag $Builtin.Int1, %27 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %29
cond_br %28, bb1, bb2 // id: %29
bb1: // Preds: bb0
%30 = metatype $@thick HeapObject.Type // user: %31
%31 = apply %11<HeapObject>(%30) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %36
%32 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %34
%33 = metatype $@thick _ArrayBody.Type // user: %34
%34 = apply %32<_ArrayBody>(%33) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %36, %45
%35 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %36
%36 = apply %35(%31, %34, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %37, %38
%37 = tuple_extract %36 : $(Builtin.Word, Builtin.Int1), 0 // user: %43
%38 = tuple_extract %36 : $(Builtin.Word, Builtin.Int1), 1 // user: %39
cond_fail %38 : $Builtin.Int1 // id: %39
%40 = integer_literal $Builtin.Word, 1 // users: %43, %45
%41 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %43, %45
%42 = integer_literal $Builtin.Int1, 0 // users: %43, %45, %65
%43 = apply %41(%37, %40, %42) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %44
%44 = tuple_extract %43 : $(Builtin.Word, Builtin.Int1), 0 // user: %51
%45 = apply %41(%34, %40, %42) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %46
%46 = tuple_extract %45 : $(Builtin.Word, Builtin.Int1), 0 // user: %49
%47 = integer_literal $Builtin.Word, -1 // user: %49
%48 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %49
%49 = apply %48(%46, %47) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %51
%50 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %51
%51 = apply %50(%44, %49) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %65
%52 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %53
%53 = apply %11<HeapBufferStorage<_ArrayBody, Int>?>(%52) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %56
%54 = metatype $@thick Builtin.NativeObject.Type // user: %55
%55 = apply %11<Builtin.NativeObject>(%54) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %56
%56 = apply %16(%53, %55) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %57
%57 = apply %18(%56, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %58
cond_fail %57 : $Builtin.Int1 // id: %58
%59 = unchecked_ref_bit_cast %9 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %60
%60 = ref_to_raw_pointer %59 : $Builtin.NativeObject to $Builtin.RawPointer // user: %67
%61 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %63
%62 = metatype $@thick Int8.Type // user: %63
%63 = apply %61<Int8>(%62) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %65
%64 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %65
%65 = apply %64(%51, %63, %42) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %66
%66 = tuple_extract %65 : $(Builtin.Word, Builtin.Int1), 0 // user: %67
%67 = index_raw_pointer %60 : $Builtin.RawPointer, %66 : $Builtin.Word // user: %68
%68 = pointer_to_address %67 : $Builtin.RawPointer to $*_ArrayBody // user: %69
%69 = struct_element_addr %68 : $*_ArrayBody, #_ArrayBody.count // user: %70
%70 = struct_element_addr %69 : $*Int, #Int.value // user: %71
%71 = load %70 : $*Builtin.Word // user: %72
%72 = apply %16(%5, %71) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %73
cond_br %72, bb3, bb4 // id: %73
bb2: // Preds: bb0
%74 = integer_literal $Builtin.Word, 0 // user: %75
%75 = apply %16(%5, %74) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %77
retain_value %21 : $Optional<_ContiguousArrayStorage<Int>> // id: %76
cond_br %75, bb3, bb4 // id: %77
bb3: // Preds: bb1 bb2
%78 = enum $Optional<(index: Int, element: Int)>, #Optional.None!enumelt // user: %79
store %78 to %0 : $*Optional<(index: Int, element: Int)> // id: %79
br bb5 // id: %80
bb4: // Preds: bb1 bb2
%81 = load %4 : $*Builtin.Word // users: %85, %96, %137, %143, %143, %147, %171
%82 = integer_literal $Builtin.Word, 1 // users: %85, %107, %109, %161, %163, %176
%83 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %85, %102, %151, %157, %176
%84 = integer_literal $Builtin.Int1, 0 // users: %85, %107, %109, %129, %161, %163, %167
%85 = apply %83(%81, %82, %84) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %86
%86 = tuple_extract %85 : $(Builtin.Word, Builtin.Int1), 0 // users: %87, %147
%87 = struct $Int (%86 : $Builtin.Word) // user: %88
store %87 to %3 : $*Int // id: %88
%89 = load %8 : $*Optional<Builtin.NativeObject> // users: %90, %123
%90 = unchecked_ref_bit_cast %89 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %91
%91 = enum_is_tag $Builtin.Int1, %90 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %92
%92 = apply %18(%91, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %93
cond_fail %92 : $Builtin.Int1 // id: %93
%94 = integer_literal $Builtin.Word, 0 // user: %96
%95 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %96
%96 = apply %95(%81, %94) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %139
%97 = metatype $@thick HeapObject.Type // user: %98
%98 = apply %11<HeapObject>(%97) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %102
%99 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %101, %156
%100 = metatype $@thick _ArrayBody.Type // users: %101, %150
%101 = apply %99<_ArrayBody>(%100) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %102, %109
%102 = apply %83(%98, %101, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %103, %104
%103 = tuple_extract %102 : $(Builtin.Word, Builtin.Int1), 0 // user: %107
%104 = tuple_extract %102 : $(Builtin.Word, Builtin.Int1), 1 // user: %105
cond_fail %104 : $Builtin.Int1 // id: %105
%106 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %107, %109, %161, %163
%107 = apply %106(%103, %82, %84) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %108
%108 = tuple_extract %107 : $(Builtin.Word, Builtin.Int1), 0 // user: %115
%109 = apply %106(%101, %82, %84) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %110
%110 = tuple_extract %109 : $(Builtin.Word, Builtin.Int1), 0 // user: %113
%111 = integer_literal $Builtin.Word, -1 // users: %113, %165
%112 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %113, %165
%113 = apply %112(%110, %111) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %115
%114 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %115, %166
%115 = apply %114(%108, %113) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %129, %151
%116 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %117
%117 = apply %11<HeapBufferStorage<_ArrayBody, Int>?>(%116) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %120
%118 = metatype $@thick Builtin.NativeObject.Type // user: %119
%119 = apply %11<Builtin.NativeObject>(%118) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %120
%120 = apply %16(%117, %119) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %121
%121 = apply %18(%120, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %122
cond_fail %121 : $Builtin.Int1 // id: %122
%123 = unchecked_ref_bit_cast %89 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %124
%124 = ref_to_raw_pointer %123 : $Builtin.NativeObject to $Builtin.RawPointer // users: %131, %169
%125 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %127
%126 = metatype $@thick Int8.Type // user: %127
%127 = apply %125<Int8>(%126) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %129, %167
%128 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %129, %167
%129 = apply %128(%115, %127, %84) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %130
%130 = tuple_extract %129 : $(Builtin.Word, Builtin.Int1), 0 // user: %131
%131 = index_raw_pointer %124 : $Builtin.RawPointer, %130 : $Builtin.Word // user: %132
%132 = pointer_to_address %131 : $Builtin.RawPointer to $*_ArrayBody // user: %133
%133 = struct_element_addr %132 : $*_ArrayBody, #_ArrayBody.count // user: %134
%134 = struct_element_addr %133 : $*Int, #Int.value // user: %135
%135 = load %134 : $*Builtin.Word // user: %137
%136 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %137
%137 = apply %136(%81, %135) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %139
%138 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %139
%139 = apply %138(%96, %137) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %140
%140 = apply %18(%139, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %141
cond_fail %140 : $Builtin.Int1 // id: %141
%142 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %143
%143 = apply %142(%81, %81) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %144
%144 = apply %18(%143, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %145
cond_fail %144 : $Builtin.Int1 // id: %145
%146 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %147
%147 = apply %146(%86, %81) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %148
%148 = apply %18(%147, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %149
cond_fail %148 : $Builtin.Int1 // id: %149
%150 = apply %11<_ArrayBody>(%100) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %151
%151 = apply %83(%115, %150, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %152, %153
%152 = tuple_extract %151 : $(Builtin.Word, Builtin.Int1), 0 // user: %157
%153 = tuple_extract %151 : $(Builtin.Word, Builtin.Int1), 1 // user: %154
cond_fail %153 : $Builtin.Int1 // id: %154
%155 = metatype $@thick Int.Type // user: %156
%156 = apply %99<Int>(%155) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %157, %163
%157 = apply %83(%152, %156, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %158, %159
%158 = tuple_extract %157 : $(Builtin.Word, Builtin.Int1), 0 // user: %161
%159 = tuple_extract %157 : $(Builtin.Word, Builtin.Int1), 1 // user: %160
cond_fail %159 : $Builtin.Int1 // id: %160
%161 = apply %106(%158, %82, %84) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %162
%162 = tuple_extract %161 : $(Builtin.Word, Builtin.Int1), 0 // user: %166
%163 = apply %106(%156, %82, %84) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %164
%164 = tuple_extract %163 : $(Builtin.Word, Builtin.Int1), 0 // user: %165
%165 = apply %112(%164, %111) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %166
%166 = apply %114(%162, %165) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %167
%167 = apply %128(%166, %127, %84) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %168
%168 = tuple_extract %167 : $(Builtin.Word, Builtin.Int1), 0 // user: %169
%169 = index_raw_pointer %124 : $Builtin.RawPointer, %168 : $Builtin.Word // user: %170
%170 = pointer_to_address %169 : $Builtin.RawPointer to $*Int // user: %171
%171 = index_addr %170 : $*Int, %81 : $Builtin.Word // user: %172
%172 = load %171 : $*Int // user: %182
%173 = struct_element_addr %1 : $*EnumerateGenerator<IndexingGenerator<Array<Int>>>, #EnumerateGenerator.count // users: %174, %181
%174 = load %173 : $*Int // users: %175, %182
%175 = struct_extract %174 : $Int, #Int.value // user: %176
%176 = apply %83(%175, %82, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %177, %178
%177 = tuple_extract %176 : $(Builtin.Word, Builtin.Int1), 0 // user: %180
%178 = tuple_extract %176 : $(Builtin.Word, Builtin.Int1), 1 // user: %179
cond_fail %178 : $Builtin.Int1 // id: %179
%180 = struct $Int (%177 : $Builtin.Word) // user: %181
store %180 to %173 : $*Int // id: %181
%182 = tuple $(index: Int, element: Int) (%174, %172) // user: %183
%183 = enum $Optional<(index: Int, element: Int)>, #Optional.Some!enumelt.1, %182 : $(index: Int, element: Int) // user: %184
store %183 to %0 : $*Optional<(index: Int, element: Int)> // id: %184
br bb5 // id: %185
bb5: // Preds: bb3 bb4
%186 = tuple () // user: %187
return %186 : $() // id: %187
}
// specialization <Swift.Int> of Swift.== infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
sil shared specialization <Swift.Int> of Swift.== infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin (@in Optional<Int>, _OptionalNilComparisonType) -> Bool {
bb0(%0 : $*Optional<Int>, %1 : $_OptionalNilComparisonType):
%2 = load %0 : $*Optional<Int> // user: %3
%3 = enum_is_tag $Builtin.Int1, %2 : $Optional<Int>, #Optional.None!enumelt // user: %4
%4 = struct $Bool (%3 : $Builtin.Int1) // user: %5
return %4 : $Bool // id: %5
}
// specialization <Swift.Int> of Swift._preconditionOptionalHasValue <A>(inout Swift.Optional<A>) -> ()
sil shared [transparent] specialization <Swift.Int> of Swift._preconditionOptionalHasValue <A>(inout A?) -> () : $@thin (@inout Optional<Int>) -> () {
bb0(%0 : $*Optional<Int>):
%1 = integer_literal $Builtin.Int1, -1 // user: %11
// function_ref Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
%2 = function_ref Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %7
%3 = alloc_stack $Optional<Int> // users: %5, %7, %8
%4 = load %0 : $*Optional<Int> // user: %5
store %4 to %3#1 : $*Optional<Int> // id: %5
%6 = struct $_OptionalNilComparisonType () // user: %7
%7 = apply %2<Int>(%3#1, %6) : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %10
dealloc_stack %3#0 : $*@local_storage Optional<Int> // id: %8
%9 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %11
%10 = struct_extract %7 : $Bool, #Bool.value // user: %11
%11 = apply %9(%10, %1) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %12
cond_fail %11 : $Builtin.Int1 // id: %12
%13 = tuple () // user: %14
return %13 : $() // id: %14
}
// specialization <(index : Swift.Int, element : Swift.Int)> of Swift.Optional.Some <A>(Swift.Optional<A>.Type)(A) -> Swift.Optional<A>
sil shared [transparent] specialization <(index : Swift.Int, element : Swift.Int)> of Swift.Optional.Some <A>(A?.Type)(A) -> A? : $@thin (@out Optional<(index: Int, element: Int)>, @in (index: Int, element: Int), @thin Optional<(index: Int, element: Int)>.Type) -> () {
bb0(%0 : $*Optional<(index: Int, element: Int)>, %1 : $*(index: Int, element: Int), %2 : $@thin Optional<(index: Int, element: Int)>.Type):
%3 = load %1 : $*(index: Int, element: Int) // user: %4
%4 = enum $Optional<(index: Int, element: Int)>, #Optional.Some!enumelt.1, %3 : $(index: Int, element: Int) // user: %5
store %4 to %0 : $*Optional<(index: Int, element: Int)> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// specialization <Swift._ContiguousArrayStorage<Swift.Int>> of Swift._doesOptionalHaveValue <A>(inout Swift.Optional<A>) -> Builtin.Int1
sil shared [transparent] specialization <Swift._ContiguousArrayStorage<Swift.Int>> of Swift._doesOptionalHaveValue <A>(inout A?) -> Builtin.Int1 : $@thin (@inout Optional<_ContiguousArrayStorage<Int>>) -> Builtin.Int1 {
bb0(%0 : $*Optional<_ContiguousArrayStorage<Int>>):
// function_ref Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
%1 = function_ref Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %7
%2 = alloc_stack $Optional<_ContiguousArrayStorage<Int>> // users: %4, %7, %9
%3 = load %0 : $*Optional<_ContiguousArrayStorage<Int>> // users: %4, %6
store %3 to %2#1 : $*Optional<_ContiguousArrayStorage<Int>> // id: %4
%5 = struct $_OptionalNilComparisonType () // user: %7
retain_value %3 : $Optional<_ContiguousArrayStorage<Int>> // id: %6
%7 = apply %1<_ContiguousArrayStorage<Int>>(%2#1, %5) : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %8
%8 = struct_extract %7 : $Bool, #Bool.value // user: %10
dealloc_stack %2#0 : $*@local_storage Optional<_ContiguousArrayStorage<Int>> // id: %9
return %8 : $Builtin.Int1 // id: %10
}
// specialization <Swift.Int> of Swift._doesOptionalHaveValue <A>(inout Swift.Optional<A>) -> Builtin.Int1
sil shared [transparent] specialization <Swift.Int> of Swift._doesOptionalHaveValue <A>(inout A?) -> Builtin.Int1 : $@thin (@inout Optional<Int>) -> Builtin.Int1 {
bb0(%0 : $*Optional<Int>):
// function_ref Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
%1 = function_ref Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %6
%2 = alloc_stack $Optional<Int> // users: %4, %6, %8
%3 = load %0 : $*Optional<Int> // user: %4
store %3 to %2#1 : $*Optional<Int> // id: %4
%5 = struct $_OptionalNilComparisonType () // user: %6
%6 = apply %1<Int>(%2#1, %5) : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %7
%7 = struct_extract %6 : $Bool, #Bool.value // user: %9
dealloc_stack %2#0 : $*@local_storage Optional<Int> // id: %8
return %7 : $Builtin.Int1 // id: %9
}
// specialization <(index : Swift.Int, element : Swift.Int)> of Swift._doesOptionalHaveValue <A>(inout Swift.Optional<A>) -> Builtin.Int1
sil shared [transparent] specialization <(index : Swift.Int, element : Swift.Int)> of Swift._doesOptionalHaveValue <A>(inout A?) -> Builtin.Int1 : $@thin (@inout Optional<(index: Int, element: Int)>) -> Builtin.Int1 {
bb0(%0 : $*Optional<(index: Int, element: Int)>):
// function_ref Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
%1 = function_ref Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %6
%2 = alloc_stack $Optional<(index: Int, element: Int)> // users: %4, %6, %8
%3 = load %0 : $*Optional<(index: Int, element: Int)> // user: %4
store %3 to %2#1 : $*Optional<(index: Int, element: Int)> // id: %4
%5 = struct $_OptionalNilComparisonType () // user: %6
%6 = apply %1<(index: Int, element: Int)>(%2#1, %5) : $@thin <τ_0_0> (@in Optional<τ_0_0>, _OptionalNilComparisonType) -> Bool // user: %7
%7 = struct_extract %6 : $Bool, #Bool.value // user: %9
dealloc_stack %2#0 : $*@local_storage Optional<(index: Int, element: Int)> // id: %8
return %7 : $Builtin.Int1 // id: %9
}
// specialization <Swift._ContiguousArrayStorage<Swift.Int>> of Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
sil shared specialization <Swift._ContiguousArrayStorage<Swift.Int>> of Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin (@in Optional<_ContiguousArrayStorage<Int>>, _OptionalNilComparisonType) -> Bool {
bb0(%0 : $*Optional<_ContiguousArrayStorage<Int>>, %1 : $_OptionalNilComparisonType):
%2 = load %0 : $*Optional<_ContiguousArrayStorage<Int>> // users: %3, %5
%3 = enum_is_tag $Builtin.Int1, %2 : $Optional<_ContiguousArrayStorage<Int>>, #Optional.Some!enumelt.1 // user: %4
%4 = struct $Bool (%3 : $Builtin.Int1) // user: %6
release_value %2 : $Optional<_ContiguousArrayStorage<Int>> // id: %5
return %4 : $Bool // id: %6
}
// specialization <Swift._ContiguousArrayStorage<Swift.Int>> of Swift._getOptionalValue <A>(Swift.Optional<A>) -> A
sil shared [transparent] specialization <Swift._ContiguousArrayStorage<Swift.Int>> of Swift._getOptionalValue <A>(A?) -> A : $@thin (@out _ContiguousArrayStorage<Int>, @in Optional<_ContiguousArrayStorage<Int>>) -> () {
bb0(%0 : $*_ContiguousArrayStorage<Int>, %1 : $*Optional<_ContiguousArrayStorage<Int>>):
%2 = load %1 : $*Optional<_ContiguousArrayStorage<Int>> // users: %3, %4
switch_enum %2 : $Optional<_ContiguousArrayStorage<Int>>, case #Optional.Some!enumelt.1: bb1, case #Optional.None!enumelt: bb2 // id: %3
bb1: // Preds: bb0
%4 = unchecked_enum_data %2 : $Optional<_ContiguousArrayStorage<Int>>, #Optional.Some!enumelt.1 // user: %5
store %4 to %0 : $*_ContiguousArrayStorage<Int> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
bb2: // Preds: bb0
%8 = integer_literal $Builtin.Int1, -1 // user: %9
cond_fail %8 : $Builtin.Int1 // id: %9
unreachable // id: %10
}
// specialization <Swift.Int> of Swift._getOptionalValue <A>(Swift.Optional<A>) -> A
sil shared [transparent] specialization <Swift.Int> of Swift._getOptionalValue <A>(A?) -> A : $@thin (@out Int, @in Optional<Int>) -> () {
bb0(%0 : $*Int, %1 : $*Optional<Int>):
%2 = load %1 : $*Optional<Int> // users: %3, %4
switch_enum %2 : $Optional<Int>, case #Optional.Some!enumelt.1: bb1, case #Optional.None!enumelt: bb2 // id: %3
bb1: // Preds: bb0
%4 = unchecked_enum_data %2 : $Optional<Int>, #Optional.Some!enumelt.1 // user: %5
store %4 to %0 : $*Int // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
bb2: // Preds: bb0
%8 = integer_literal $Builtin.Int1, -1 // user: %9
cond_fail %8 : $Builtin.Int1 // id: %9
unreachable // id: %10
}
// specialization <(index : Swift.Int, element : Swift.Int)> of Swift._getOptionalValue <A>(Swift.Optional<A>) -> A
sil shared [transparent] specialization <(index : Swift.Int, element : Swift.Int)> of Swift._getOptionalValue <A>(A?) -> A : $@thin (@out (index: Int, element: Int), @in Optional<(index: Int, element: Int)>) -> () {
bb0(%0 : $*(index: Int, element: Int), %1 : $*Optional<(index: Int, element: Int)>):
%2 = load %1 : $*Optional<(index: Int, element: Int)> // users: %3, %4
switch_enum %2 : $Optional<(index: Int, element: Int)>, case #Optional.Some!enumelt.1: bb1, case #Optional.None!enumelt: bb2 // id: %3
bb1: // Preds: bb0
%4 = unchecked_enum_data %2 : $Optional<(index: Int, element: Int)>, #Optional.Some!enumelt.1 // user: %5
store %4 to %0 : $*(index: Int, element: Int) // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
bb2: // Preds: bb0
%8 = integer_literal $Builtin.Int1, -1 // user: %9
cond_fail %8 : $Builtin.Int1 // id: %9
unreachable // id: %10
}
// specialization <Swift.Int> of Swift.Optional.init <A>(Swift.Optional<A>.Type)(nilLiteral : ()) -> Swift.Optional<A>
sil shared [transparent] specialization <Swift.Int> of Swift.Optional.init <A>(A?.Type)(nilLiteral : ()) -> A? : $@thin (@out Optional<Int>, @thin Optional<Int>.Type) -> () {
bb0(%0 : $*Optional<Int>, %1 : $@thin Optional<Int>.Type):
// function_ref Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
%2 = function_ref Swift.Optional.None <A>(A?.Type) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %5
%3 = metatype $@thin Optional<Int>.Type // user: %5
%4 = alloc_stack $Optional<Int> // users: %5, %6, %7
%5 = apply [transparent] %2<Int>(%4#1, %3) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
%6 = load %4#1 : $*Optional<Int> // user: %8
dealloc_stack %4#0 : $*@local_storage Optional<Int> // id: %7
store %6 to %0 : $*Optional<Int> // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// specialization <Swift.Int> of Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
sil shared [transparent] specialization <Swift.Int> of Swift.Optional.None <A>(A?.Type) -> A? : $@thin (@out Optional<Int>, @thin Optional<Int>.Type) -> () {
bb0(%0 : $*Optional<Int>, %1 : $@thin Optional<Int>.Type):
%2 = enum $Optional<Int>, #Optional.None!enumelt // user: %3
store %2 to %0 : $*Optional<Int> // id: %3
%4 = tuple () // user: %5
return %4 : $() // id: %5
}
// specialization <(index : Swift.Int, element : Swift.Int)> of Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
sil shared [transparent] specialization <(index : Swift.Int, element : Swift.Int)> of Swift.Optional.None <A>(A?.Type) -> A? : $@thin (@out Optional<(index: Int, element: Int)>, @thin Optional<(index: Int, element: Int)>.Type) -> () {
bb0(%0 : $*Optional<(index: Int, element: Int)>, %1 : $@thin Optional<(index: Int, element: Int)>.Type):
%2 = enum $Optional<(index: Int, element: Int)>, #Optional.None!enumelt // user: %3
store %2 to %0 : $*Optional<(index: Int, element: Int)> // id: %3
%4 = tuple () // user: %5
return %4 : $() // id: %5
}
// protocol witness for Swift._PointerType.value.getter : Builtin.RawPointer in conformance Swift.UnsafePointer : Swift._PointerType
sil public_external protocol witness for Swift._PointerType.value.getter : Builtin.RawPointer in conformance Swift.UnsafePointer : Swift._PointerType : $@cc(witness_method) @thin <T> (@inout UnsafePointer<T>) -> Builtin.RawPointer {
bb0(%0 : $*UnsafePointer<T>):
%1 = load %0 : $*UnsafePointer<T> // user: %3
// function_ref Swift.UnsafePointer.value.getter : Builtin.RawPointer
%2 = function_ref Swift.UnsafePointer.value.getter : Builtin.RawPointer : $@cc(method) @thin <τ_0_0> (UnsafePointer<τ_0_0>) -> Builtin.RawPointer // user: %3
%3 = apply %2<T>(%1) : $@cc(method) @thin <τ_0_0> (UnsafePointer<τ_0_0>) -> Builtin.RawPointer // user: %4
return %3 : $Builtin.RawPointer // id: %4
}
// protocol witness for Swift._PointerType.init <A : Swift._PointerType>(Swift._PointerType.Self.Type)(Builtin.RawPointer) -> Swift._PointerType.Self in conformance Swift.UnsafePointer : Swift._PointerType
sil public_external protocol witness for Swift._PointerType.init <A : Swift._PointerType>(Swift._PointerType.Self.Type)(Builtin.RawPointer) -> Swift._PointerType.Self in conformance Swift.UnsafePointer : Swift._PointerType : $@cc(witness_method) @thin <T> (@out UnsafePointer<T>, Builtin.RawPointer, @thick UnsafePointer<T>.Type) -> () {
bb0(%0 : $*UnsafePointer<T>, %1 : $Builtin.RawPointer, %2 : $@thick UnsafePointer<T>.Type):
%3 = metatype $@thin UnsafePointer<T>.Type // user: %5
// function_ref Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafePointer<A>
%4 = function_ref Swift.UnsafePointer.init <A>(Swift.UnsafePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafePointer<A> : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafePointer<τ_0_0>.Type) -> UnsafePointer<τ_0_0> // user: %5
%5 = apply %4<T>(%1, %3) : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafePointer<τ_0_0>.Type) -> UnsafePointer<τ_0_0> // user: %6
store %5 to %0 : $*UnsafePointer<T> // id: %6
%7 = tuple () // user: %8
return %7 : $() // id: %8
}
// protocol witness for Swift._PointerType.value.getter : Builtin.RawPointer in conformance Swift.UnsafeMutablePointer : Swift._PointerType
sil public_external protocol witness for Swift._PointerType.value.getter : Builtin.RawPointer in conformance Swift.UnsafeMutablePointer : Swift._PointerType : $@cc(witness_method) @thin <T> (@inout UnsafeMutablePointer<T>) -> Builtin.RawPointer {
bb0(%0 : $*UnsafeMutablePointer<T>):
%1 = load %0 : $*UnsafeMutablePointer<T> // user: %3
// function_ref Swift.UnsafeMutablePointer.value.getter : Builtin.RawPointer
%2 = function_ref Swift.UnsafeMutablePointer.value.getter : Builtin.RawPointer : $@cc(method) @thin <τ_0_0> (UnsafeMutablePointer<τ_0_0>) -> Builtin.RawPointer // user: %3
%3 = apply %2<T>(%1) : $@cc(method) @thin <τ_0_0> (UnsafeMutablePointer<τ_0_0>) -> Builtin.RawPointer // user: %4
return %3 : $Builtin.RawPointer // id: %4
}
// protocol witness for Swift._PointerType.init <A : Swift._PointerType>(Swift._PointerType.Self.Type)(Builtin.RawPointer) -> Swift._PointerType.Self in conformance Swift.UnsafeMutablePointer : Swift._PointerType
sil public_external protocol witness for Swift._PointerType.init <A : Swift._PointerType>(Swift._PointerType.Self.Type)(Builtin.RawPointer) -> Swift._PointerType.Self in conformance Swift.UnsafeMutablePointer : Swift._PointerType : $@cc(witness_method) @thin <T> (@out UnsafeMutablePointer<T>, Builtin.RawPointer, @thick UnsafeMutablePointer<T>.Type) -> () {
bb0(%0 : $*UnsafeMutablePointer<T>, %1 : $Builtin.RawPointer, %2 : $@thick UnsafeMutablePointer<T>.Type):
%3 = metatype $@thin UnsafeMutablePointer<T>.Type // user: %5
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A>
%4 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %5
%5 = apply %4<T>(%1, %3) : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %6
store %5 to %0 : $*UnsafeMutablePointer<T> // id: %6
%7 = tuple () // user: %8
return %7 : $() // id: %8
}
// Swift.UnsafeMutablePointer.value.getter : Builtin.RawPointer
sil public_external [transparent] Swift.UnsafeMutablePointer.value.getter : Builtin.RawPointer : $@cc(method) @thin <T> (UnsafeMutablePointer<T>) -> Builtin.RawPointer {
bb0(%0 : $UnsafeMutablePointer<T>):
%1 = struct_extract %0 : $UnsafeMutablePointer<T>, #UnsafeMutablePointer.value // user: %2
return %1 : $Builtin.RawPointer // id: %2
}
// protocol witness for Swift.SequenceType.generate <A : Swift.SequenceType>(inout Swift.SequenceType.Self)() -> Swift.SequenceType.Self.Generator in conformance Swift.UnsafeBufferPointer : Swift.SequenceType
sil public_external protocol witness for Swift.SequenceType.generate <A : Swift.SequenceType>(inout Swift.SequenceType.Self)() -> Swift.SequenceType.Self.Generator in conformance Swift.UnsafeBufferPointer : Swift.SequenceType : $@cc(witness_method) @thin <T> (@out UnsafeBufferPointer<T>.Generator, @inout UnsafeBufferPointer<T>) -> () {
bb0(%0 : $*UnsafeBufferPointerGenerator<T>, %1 : $*UnsafeBufferPointer<T>):
%2 = load %1 : $*UnsafeBufferPointer<T> // user: %4
// function_ref Swift.UnsafeBufferPointer.generate <A>(Swift.UnsafeBufferPointer<A>)() -> Swift.UnsafeBufferPointerGenerator<A>
%3 = function_ref Swift.UnsafeBufferPointer.generate <A>(Swift.UnsafeBufferPointer<A>)() -> Swift.UnsafeBufferPointerGenerator<A> : $@cc(method) @thin <τ_0_0> (UnsafeBufferPointer<τ_0_0>) -> UnsafeBufferPointerGenerator<τ_0_0> // user: %4
%4 = apply %3<T>(%2) : $@cc(method) @thin <τ_0_0> (UnsafeBufferPointer<τ_0_0>) -> UnsafeBufferPointerGenerator<τ_0_0> // user: %5
store %4 to %0 : $*UnsafeBufferPointerGenerator<T> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)(Swift.SequenceType.Self, (Swift._UnderestimateCount, ())) -> Swift.Int in conformance Swift.UnsafeBufferPointer : Swift.SequenceType
sil public_external protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)(Swift.SequenceType.Self, (Swift._UnderestimateCount, ())) -> Swift.Int in conformance Swift.UnsafeBufferPointer : Swift.SequenceType : $@cc(witness_method) @thin <T> (@in UnsafeBufferPointer<T>, _UnderestimateCount, @thick UnsafeBufferPointer<T>.Type) -> Int {
bb0(%0 : $*UnsafeBufferPointer<T>, %1 : $_UnderestimateCount, %2 : $@thick UnsafeBufferPointer<T>.Type):
%3 = load %0 : $*UnsafeBufferPointer<T> // user: %5
%4 = alloc_stack $UnsafeBufferPointer<T> // users: %5, %7, %8
store %3 to %4#1 : $*UnsafeBufferPointer<T> // id: %5
// function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._UnderestimateCount, ())) -> Swift.Int
%6 = function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._UnderestimateCount, ())) -> Swift.Int : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@in τ_0_0, _UnderestimateCount) -> Int // user: %7
%7 = apply %6<UnsafeBufferPointer<T>, Int, Int, Int, Int, T>(%4#1, %1) : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@in τ_0_0, _UnderestimateCount) -> Int // user: %9
dealloc_stack %4#0 : $*@local_storage UnsafeBufferPointer<T> // id: %8
return %7 : $Int // id: %9
}
// protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)<C>(Swift.SequenceType.Self, (Swift._PreprocessingPass, (Swift.SequenceType.Self) -> C)) -> Swift.Optional<C> in conformance Swift.UnsafeBufferPointer : Swift.SequenceType
sil public_external protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)<C>(Swift.SequenceType.Self, (Swift._PreprocessingPass, (Swift.SequenceType.Self) -> C)) -> C? in conformance Swift.UnsafeBufferPointer : Swift.SequenceType : $@cc(witness_method) @thin <T><R> (@out Optional<R>, @in UnsafeBufferPointer<T>, _PreprocessingPass, @owned @callee_owned (@out R, @in UnsafeBufferPointer<T>) -> (), @thick UnsafeBufferPointer<T>.Type) -> () {
bb0(%0 : $*Optional<R>, %1 : $*UnsafeBufferPointer<T>, %2 : $_PreprocessingPass, %3 : $@callee_owned (@out R, @in UnsafeBufferPointer<T>) -> (), %4 : $@thick UnsafeBufferPointer<T>.Type):
%5 = load %1 : $*UnsafeBufferPointer<T> // user: %9
// function_ref reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@in Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) to @callee_owned (@unowned Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0)
%6 = function_ref reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@in Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) to @callee_owned (@unowned Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) : $@thin <τ_0_0><τ_1_0> (@out τ_1_0, UnsafeBufferPointer<τ_0_0>, @owned @callee_owned (@out τ_1_0, @in UnsafeBufferPointer<τ_0_0>) -> ()) -> () // user: %7
%7 = partial_apply %6<T, R>(%3) : $@thin <τ_0_0><τ_1_0> (@out τ_1_0, UnsafeBufferPointer<τ_0_0>, @owned @callee_owned (@out τ_1_0, @in UnsafeBufferPointer<τ_0_0>) -> ()) -> () // user: %11
%8 = alloc_stack $UnsafeBufferPointer<T> // users: %9, %13, %14
store %5 to %8#1 : $*UnsafeBufferPointer<T> // id: %9
// function_ref reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@unowned Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) to @callee_owned (@in Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0)
%10 = function_ref reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@unowned Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) to @callee_owned (@in Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) : $@thin <τ_0_0><τ_1_0> (@out τ_1_0, @in UnsafeBufferPointer<τ_0_0>, @owned @callee_owned (@out τ_1_0, UnsafeBufferPointer<τ_0_0>) -> ()) -> () // user: %11
%11 = partial_apply %10<T, R>(%7) : $@thin <τ_0_0><τ_1_0> (@out τ_1_0, @in UnsafeBufferPointer<τ_0_0>, @owned @callee_owned (@out τ_1_0, UnsafeBufferPointer<τ_0_0>) -> ()) -> () // user: %13
// function_ref Swift.~> infix <A : Swift._CollectionType, B>(A, (Swift._PreprocessingPass, (A) -> B)) -> Swift.Optional<B>
%12 = function_ref Swift.~> infix <A : Swift._CollectionType, B>(A, (Swift._PreprocessingPass, (A) -> B)) -> B? : $@thin <τ_0_0, τ_0_1 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_1>, @in τ_0_0, _PreprocessingPass, @owned @callee_owned (@out τ_0_1, @in τ_0_0) -> ()) -> () // user: %13
%13 = apply %12<UnsafeBufferPointer<T>, R, Int, Int, Int, Int, T>(%0, %8#1, %2, %11) : $@thin <τ_0_0, τ_0_1 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_1>, @in τ_0_0, _PreprocessingPass, @owned @callee_owned (@out τ_0_1, @in τ_0_0) -> ()) -> () // user: %15
dealloc_stack %8#0 : $*@local_storage UnsafeBufferPointer<T> // id: %14
return %13 : $() // id: %15
}
// protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)(Swift.SequenceType.Self, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<Swift.SequenceType.Self.Generator.Element> in conformance Swift.UnsafeBufferPointer : Swift.SequenceType
sil public_external protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)(Swift.SequenceType.Self, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<Swift.SequenceType.Self.Generator.Element> in conformance Swift.UnsafeBufferPointer : Swift.SequenceType : $@cc(witness_method) @thin <T> (@in UnsafeBufferPointer<T>, _CopyToNativeArrayBuffer, @thick UnsafeBufferPointer<T>.Type) -> @owned _ContiguousArrayBuffer<UnsafeBufferPointer<T>.Generator.Element> {
bb0(%0 : $*UnsafeBufferPointer<T>, %1 : $_CopyToNativeArrayBuffer, %2 : $@thick UnsafeBufferPointer<T>.Type):
%3 = load %0 : $*UnsafeBufferPointer<T> // user: %5
%4 = alloc_stack $UnsafeBufferPointer<T> // users: %5, %7, %8
store %3 to %4#1 : $*UnsafeBufferPointer<T> // id: %5
// function_ref Swift.~> infix <A : Swift.CollectionType>(A, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<A._Element>
%6 = function_ref Swift.~> infix <A : Swift.CollectionType>(A, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<A._Element> : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, τ_0_0.Generator.Element == τ_0_0._Element> (@in τ_0_0, _CopyToNativeArrayBuffer) -> @owned _ContiguousArrayBuffer<τ_0_0.Generator.Element> // user: %7
%7 = apply %6<UnsafeBufferPointer<T>, UnsafeBufferPointerGenerator<T>, T, Int, Int, Int, Int>(%4#1, %1) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, τ_0_0.Generator.Element == τ_0_0._Element> (@in τ_0_0, _CopyToNativeArrayBuffer) -> @owned _ContiguousArrayBuffer<τ_0_0.Generator.Element> // user: %9
dealloc_stack %4#0 : $*@local_storage UnsafeBufferPointer<T> // id: %8
return %7 : $_ContiguousArrayBuffer<T> // id: %9
}
// Swift.~> infix <A : Swift.CollectionType>(A, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<A._Element>
sil public_external Swift.~> infix <A : Swift.CollectionType>(A, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<A._Element> : $@thin <C where C : CollectionType, C.Generator : GeneratorType, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, C.Generator.Element == C._Element> (@in C, _CopyToNativeArrayBuffer) -> @owned _ContiguousArrayBuffer<C.Generator.Element> {
bb0(%0 : $*C, %1 : $_CopyToNativeArrayBuffer):
// function_ref Swift._copyCollectionToNativeArrayBuffer <A : Swift.CollectionType>(A) -> Swift._ContiguousArrayBuffer<A._Element>
%2 = function_ref Swift._copyCollectionToNativeArrayBuffer <A : Swift.CollectionType>(A) -> Swift._ContiguousArrayBuffer<A._Element> : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, τ_0_0.Generator.Element == τ_0_0._Element> (@in τ_0_0) -> @owned _ContiguousArrayBuffer<τ_0_0.Generator.Element> // user: %5
%3 = alloc_stack $C // users: %4, %5, %6
copy_addr %0 to [initialization] %3#1 : $*C // id: %4
%5 = apply %2<C, C.Generator, C._Element, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex>(%3#1) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, τ_0_0.Generator.Element == τ_0_0._Element> (@in τ_0_0) -> @owned _ContiguousArrayBuffer<τ_0_0.Generator.Element> // user: %8
dealloc_stack %3#0 : $*@local_storage C // id: %6
destroy_addr %0 : $*C // id: %7
return %5 : $_ContiguousArrayBuffer<C._Element> // id: %8
}
// Swift._copyCollectionToNativeArrayBuffer <A : Swift.CollectionType>(A) -> Swift._ContiguousArrayBuffer<A._Element>
sil public_external Swift._copyCollectionToNativeArrayBuffer <A : Swift.CollectionType>(A) -> Swift._ContiguousArrayBuffer<A._Element> : $@thin <C where C : CollectionType, C.Generator : GeneratorType, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, C.Generator.Element == C._Element> (@in C) -> @owned _ContiguousArrayBuffer<C.Generator.Element> {
bb0(%0 : $*C):
%1 = alloc_stack $UnsafeMutablePointer<C._Element> // users: %34, %49, %70
%2 = alloc_stack $C.Index // users: %36, %48, %53, %59, %74
// function_ref Swift.countElements <A : Swift._CollectionType>(A) -> A.Index.Distance
%3 = function_ref Swift.countElements <A : Swift._CollectionType>(A) -> A.Index.Distance : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0) -> () // user: %7
%4 = alloc_stack $C // users: %5, %7, %15
copy_addr %0 to [initialization] %4#1 : $*C // id: %5
%6 = alloc_stack $C.Index.Distance // users: %7, %9, %13, %14
%7 = apply %3<C, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%6#1, %4#1) : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0) -> ()
%8 = witness_method $C.Index.Distance, #_SignedIntegerType.toIntMax!1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _SignedIntegerType, τ_0_0.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@inout τ_0_0) -> Int64 // user: %9
%9 = apply %8<C.Index.Distance, C.Index.Distance.IntegerLiteralType>(%6#1) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _SignedIntegerType, τ_0_0.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@inout τ_0_0) -> Int64 // user: %10
%10 = struct_extract %9 : $Int64, #Int64.value // user: %12
%11 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %12
%12 = apply %11(%10) : $@thin (Builtin.Int64) -> Builtin.Word // users: %18, %26, %40, %44, %81
destroy_addr %6#1 : $*C.Index.Distance // id: %13
dealloc_stack %6#0 : $*@local_storage C.Index.Distance // id: %14
dealloc_stack %4#0 : $*@local_storage C // id: %15
%16 = integer_literal $Builtin.Word, 0 // users: %18, %27, %40, %44, %61
%17 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %18, %44, %81
%18 = apply %17(%12, %16) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %19
cond_br %18, bb1, bb2 // id: %19
bb1: // Preds: bb0
// function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)() -> Swift._ContiguousArrayBuffer<A>
%20 = function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)() -> Swift._ContiguousArrayBuffer<A> : $@thin <τ_0_0> (@thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %22
%21 = metatype $@thin _ContiguousArrayBuffer<C._Element>.Type // user: %22
%22 = apply %20<C._Element>(%21) : $@thin <τ_0_0> (@thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %23
br bb3(%22 : $_ContiguousArrayBuffer<C._Element>) // id: %23
bb2: // Preds: bb0
// function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(count : Swift.Int, minimumCapacity : Swift.Int) -> Swift._ContiguousArrayBuffer<A>
%24 = function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(count : Swift.Int, minimumCapacity : Swift.Int) -> Swift._ContiguousArrayBuffer<A> : $@thin <τ_0_0> (Int, Int, @thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %28
%25 = metatype $@thin _ContiguousArrayBuffer<C._Element>.Type // user: %28
%26 = struct $Int (%12 : $Builtin.Word) // user: %28
%27 = struct $Int (%16 : $Builtin.Word) // user: %28
%28 = apply %24<C._Element>(%26, %27, %25) : $@thin <τ_0_0> (Int, Int, @thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // users: %29, %33, %60
%29 = struct_extract %28 : $_ContiguousArrayBuffer<C._Element>, #_ContiguousArrayBuffer._base // user: %30
%30 = struct_extract %29 : $HeapBuffer<_ArrayBody, C._Element>, #HeapBuffer.storage // user: %32
// function_ref Swift._ContiguousArrayBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<A>
%31 = function_ref Swift._ContiguousArrayBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> UnsafeMutablePointer<τ_0_0> // user: %33
retain_value %30 : $Optional<HeapBufferStorage<_ArrayBody, C._Element>> // id: %32
%33 = apply %31<C._Element>(%28) : $@cc(method) @thin <τ_0_0> (@owned _ContiguousArrayBuffer<τ_0_0>) -> UnsafeMutablePointer<τ_0_0> // user: %34
store %33 to %1#1 : $*UnsafeMutablePointer<C._Element> // id: %34
%35 = witness_method $C, #_CollectionType.startIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %36
%36 = apply %35<C, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%2#1, %0) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
%37 = integer_literal $Builtin.Int1, 0 // user: %65
%38 = integer_literal $Builtin.Int1, -1 // user: %42
%39 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %40
%40 = apply %39(%16, %12) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %42
%41 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %42
%42 = apply %41(%40, %38) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %43
cond_fail %42 : $Builtin.Int1 // id: %43
%44 = apply %17(%16, %12) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %45
cond_br %44, bb4, bb5 // id: %45
bb3(%46 : $_ContiguousArrayBuffer<C._Element>): // Preds: bb1 bb4
destroy_addr %0 : $*C // id: %47
dealloc_stack %2#0 : $*@local_storage C.Index // id: %48
dealloc_stack %1#0 : $*@local_storage UnsafeMutablePointer<C._Element> // id: %49
return %46 : $_ContiguousArrayBuffer<C._Element> // id: %50
bb4: // Preds: bb2 bb6
// function_ref Swift._expectEnd <A : Swift.CollectionType>(A.Index, A) -> ()
%51 = function_ref Swift._expectEnd <A : Swift.CollectionType>(A.Index, A) -> () : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@in τ_0_0.Index, @in τ_0_0) -> () // user: %56
%52 = alloc_stack $C.Index // users: %53, %56, %58
copy_addr %2#1 to [initialization] %52#1 : $*C.Index // id: %53
%54 = alloc_stack $C // users: %55, %56, %57
copy_addr %0 to [initialization] %54#1 : $*C // id: %55
%56 = apply %51<C, C.Generator, C._Element, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%52#1, %54#1) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@in τ_0_0.Index, @in τ_0_0) -> ()
dealloc_stack %54#0 : $*@local_storage C // id: %57
dealloc_stack %52#0 : $*@local_storage C.Index // id: %58
destroy_addr %2#1 : $*C.Index // id: %59
br bb3(%28 : $_ContiguousArrayBuffer<C._Element>) // id: %60
bb5: // Preds: bb2
br bb6(%16 : $Builtin.Word) // id: %61
bb6(%62 : $Builtin.Word): // Preds: bb5 bb6
%63 = integer_literal $Builtin.Word, 1 // user: %65
%64 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %65
%65 = apply %64(%62, %63, %37) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %66
%66 = tuple_extract %65 : $(Builtin.Word, Builtin.Int1), 0 // users: %81, %82
// function_ref Swift.UnsafeMutablePointer.initialize <A>(Swift.UnsafeMutablePointer<A>)(A) -> ()
%67 = function_ref Swift.UnsafeMutablePointer.initialize <A>(Swift.UnsafeMutablePointer<A>)(A) -> () : $@cc(method) @thin <τ_0_0> (@in τ_0_0, UnsafeMutablePointer<τ_0_0>) -> () // user: %77
// function_ref Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A
%68 = function_ref Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A : $@thin <τ_0_0 where τ_0_0 : _Incrementable> (@out τ_0_0, @inout τ_0_0) -> () // users: %70, %74
%69 = alloc_stack $UnsafeMutablePointer<C._Element> // users: %70, %71, %80
%70 = apply [transparent] %68<UnsafeMutablePointer<C._Element>>(%69#1, %1#1) : $@thin <τ_0_0 where τ_0_0 : _Incrementable> (@out τ_0_0, @inout τ_0_0) -> ()
%71 = load %69#1 : $*UnsafeMutablePointer<C._Element> // user: %77
%72 = alloc_stack $C._Element // users: %76, %77, %79
%73 = alloc_stack $C.Index // users: %74, %76, %78
%74 = apply [transparent] %68<C.Index>(%73#1, %2#1) : $@thin <τ_0_0 where τ_0_0 : _Incrementable> (@out τ_0_0, @inout τ_0_0) -> ()
%75 = witness_method $C, #CollectionType.subscript!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @inout τ_0_0) -> () // user: %76
%76 = apply %75<C, C.Generator, C._Element, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%72#1, %73#1, %0) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @inout τ_0_0) -> ()
%77 = apply %67<C._Element>(%72#1, %71) : $@cc(method) @thin <τ_0_0> (@in τ_0_0, UnsafeMutablePointer<τ_0_0>) -> ()
dealloc_stack %73#0 : $*@local_storage C.Index // id: %78
dealloc_stack %72#0 : $*@local_storage C._Element // id: %79
dealloc_stack %69#0 : $*@local_storage UnsafeMutablePointer<C._Element> // id: %80
%81 = apply %17(%66, %12) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %82
cond_br %81, bb4, bb6(%66 : $Builtin.Word) // id: %82
}
// Swift.countElements <A : Swift._CollectionType>(A) -> A.Index.Distance
sil public_external Swift.countElements <A : Swift._CollectionType>(A) -> A.Index.Distance : $@thin <T where T : _CollectionType, T.Index : ForwardIndexType, T.Index.Distance : _SignedIntegerType, T.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out T.Index.Distance, @in T) -> () {
bb0(%0 : $*T.Index.Distance, %1 : $*T):
// function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance
%2 = function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0, _CountElements) -> () // user: %6
%3 = alloc_stack $T // users: %4, %6, %7
copy_addr %1 to [initialization] %3#1 : $*T // id: %4
%5 = struct $_CountElements () // user: %6
%6 = apply %2<T, T.Index, T.Index.Distance, T.Index.Distance.IntegerLiteralType, T.Index._DisabledRangeIndex, T._Element>(%0, %3#1, %5) : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0, _CountElements) -> ()
dealloc_stack %3#0 : $*@local_storage T // id: %7
destroy_addr %1 : $*T // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)() -> Swift._ContiguousArrayBuffer<A>
sil public_external Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)() -> Swift._ContiguousArrayBuffer<A> : $@thin <T> (@thin _ContiguousArrayBuffer<T>.Type) -> @owned _ContiguousArrayBuffer<T> {
bb0(%0 : $@thin _ContiguousArrayBuffer<T>.Type):
// function_ref Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.HeapBuffer<A, B>
%1 = function_ref Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.HeapBuffer<A, B> : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> @owned HeapBuffer<τ_0_0, τ_0_1> // user: %3
%2 = metatype $@thin HeapBuffer<_ArrayBody, T>.Type // user: %3
%3 = apply %1<_ArrayBody, T>(%2) : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> @owned HeapBuffer<τ_0_0, τ_0_1> // user: %4
%4 = struct $_ContiguousArrayBuffer<T> (%3 : $HeapBuffer<_ArrayBody, T>) // user: %5
return %4 : $_ContiguousArrayBuffer<T> // id: %5
}
// Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(count : Swift.Int, minimumCapacity : Swift.Int) -> Swift._ContiguousArrayBuffer<A>
sil public_external Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(count : Swift.Int, minimumCapacity : Swift.Int) -> Swift._ContiguousArrayBuffer<A> : $@thin <T> (Int, Int, @thin _ContiguousArrayBuffer<T>.Type) -> @owned _ContiguousArrayBuffer<T> {
bb0(%0 : $Int, %1 : $Int, %2 : $@thin _ContiguousArrayBuffer<T>.Type):
// function_ref Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)(Swift.AnyObject.Type, A, Swift.Int) -> Swift.HeapBuffer<A, B>
%3 = function_ref Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)(Swift.AnyObject.Type, A, Swift.Int) -> Swift.HeapBuffer<A, B> : $@thin <τ_0_0, τ_0_1> (@thick AnyObject.Type, @in τ_0_0, Int, @thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> @owned HeapBuffer<τ_0_0, τ_0_1> // user: %21
%4 = metatype $@thin HeapBuffer<_ArrayBody, T>.Type // user: %21
%5 = metatype $@thick _ContiguousArrayStorage<T>.Type // user: %6
%6 = upcast %5 : $@thick _ContiguousArrayStorage<T>.Type to $@thick AnyObject.Type // user: %21
%7 = alloc_stack $_ArrayBody // users: %12, %21, %22
%8 = integer_literal $Builtin.Word, 0 // users: %9, %10, %56
%9 = struct $Int (%8 : $Builtin.Word) // user: %11
%10 = struct $UInt (%8 : $Builtin.Word) // user: %11
%11 = struct $_ArrayBody (%9 : $Int, %10 : $UInt) // user: %12
store %11 to %7#1 : $*_ArrayBody // id: %12
%13 = struct_extract %0 : $Int, #Int.value // users: %16, %18
%14 = struct_extract %1 : $Int, #Int.value // users: %16, %17
%15 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %16
%16 = apply %15(%14, %13) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %17
cond_br %16, bb1, bb2(%14 : $Builtin.Word) // id: %17
bb1: // Preds: bb0
br bb2(%13 : $Builtin.Word) // id: %18
bb2(%19 : $Builtin.Word): // Preds: bb0 bb1
%20 = struct $Int (%19 : $Builtin.Word) // user: %21
%21 = apply %3<_ArrayBody, T>(%6, %7#1, %20, %4) : $@thin <τ_0_0, τ_0_1> (@thick AnyObject.Type, @in τ_0_0, Int, @thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> @owned HeapBuffer<τ_0_0, τ_0_1> // users: %38, %40, %66, %68
dealloc_stack %7#0 : $*@local_storage _ArrayBody // id: %22
%23 = integer_literal $Builtin.Int1, 0 // user: %31
// function_ref Swift._canBeClass <A>(A.Type) -> Swift.Int8
%24 = function_ref Swift._canBeClass <A>(A.Type) -> Swift.Int8 : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int8 // user: %26
%25 = metatype $@thick T.Type // users: %26, %33
%26 = apply [transparent] %24<T>(%25) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int8 // user: %29
%27 = integer_literal $Builtin.Int8, 0 // user: %30
%28 = builtin_function_ref "cmp_ne_Int8" : $@thin (Builtin.Int8, Builtin.Int8) -> Builtin.Int1 // user: %30
%29 = struct_extract %26 : $Int8, #Int8.value // user: %30
%30 = apply %28(%29, %27) : $@thin (Builtin.Int8, Builtin.Int8) -> Builtin.Int1 // user: %31
cond_br %30, bb3, bb4(%23 : $Builtin.Int1) // id: %31
bb3: // Preds: bb2
// function_ref Swift._isBridgedVerbatimToObjectiveC <A>(A.Type) -> Swift.Bool
%32 = function_ref Swift._isBridgedVerbatimToObjectiveC <A>(A.Type) -> Swift.Bool : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %33
%33 = apply %32<T>(%25) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %34
%34 = struct_extract %33 : $Bool, #Bool.value // user: %35
br bb4(%34 : $Builtin.Int1) // id: %35
bb4(%36 : $Builtin.Int1): // Preds: bb2 bb3
// function_ref Swift.HeapBuffer._capacity <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int
%37 = function_ref Swift.HeapBuffer._capacity <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> Int // user: %40
%38 = struct_extract %21 : $HeapBuffer<_ArrayBody, T>, #HeapBuffer.storage // users: %39, %65
retain_value %38 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %39
%40 = apply %37<_ArrayBody, T>(%21) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> Int // user: %42
%41 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // user: %43
%42 = struct_extract %40 : $Int, #Int.value // user: %43
%43 = apply %41(%42) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %45
%44 = builtin_function_ref "s_to_u_checked_conversion_Int64" : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // user: %45
%45 = apply %44(%43) : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // users: %46, %47
%46 = tuple_extract %45 : $(Builtin.Int64, Builtin.Int1), 0 // user: %50
%47 = tuple_extract %45 : $(Builtin.Int64, Builtin.Int1), 1 // user: %48
cond_fail %47 : $Builtin.Int1 // id: %48
%49 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %50
%50 = apply %49(%46) : $@thin (Builtin.Int64) -> Builtin.Word // user: %53
%51 = integer_literal $Builtin.Word, 1 // users: %53, %55
%52 = builtin_function_ref "shl_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %53
%53 = apply %52(%50, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %59
cond_br %36, bb5, bb6 // id: %54
bb5: // Preds: bb4
br bb7(%51 : $Builtin.Word) // id: %55
bb6: // Preds: bb4
br bb7(%8 : $Builtin.Word) // id: %56
bb7(%57 : $Builtin.Word): // Preds: bb5 bb6
%58 = builtin_function_ref "or_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %59
%59 = apply %58(%53, %57) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %60
%60 = struct $UInt (%59 : $Builtin.Word) // user: %61
%61 = struct $_ArrayBody (%0 : $Int, %60 : $UInt) // user: %64
// function_ref Swift.HeapBuffer.value.setter : A
%62 = function_ref Swift.HeapBuffer.value.setter : A : $@cc(method) @thin <τ_0_0, τ_0_1> (@in τ_0_0, @owned HeapBuffer<τ_0_0, τ_0_1>) -> () // user: %66
%63 = alloc_stack $_ArrayBody // users: %64, %66, %67
store %61 to %63#1 : $*_ArrayBody // id: %64
retain_value %38 : $Optional<HeapBufferStorage<_ArrayBody, T>> // id: %65
%66 = apply %62<_ArrayBody, T>(%63#1, %21) : $@cc(method) @thin <τ_0_0, τ_0_1> (@in τ_0_0, @owned HeapBuffer<τ_0_0, τ_0_1>) -> ()
dealloc_stack %63#0 : $*@local_storage _ArrayBody // id: %67
%68 = struct $_ContiguousArrayBuffer<T> (%21 : $HeapBuffer<_ArrayBody, T>) // user: %69
return %68 : $_ContiguousArrayBuffer<T> // id: %69
}
// Swift._expectEnd <A : Swift.CollectionType>(A.Index, A) -> ()
sil public_external Swift._expectEnd <A : Swift.CollectionType>(A.Index, A) -> () : $@thin <C where C : CollectionType, C.Generator : GeneratorType, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@in C.Index, @in C) -> () {
bb0(%0 : $*C.Index, %1 : $*C):
%2 = alloc_stack $C.Index // users: %4, %6, %12
%3 = alloc_stack $C // users: %5, %7, %11
copy_addr %0 to [initialization] %2#1 : $*C.Index // id: %4
copy_addr %1 to [initialization] %3#1 : $*C // id: %5
destroy_addr %2#1 : $*C.Index // id: %6
destroy_addr %3#1 : $*C // id: %7
destroy_addr %1 : $*C // id: %8
destroy_addr %0 : $*C.Index // id: %9
%10 = tuple () // user: %13
dealloc_stack %3#0 : $*@local_storage C // id: %11
dealloc_stack %2#0 : $*@local_storage C.Index // id: %12
return %10 : $() // id: %13
}
// Swift.UnsafeMutablePointer.initialize <A>(Swift.UnsafeMutablePointer<A>)(A) -> ()
sil public_external Swift.UnsafeMutablePointer.initialize <A>(Swift.UnsafeMutablePointer<A>)(A) -> () : $@cc(method) @thin <T> (@in T, UnsafeMutablePointer<T>) -> () {
bb0(%0 : $*T, %1 : $UnsafeMutablePointer<T>):
%2 = alloc_stack $T // users: %3, %6, %7
copy_addr %0 to [initialization] %2#1 : $*T // id: %3
%4 = struct_extract %1 : $UnsafeMutablePointer<T>, #UnsafeMutablePointer.value // user: %5
%5 = pointer_to_address %4 : $Builtin.RawPointer to $*T // user: %6
copy_addr [take] %2#1 to [initialization] %5 : $*T // id: %6
dealloc_stack %2#0 : $*@local_storage T // id: %7
destroy_addr %0 : $*T // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance
sil public_external Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance : $@thin <T where T : _CollectionType, T.Index : ForwardIndexType, T.Index.Distance : _SignedIntegerType, T.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out T.Index.Distance, @in T, _CountElements) -> () {
bb0(%0 : $*T.Index.Distance, %1 : $*T, %2 : $_CountElements):
// function_ref Swift.distance <A : Swift.ForwardIndexType>(A, A) -> A.Distance
%3 = function_ref Swift.distance <A : Swift.ForwardIndexType>(A, A) -> A.Distance : $@thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Distance, @in τ_0_0, @in τ_0_0) -> () // user: %10
%4 = alloc_stack $T.Index // users: %6, %10, %12
%5 = witness_method $T, #_CollectionType.startIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %6
%6 = apply %5<T, T.Index, T.Index.Distance, T.Index.Distance.IntegerLiteralType, T.Index._DisabledRangeIndex, T._Element>(%4#1, %1) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
%7 = alloc_stack $T.Index // users: %9, %10, %11
%8 = witness_method $T, #_CollectionType.endIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %9
%9 = apply %8<T, T.Index, T.Index.Distance, T.Index.Distance.IntegerLiteralType, T.Index._DisabledRangeIndex, T._Element>(%7#1, %1) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
%10 = apply %3<T.Index, T.Index.Distance, T.Index.Distance.IntegerLiteralType, T.Index._DisabledRangeIndex>(%0, %4#1, %7#1) : $@thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Distance, @in τ_0_0, @in τ_0_0) -> ()
dealloc_stack %7#0 : $*@local_storage T.Index // id: %11
dealloc_stack %4#0 : $*@local_storage T.Index // id: %12
destroy_addr %1 : $*T // id: %13
%14 = tuple () // user: %15
return %14 : $() // id: %15
}
// Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.HeapBuffer<A, B>
sil public_external Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.HeapBuffer<A, B> : $@thin <Value, Element> (@thin HeapBuffer<Value, Element>.Type) -> @owned HeapBuffer<Value, Element> {
bb0(%0 : $@thin HeapBuffer<Value, Element>.Type):
// function_ref Swift.Optional.init <A>(Swift.Optional<A>.Type)(nilLiteral : ()) -> Swift.Optional<A>
%1 = function_ref Swift.Optional.init <A>(A?.Type)(nilLiteral : ()) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %4
%2 = metatype $@thin Optional<HeapBufferStorage<Value, Element>>.Type // users: %4, %9
%3 = alloc_stack $Optional<HeapBufferStorage<Value, Element>> // users: %4, %5, %6
%4 = apply [transparent] %1<HeapBufferStorage<Value, Element>>(%3#1, %2) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
%5 = load %3#1 : $*Optional<HeapBufferStorage<Value, Element>> // user: %11
dealloc_stack %3#0 : $*@local_storage Optional<HeapBufferStorage<Value, Element>> // id: %6
// function_ref Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
%7 = function_ref Swift.Optional.None <A>(A?.Type) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %9
%8 = alloc_stack $Optional<HeapBufferStorage<Value, Element>> // users: %9, %10, %12
%9 = apply [transparent] %7<HeapBufferStorage<Value, Element>>(%8#1, %2) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
%10 = load %8#1 : $*Optional<HeapBufferStorage<Value, Element>> // user: %13
release_value %5 : $Optional<HeapBufferStorage<Value, Element>> // id: %11
dealloc_stack %8#0 : $*@local_storage Optional<HeapBufferStorage<Value, Element>> // id: %12
%13 = struct $HeapBuffer<Value, Element> (%10 : $Optional<HeapBufferStorage<Value, Element>>) // user: %14
return %13 : $HeapBuffer<Value, Element> // id: %14
}
// Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)(Swift.AnyObject.Type, A, Swift.Int) -> Swift.HeapBuffer<A, B>
sil public_external Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)(Swift.AnyObject.Type, A, Swift.Int) -> Swift.HeapBuffer<A, B> : $@thin <Value, Element> (@thick AnyObject.Type, @in Value, Int, @thin HeapBuffer<Value, Element>.Type) -> @owned HeapBuffer<Value, Element> {
bb0(%0 : $@thick AnyObject.Type, %1 : $*Value, %2 : $Int, %3 : $@thin HeapBuffer<Value, Element>.Type):
// function_ref Swift.Optional.init <A>(Swift.Optional<A>.Type)(nilLiteral : ()) -> Swift.Optional<A>
%4 = function_ref Swift.Optional.init <A>(A?.Type)(nilLiteral : ()) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %7
%5 = metatype $@thin Optional<HeapBufferStorage<Value, Element>>.Type // user: %7
%6 = alloc_stack $Optional<HeapBufferStorage<Value, Element>> // users: %7, %8, %9
%7 = apply [transparent] %4<HeapBufferStorage<Value, Element>>(%6#1, %5) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
%8 = load %6#1 : $*Optional<HeapBufferStorage<Value, Element>> // user: %47
dealloc_stack %6#0 : $*@local_storage Optional<HeapBufferStorage<Value, Element>> // id: %9
// function_ref Swift.HeapBuffer._elementOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
%10 = function_ref Swift.HeapBuffer._elementOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %12
%11 = metatype $@thin HeapBuffer<Value, Element>.Type // users: %12, %32
%12 = apply %10<Value, Element>(%11) : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %25
// function_ref Swift.strideof <A>(A.Type) -> Swift.Int
%13 = function_ref Swift.strideof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %15
%14 = metatype $@thick Element.Type // user: %15
%15 = apply [transparent] %13<Element>(%14) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %18
%16 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %20
%17 = struct_extract %2 : $Int, #Int.value // user: %20
%18 = struct_extract %15 : $Int, #Int.value // user: %20
%19 = integer_literal $Builtin.Int1, -1 // users: %20, %26
%20 = apply %16(%17, %18, %19) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %21, %22
%21 = tuple_extract %20 : $(Builtin.Word, Builtin.Int1), 0 // user: %26
%22 = tuple_extract %20 : $(Builtin.Word, Builtin.Int1), 1 // user: %23
cond_fail %22 : $Builtin.Int1 // id: %23
%24 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %26
%25 = struct_extract %12 : $Int, #Int.value // user: %26
%26 = apply %24(%25, %21, %19) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %27, %28
%27 = tuple_extract %26 : $(Builtin.Word, Builtin.Int1), 0 // user: %30
%28 = tuple_extract %26 : $(Builtin.Word, Builtin.Int1), 1 // user: %29
cond_fail %28 : $Builtin.Int1 // id: %29
%30 = struct $Int (%27 : $Builtin.Word) // user: %38
// function_ref Swift.HeapBuffer._requiredAlignMask <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
%31 = function_ref Swift.HeapBuffer._requiredAlignMask <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %32
%32 = apply %31<Value, Element>(%11) : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %38
%33 = alloc_stack $Optional<HeapBufferStorage<Value, Element>> // users: %43, %46, %48
%34 = alloc_stack $HeapBufferStorage<Value, Element> // users: %41, %43, %45
// function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B
%35 = function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> () // user: %41
%36 = alloc_stack $AnyObject // users: %39, %41, %44
// function_ref swift_bufferAllocate
%37 = function_ref @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %38
%38 = apply %37(%0, %30, %32) : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %39
store %38 to %36#1 : $*AnyObject // id: %39
%40 = metatype $@thick HeapBufferStorage<Value, Element>.Type // user: %41
%41 = apply [transparent] %35<AnyObject, HeapBufferStorage<Value, Element>>(%34#1, %36#1, %40) : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> ()
// function_ref Swift._injectValueIntoOptional <A>(A) -> Swift.Optional<A>
%42 = function_ref Swift._injectValueIntoOptional <A>(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> () // user: %43
%43 = apply [transparent] %42<HeapBufferStorage<Value, Element>>(%33#1, %34#1) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> ()
dealloc_stack %36#0 : $*@local_storage AnyObject // id: %44
dealloc_stack %34#0 : $*@local_storage HeapBufferStorage<Value, Element> // id: %45
%46 = load %33#1 : $*Optional<HeapBufferStorage<Value, Element>> // users: %50, %52
release_value %8 : $Optional<HeapBufferStorage<Value, Element>> // id: %47
dealloc_stack %33#0 : $*@local_storage Optional<HeapBufferStorage<Value, Element>> // id: %48
// function_ref Swift.UnsafeMutablePointer.initialize <A>(Swift.UnsafeMutablePointer<A>)(A) -> ()
%49 = function_ref Swift.UnsafeMutablePointer.initialize <A>(Swift.UnsafeMutablePointer<A>)(A) -> () : $@cc(method) @thin <τ_0_0> (@in τ_0_0, UnsafeMutablePointer<τ_0_0>) -> () // user: %56
%50 = struct $HeapBuffer<Value, Element> (%46 : $Optional<HeapBufferStorage<Value, Element>>) // users: %53, %59
// function_ref Swift.HeapBuffer._value.getter : Swift.UnsafeMutablePointer<A>
%51 = function_ref Swift.HeapBuffer._value.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<τ_0_0> // user: %53
retain_value %46 : $Optional<HeapBufferStorage<Value, Element>> // id: %52
%53 = apply %51<Value, Element>(%50) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<τ_0_0> // user: %56
%54 = alloc_stack $Value // users: %55, %56, %57
copy_addr %1 to [initialization] %54#1 : $*Value // id: %55
%56 = apply %49<Value>(%54#1, %53) : $@cc(method) @thin <τ_0_0> (@in τ_0_0, UnsafeMutablePointer<τ_0_0>) -> ()
dealloc_stack %54#0 : $*@local_storage Value // id: %57
destroy_addr %1 : $*Value // id: %58
return %50 : $HeapBuffer<Value, Element> // id: %59
}
// Swift.HeapBuffer._capacity <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int
sil public_external Swift.HeapBuffer._capacity <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int : $@cc(method) @thin <Value, Element> (@owned HeapBuffer<Value, Element>) -> Int {
bb0(%0 : $HeapBuffer<Value, Element>):
// function_ref Swift.HeapBuffer._allocatedSize <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int
%1 = function_ref Swift.HeapBuffer._allocatedSize <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> Int // user: %3
retain_value %0 : $HeapBuffer<Value, Element> // id: %2
%3 = apply %1<Value, Element>(%0) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> Int // user: %8
// function_ref Swift.HeapBuffer._elementOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
%4 = function_ref Swift.HeapBuffer._elementOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %6
%5 = metatype $@thin HeapBuffer<Value, Element>.Type // user: %6
%6 = apply %4<Value, Element>(%5) : $@thin <τ_0_0, τ_0_1> (@thin HeapBuffer<τ_0_0, τ_0_1>.Type) -> Int // user: %9
%7 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %11
%8 = struct_extract %3 : $Int, #Int.value // user: %11
%9 = struct_extract %6 : $Int, #Int.value // user: %11
%10 = integer_literal $Builtin.Int1, -1 // user: %11
%11 = apply %7(%8, %9, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %12, %13
%12 = tuple_extract %11 : $(Builtin.Word, Builtin.Int1), 0 // users: %25, %32
%13 = tuple_extract %11 : $(Builtin.Word, Builtin.Int1), 1 // user: %14
cond_fail %13 : $Builtin.Int1 // id: %14
// function_ref Swift.strideof <A>(A.Type) -> Swift.Int
%15 = function_ref Swift.strideof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %17
%16 = metatype $@thick Element.Type // user: %17
%17 = apply [transparent] %15<Element>(%16) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %21
release_value %0 : $HeapBuffer<Value, Element> // id: %18
%19 = integer_literal $Builtin.Word, 0 // user: %22
%20 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %22, %25, %27
%21 = struct_extract %17 : $Int, #Int.value // users: %22, %27, %32
%22 = apply %20(%21, %19) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %23
cond_fail %22 : $Builtin.Int1 // id: %23
%24 = integer_literal $Builtin.Word, -9223372036854775808 // user: %25
%25 = apply %20(%12, %24) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %29
%26 = integer_literal $Builtin.Word, -1 // user: %27
%27 = apply %20(%21, %26) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %29
%28 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %29
%29 = apply %28(%25, %27) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %30
cond_fail %29 : $Builtin.Int1 // id: %30
%31 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %32
%32 = apply %31(%12, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %33
%33 = struct $Int (%32 : $Builtin.Word) // user: %34
return %33 : $Int // id: %34
}
// Swift.HeapBuffer.value.setter : A
sil public_external Swift.HeapBuffer.value.setter : A : $@cc(method) @thin <Value, Element> (@in Value, @owned HeapBuffer<Value, Element>) -> () {
bb0(%0 : $*Value, %1 : $HeapBuffer<Value, Element>):
%2 = alloc_stack $Value // users: %3, %8, %10
copy_addr %0 to [initialization] %2#1 : $*Value // id: %3
// function_ref Swift.HeapBuffer._value.getter : Swift.UnsafeMutablePointer<A>
%4 = function_ref Swift.HeapBuffer._value.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<τ_0_0> // user: %6
retain_value %1 : $HeapBuffer<Value, Element> // id: %5
%6 = apply %4<Value, Element>(%1) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<τ_0_0> // user: %8
// function_ref Swift.UnsafeMutablePointer.memory.setter : A
%7 = function_ref Swift.UnsafeMutablePointer.memory.setter : A : $@cc(method) @thin <τ_0_0> (@in τ_0_0, UnsafeMutablePointer<τ_0_0>) -> () // user: %8
%8 = apply [transparent] %7<Value>(%2#1, %6) : $@cc(method) @thin <τ_0_0> (@in τ_0_0, UnsafeMutablePointer<τ_0_0>) -> ()
release_value %1 : $HeapBuffer<Value, Element> // id: %9
dealloc_stack %2#0 : $*@local_storage Value // id: %10
destroy_addr %0 : $*Value // id: %11
%12 = tuple () // user: %13
return %12 : $() // id: %13
}
// Swift.HeapBuffer._requiredAlignMask <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
sil public_external Swift.HeapBuffer._requiredAlignMask <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin <Value, Element> (@thin HeapBuffer<Value, Element>.Type) -> Int {
bb0(%0 : $@thin HeapBuffer<Value, Element>.Type):
%1 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %3
%2 = metatype $@thick HeapObject.Type // user: %3
%3 = apply %1<HeapObject>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %7
%4 = integer_literal $Builtin.Word, 1 // users: %7, %14, %20
%5 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %7, %14, %20
%6 = integer_literal $Builtin.Int1, 0 // users: %7, %14, %20
%7 = apply %5(%3, %4, %6) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %8
%8 = tuple_extract %7 : $(Builtin.Word, Builtin.Int1), 0 // users: %9, %24, %28
%9 = struct $Int (%8 : $Builtin.Word) // user: %35
// function_ref Swift.alignof <A>(A.Type) -> Swift.Int
%10 = function_ref Swift.alignof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // users: %12, %18
%11 = metatype $@thick Value.Type // user: %12
%12 = apply [transparent] %10<Value>(%11) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %13
%13 = struct_extract %12 : $Int, #Int.value // user: %14
%14 = apply %5(%13, %4, %6) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %15
%15 = tuple_extract %14 : $(Builtin.Word, Builtin.Int1), 0 // users: %16, %24, %26
%16 = struct $Int (%15 : $Builtin.Word) // user: %31
%17 = metatype $@thick Element.Type // user: %18
%18 = apply [transparent] %10<Element>(%17) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %19
%19 = struct_extract %18 : $Int, #Int.value // user: %20
%20 = apply %5(%19, %4, %6) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %21
%21 = tuple_extract %20 : $(Builtin.Word, Builtin.Int1), 0 // users: %22, %26, %28
%22 = struct $Int (%21 : $Builtin.Word) // users: %30, %34
%23 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %24, %26, %28
%24 = apply %23(%8, %15) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %25
cond_br %24, bb1, bb2 // id: %25
bb1: // Preds: bb0
%26 = apply %23(%15, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %27
cond_br %26, bb3, bb4 // id: %27
bb2: // Preds: bb0
%28 = apply %23(%8, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %29
cond_br %28, bb6, bb7 // id: %29
bb3: // Preds: bb1
br bb5(%22 : $Int) // id: %30
bb4: // Preds: bb1
br bb5(%16 : $Int) // id: %31
bb5(%32 : $Int): // Preds: bb3 bb4 bb6 bb7
return %32 : $Int // id: %33
bb6: // Preds: bb2
br bb5(%22 : $Int) // id: %34
bb7: // Preds: bb2
br bb5(%9 : $Int) // id: %35
}
// Swift.HeapBuffer._allocatedSize <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int
sil public_external Swift.HeapBuffer._allocatedSize <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int : $@cc(method) @thin <Value, Element> (@owned HeapBuffer<Value, Element>) -> Int {
bb0(%0 : $HeapBuffer<Value, Element>):
// function_ref malloc_size
%1 = function_ref @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %7
// function_ref Swift.HeapBuffer._address.getter : Swift.UnsafeMutablePointer<Swift.Int8>
%2 = function_ref Swift.HeapBuffer._address.getter : Swift.UnsafeMutablePointer<Swift.Int8> : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<Int8> // user: %4
retain_value %0 : $HeapBuffer<Value, Element> // id: %3
%4 = apply %2<Value, Element>(%0) : $@cc(method) @thin <τ_0_0, τ_0_1> (@owned HeapBuffer<τ_0_0, τ_0_1>) -> UnsafeMutablePointer<Int8> // user: %5
%5 = struct_extract %4 : $UnsafeMutablePointer<Int8>, #UnsafeMutablePointer.value // user: %6
%6 = struct $UnsafePointer<()> (%5 : $Builtin.RawPointer) // user: %7
%7 = apply %1(%6) : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %9
release_value %0 : $HeapBuffer<Value, Element> // id: %8
%9 = struct_extract %7 : $UInt, #UInt.value // user: %10
%10 = struct $Int (%9 : $Builtin.Word) // user: %11
return %10 : $Int // id: %11
}
// Swift.UnsafeMutablePointer.memory.setter : A
sil public_external [transparent] Swift.UnsafeMutablePointer.memory.setter : A : $@cc(method) @thin <T> (@in T, UnsafeMutablePointer<T>) -> () {
bb0(%0 : $*T, %1 : $UnsafeMutablePointer<T>):
%2 = alloc_stack $T // users: %3, %6, %7
copy_addr %0 to [initialization] %2#1 : $*T // id: %3
%4 = struct_extract %1 : $UnsafeMutablePointer<T>, #UnsafeMutablePointer.value // user: %5
%5 = pointer_to_address %4 : $Builtin.RawPointer to $*T // user: %6
copy_addr [take] %2#1 to %5 : $*T // id: %6
dealloc_stack %2#0 : $*@local_storage T // id: %7
destroy_addr %0 : $*T // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// malloc_size
sil @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt
// Swift.distance <A : Swift.ForwardIndexType>(A, A) -> A.Distance
sil public_external Swift.distance <A : Swift.ForwardIndexType>(A, A) -> A.Distance : $@thin <T where T : ForwardIndexType, T.Distance : _SignedIntegerType, T.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out T.Distance, @in T, @in T) -> () {
bb0(%0 : $*T.Distance, %1 : $*T, %2 : $*T):
%3 = metatype $@thick T.Type // user: %14
%4 = witness_method $T, #ForwardIndexType."~>"!1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Distance, @in τ_0_0, _Distance, @in τ_0_0, @thick τ_0_0.Type) -> () // user: %14
%5 = alloc_stack $T // users: %6, %14, %17
copy_addr %1 to [initialization] %5#1 : $*T // id: %6
// function_ref Swift._distanceTo <A>(A) -> (Swift._Distance, A)
%7 = function_ref Swift._distanceTo <A>(A) -> (Swift._Distance, A) : $@thin <τ_0_0> (@out (_Distance, τ_0_0), @in τ_0_0) -> () // user: %11
%8 = alloc_stack $T // users: %9, %11, %16
copy_addr %2 to [initialization] %8#1 : $*T // id: %9
%10 = alloc_stack $(_Distance, T) // users: %11, %13, %15
%11 = apply %7<T>(%10#1, %8#1) : $@thin <τ_0_0> (@out (_Distance, τ_0_0), @in τ_0_0) -> ()
%12 = struct $_Distance () // user: %14
%13 = tuple_element_addr %10#1 : $*(_Distance, T), 1 // user: %14
%14 = apply %4<T, T.Distance, T.Distance.IntegerLiteralType, T._DisabledRangeIndex>(%0, %5#1, %12, %13, %3) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : ForwardIndexType, τ_0_0.Distance : _SignedIntegerType, τ_0_0.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Distance, @in τ_0_0, _Distance, @in τ_0_0, @thick τ_0_0.Type) -> ()
dealloc_stack %10#0 : $*@local_storage (_Distance, T) // id: %15
dealloc_stack %8#0 : $*@local_storage T // id: %16
dealloc_stack %5#0 : $*@local_storage T // id: %17
destroy_addr %2 : $*T // id: %18
destroy_addr %1 : $*T // id: %19
%20 = tuple () // user: %21
return %20 : $() // id: %21
}
// Swift._distanceTo <A>(A) -> (Swift._Distance, A)
sil public_external Swift._distanceTo <A>(A) -> (Swift._Distance, A) : $@thin <I> (@out (_Distance, I), @in I) -> () {
bb0(%0 : $*(_Distance, I), %1 : $*I):
%2 = tuple_element_addr %0 : $*(_Distance, I), 0 // user: %5
%3 = tuple_element_addr %0 : $*(_Distance, I), 1 // user: %6
%4 = struct $_Distance () // user: %5
store %4 to %2 : $*_Distance // id: %5
copy_addr [take] %1 to [initialization] %3 : $*I // id: %6
%7 = tuple () // user: %8
return %7 : $() // id: %8
}
// protocol witness for Swift.Equatable.== infix <A : Swift.Equatable>(Swift.Equatable.Self.Type)(Swift.Equatable.Self, Swift.Equatable.Self) -> Swift.Bool in conformance Swift.Bool : Swift.Equatable
sil public_external protocol witness for Swift.Equatable.== infix <A : Swift.Equatable>(Swift.Equatable.Self.Type)(Swift.Equatable.Self, Swift.Equatable.Self) -> Swift.Bool in conformance Swift.Bool : Swift.Equatable : $@cc(witness_method) @thin (@in Bool, @in Bool, @thick Bool.Type) -> Bool {
bb0(%0 : $*Bool, %1 : $*Bool, %2 : $@thick Bool.Type):
%3 = struct_element_addr %0 : $*Bool, #Bool.value // user: %4
%4 = load %3 : $*Builtin.Int1 // user: %8
%5 = struct_element_addr %1 : $*Bool, #Bool.value // user: %6
%6 = load %5 : $*Builtin.Int1 // user: %8
%7 = builtin_function_ref "cmp_eq_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %8
%8 = apply %7(%4, %6) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %9
%9 = struct $Bool (%8 : $Builtin.Int1) // user: %10
return %9 : $Bool // id: %10
}
// protocol witness for Swift.CollectionType.subscript.getter (Swift.CollectionType.Self.Index) -> Swift.CollectionType.Self.Generator.Element in conformance Swift.LazyForwardCollection : Swift.CollectionType
sil public_external protocol witness for Swift.CollectionType.subscript.getter (Swift.CollectionType.Self.Index) -> Swift.CollectionType.Self.Generator.Element in conformance Swift.LazyForwardCollection : Swift.CollectionType : $@cc(witness_method) @thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<S>.Generator.Element, @in LazyForwardCollection<S>.Index, @inout LazyForwardCollection<S>) -> () {
bb0(%0 : $*S.Generator.Element, %1 : $*S.Index, %2 : $*LazyForwardCollection<S>):
%3 = alloc_stack $LazyForwardCollection<S> // users: %4, %6, %7
copy_addr %2 to [initialization] %3#1 : $*LazyForwardCollection<S> // id: %4
// function_ref Swift.LazyForwardCollection.subscript.getter (A.Index) -> A.Generator.Element
%5 = function_ref Swift.LazyForwardCollection.subscript.getter (A.Index) -> A.Generator.Element : $@cc(method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @in LazyForwardCollection<τ_0_0>) -> () // user: %6
%6 = apply %5<S, S.Generator, S.Generator.Element, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, S._Element>(%0, %1, %3#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @in LazyForwardCollection<τ_0_0>) -> () // user: %8
dealloc_stack %3#0 : $*@local_storage LazyForwardCollection<S> // id: %7
return %6 : $() // id: %8
}
// protocol witness for Swift.CollectionType.~> infix <A : Swift.CollectionType>(Swift.CollectionType.Self.Type)(Swift.CollectionType.Self, (Swift._CountElements, ())) -> Swift.CollectionType.Self.Index.Distance in conformance Swift.LazyForwardCollection : Swift.CollectionType
sil public_external protocol witness for Swift.CollectionType.~> infix <A : Swift.CollectionType>(Swift.CollectionType.Self.Type)(Swift.CollectionType.Self, (Swift._CountElements, ())) -> Swift.CollectionType.Self.Index.Distance in conformance Swift.LazyForwardCollection : Swift.CollectionType : $@cc(witness_method) @thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out LazyForwardCollection<S>.Index.Distance, @in LazyForwardCollection<S>, _CountElements, @thick LazyForwardCollection<S>.Type) -> () {
bb0(%0 : $*S.Index.Distance, %1 : $*LazyForwardCollection<S>, %2 : $_CountElements, %3 : $@thick LazyForwardCollection<S>.Type):
// function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance
%4 = function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0, _CountElements) -> () // user: %5
%5 = apply %4<LazyForwardCollection<S>, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, S.Generator.Element>(%0, %1, %2) : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0, _CountElements) -> () // user: %6
return %5 : $() // id: %6
}
// Swift.LazyForwardCollection.subscript.getter (A.Index) -> A.Generator.Element
sil public_external Swift.LazyForwardCollection.subscript.getter (A.Index) -> A.Generator.Element : $@cc(method) @thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out S.Generator.Element, @in S.Index, @in LazyForwardCollection<S>) -> () {
bb0(%0 : $*S.Generator.Element, %1 : $*S.Index, %2 : $*LazyForwardCollection<S>):
%3 = struct_element_addr %2 : $*LazyForwardCollection<S>, #LazyForwardCollection._base // user: %7
%4 = alloc_stack $S.Index // users: %5, %7, %8
copy_addr %1 to [initialization] %4#1 : $*S.Index // id: %5
%6 = witness_method $S, #CollectionType.subscript!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @inout τ_0_0) -> () // user: %7
%7 = apply %6<S, S.Generator, S.Generator.Element, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, S._Element>(%0, %4#1, %3) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @inout τ_0_0) -> ()
dealloc_stack %4#0 : $*@local_storage S.Index // id: %8
destroy_addr %2 : $*LazyForwardCollection<S> // id: %9
destroy_addr %1 : $*S.Index // id: %10
%11 = tuple () // user: %12
return %11 : $() // id: %12
}
// Swift.LazyForwardCollection.startIndex.getter : A.Index
sil public_external Swift.LazyForwardCollection.startIndex.getter : A.Index : $@cc(method) @thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out S.Index, @in LazyForwardCollection<S>) -> () {
bb0(%0 : $*S.Index, %1 : $*LazyForwardCollection<S>):
%2 = struct_element_addr %1 : $*LazyForwardCollection<S>, #LazyForwardCollection._base // user: %4
%3 = witness_method $S, #_CollectionType.startIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %4
%4 = apply %3<S, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, S._Element>(%0, %2) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
destroy_addr %1 : $*LazyForwardCollection<S> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// Swift.LazyForwardCollection.endIndex.getter : A.Index
sil public_external Swift.LazyForwardCollection.endIndex.getter : A.Index : $@cc(method) @thin <S where S : CollectionType, S.Generator : GeneratorType, S.Index : ForwardIndexType, S.Index.Distance : _SignedIntegerType, S.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out S.Index, @in LazyForwardCollection<S>) -> () {
bb0(%0 : $*S.Index, %1 : $*LazyForwardCollection<S>):
%2 = struct_element_addr %1 : $*LazyForwardCollection<S>, #LazyForwardCollection._base // user: %4
%3 = witness_method $S, #_CollectionType.endIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %4
%4 = apply %3<S, S.Index, S.Index.Distance, S.Index.Distance.IntegerLiteralType, S.Index._DisabledRangeIndex, S._Element>(%0, %2) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
destroy_addr %1 : $*LazyForwardCollection<S> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// protocol witness for Swift.Equatable.== infix <A : Swift.Equatable>(Swift.Equatable.Self.Type)(Swift.Equatable.Self, Swift.Equatable.Self) -> Swift.Bool in conformance Swift.Int : Swift.Equatable
sil public_external protocol witness for Swift.Equatable.== infix <A : Swift.Equatable>(Swift.Equatable.Self.Type)(Swift.Equatable.Self, Swift.Equatable.Self) -> Swift.Bool in conformance Swift.Int : Swift.Equatable : $@cc(witness_method) @thin (@in Int, @in Int, @thick Int.Type) -> Bool {
bb0(%0 : $*Int, %1 : $*Int, %2 : $@thick Int.Type):
%3 = struct_element_addr %0 : $*Int, #Int.value // user: %4
%4 = load %3 : $*Builtin.Word // user: %8
%5 = struct_element_addr %1 : $*Int, #Int.value // user: %6
%6 = load %5 : $*Builtin.Word // user: %8
%7 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %8
%8 = apply %7(%4, %6) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %9
%9 = struct $Bool (%8 : $Builtin.Int1) // user: %10
return %9 : $Bool // id: %10
}
// protocol witness for Swift._Incrementable.successor <A : Swift._Incrementable>(inout Swift._Incrementable.Self)() -> Swift._Incrementable.Self in conformance Swift.Int : Swift._Incrementable
sil public_external protocol witness for Swift._Incrementable.successor <A : Swift._Incrementable>(inout Swift._Incrementable.Self)() -> Swift._Incrementable.Self in conformance Swift.Int : Swift._Incrementable : $@cc(witness_method) @thin (@out Int, @inout Int) -> () {
bb0(%0 : $*Int, %1 : $*Int):
%2 = struct_element_addr %1 : $*Int, #Int.value // user: %3
%3 = load %2 : $*Builtin.Word // user: %7
%4 = integer_literal $Builtin.Word, 1 // user: %7
%5 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %7
%6 = integer_literal $Builtin.Int1, 0 // user: %7
%7 = apply %5(%3, %4, %6) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %8
%8 = tuple_extract %7 : $(Builtin.Word, Builtin.Int1), 0 // user: %9
%9 = struct $Int (%8 : $Builtin.Word) // user: %10
store %9 to %0 : $*Int // id: %10
%11 = tuple () // user: %12
return %11 : $() // id: %12
}
// protocol witness for Swift.SequenceType.generate <A : Swift.SequenceType>(inout Swift.SequenceType.Self)() -> Swift.SequenceType.Self.Generator in conformance Swift.Array : Swift.SequenceType
sil public_external protocol witness for Swift.SequenceType.generate <A : Swift.SequenceType>(inout Swift.SequenceType.Self)() -> Swift.SequenceType.Self.Generator in conformance Swift.Array : Swift.SequenceType : $@cc(witness_method) @thin <T> (@out Array<T>.Generator, @inout Array<T>) -> () {
bb0(%0 : $*IndexingGenerator<Array<T>>, %1 : $*Array<T>):
%2 = load %1 : $*Array<T> // users: %3, %7
%3 = struct_extract %2 : $Array<T>, #Array._buffer // user: %4
%4 = struct_extract %3 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %6
// function_ref Swift.Array.generate <A>(Swift.Array<A>)() -> Swift.IndexingGenerator<Swift.Array<A>>
%5 = function_ref Swift.Array.generate <A>([A])() -> Swift.IndexingGenerator<[A]> : $@cc(method) @thin <τ_0_0> (@owned Array<τ_0_0>) -> @owned IndexingGenerator<Array<τ_0_0>> // user: %7
retain_value %4 : $Optional<Builtin.NativeObject> // id: %6
%7 = apply %5<T>(%2) : $@cc(method) @thin <τ_0_0> (@owned Array<τ_0_0>) -> @owned IndexingGenerator<Array<τ_0_0>> // user: %8
store %7 to %0 : $*IndexingGenerator<Array<T>> // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)(Swift.SequenceType.Self, (Swift._UnderestimateCount, ())) -> Swift.Int in conformance Swift.Array : Swift.SequenceType
sil public_external protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)(Swift.SequenceType.Self, (Swift._UnderestimateCount, ())) -> Swift.Int in conformance Swift.Array : Swift.SequenceType : $@cc(witness_method) @thin <T> (@in Array<T>, _UnderestimateCount, @thick Array<T>.Type) -> Int {
bb0(%0 : $*Array<T>, %1 : $_UnderestimateCount, %2 : $@thick Array<T>.Type):
%3 = load %0 : $*Array<T> // user: %5
%4 = alloc_stack $Array<T> // users: %5, %7, %8
store %3 to %4#1 : $*Array<T> // id: %5
// function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._UnderestimateCount, ())) -> Swift.Int
%6 = function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._UnderestimateCount, ())) -> Swift.Int : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@in τ_0_0, _UnderestimateCount) -> Int // user: %7
%7 = apply %6<[T], Int, Int, Int, Int, T>(%4#1, %1) : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@in τ_0_0, _UnderestimateCount) -> Int // user: %9
dealloc_stack %4#0 : $*@local_storage Array<T> // id: %8
return %7 : $Int // id: %9
}
// protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)<C>(Swift.SequenceType.Self, (Swift._PreprocessingPass, (Swift.SequenceType.Self) -> C)) -> Swift.Optional<C> in conformance Swift.Array : Swift.SequenceType
sil public_external protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)<C>(Swift.SequenceType.Self, (Swift._PreprocessingPass, (Swift.SequenceType.Self) -> C)) -> C? in conformance Swift.Array : Swift.SequenceType : $@cc(witness_method) @thin <T><R> (@out Optional<R>, @in Array<T>, _PreprocessingPass, @owned @callee_owned (@out R, @in Array<T>) -> (), @thick Array<T>.Type) -> () {
bb0(%0 : $*Optional<R>, %1 : $*Array<T>, %2 : $_PreprocessingPass, %3 : $@callee_owned (@out R, @in Array<T>) -> (), %4 : $@thick Array<T>.Type):
%5 = load %1 : $*Array<T> // user: %9
// function_ref reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@in Swift.Array<T_0_0>) -> (@out T_1_0) to @callee_owned (@owned Swift.Array<T_0_0>) -> (@out T_1_0)
%6 = function_ref reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@in [T_0_0]) -> (@out T_1_0) to @callee_owned (@owned [T_0_0]) -> (@out T_1_0) : $@thin <τ_0_0><τ_1_0> (@out τ_1_0, @owned Array<τ_0_0>, @owned @callee_owned (@out τ_1_0, @in Array<τ_0_0>) -> ()) -> () // user: %7
%7 = partial_apply %6<T, R>(%3) : $@thin <τ_0_0><τ_1_0> (@out τ_1_0, @owned Array<τ_0_0>, @owned @callee_owned (@out τ_1_0, @in Array<τ_0_0>) -> ()) -> () // user: %11
%8 = alloc_stack $Array<T> // users: %9, %13, %14
store %5 to %8#1 : $*Array<T> // id: %9
// function_ref reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@owned Swift.Array<T_0_0>) -> (@out T_1_0) to @callee_owned (@in Swift.Array<T_0_0>) -> (@out T_1_0)
%10 = function_ref reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@owned [T_0_0]) -> (@out T_1_0) to @callee_owned (@in [T_0_0]) -> (@out T_1_0) : $@thin <τ_0_0><τ_1_0> (@out τ_1_0, @in Array<τ_0_0>, @owned @callee_owned (@out τ_1_0, @owned Array<τ_0_0>) -> ()) -> () // user: %11
%11 = partial_apply %10<T, R>(%7) : $@thin <τ_0_0><τ_1_0> (@out τ_1_0, @in Array<τ_0_0>, @owned @callee_owned (@out τ_1_0, @owned Array<τ_0_0>) -> ()) -> () // user: %13
// function_ref Swift.~> infix <A : Swift._CollectionType, B>(A, (Swift._PreprocessingPass, (A) -> B)) -> Swift.Optional<B>
%12 = function_ref Swift.~> infix <A : Swift._CollectionType, B>(A, (Swift._PreprocessingPass, (A) -> B)) -> B? : $@thin <τ_0_0, τ_0_1 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_1>, @in τ_0_0, _PreprocessingPass, @owned @callee_owned (@out τ_0_1, @in τ_0_0) -> ()) -> () // user: %13
%13 = apply %12<[T], R, Int, Int, Int, Int, T>(%0, %8#1, %2, %11) : $@thin <τ_0_0, τ_0_1 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_1>, @in τ_0_0, _PreprocessingPass, @owned @callee_owned (@out τ_0_1, @in τ_0_0) -> ()) -> () // user: %15
dealloc_stack %8#0 : $*@local_storage Array<T> // id: %14
return %13 : $() // id: %15
}
// protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)(Swift.SequenceType.Self, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<Swift.SequenceType.Self.Generator.Element> in conformance Swift.Array : Swift.SequenceType
sil public_external protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)(Swift.SequenceType.Self, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<Swift.SequenceType.Self.Generator.Element> in conformance Swift.Array : Swift.SequenceType : $@cc(witness_method) @thin <T> (@in Array<T>, _CopyToNativeArrayBuffer, @thick Array<T>.Type) -> @owned _ContiguousArrayBuffer<Array<T>.Generator.Element> {
bb0(%0 : $*Array<T>, %1 : $_CopyToNativeArrayBuffer, %2 : $@thick Array<T>.Type):
%3 = load %0 : $*Array<T> // user: %5
%4 = alloc_stack $Array<T> // users: %5, %7, %8
store %3 to %4#1 : $*Array<T> // id: %5
// function_ref Swift.~> infix <A : Swift.CollectionType>(A, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<A._Element>
%6 = function_ref Swift.~> infix <A : Swift.CollectionType>(A, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<A._Element> : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, τ_0_0.Generator.Element == τ_0_0._Element> (@in τ_0_0, _CopyToNativeArrayBuffer) -> @owned _ContiguousArrayBuffer<τ_0_0.Generator.Element> // user: %7
%7 = apply %6<[T], IndexingGenerator<Array<T>>, T, Int, Int, Int, Int>(%4#1, %1) : $@thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, τ_0_0.Generator.Element == τ_0_0._Element> (@in τ_0_0, _CopyToNativeArrayBuffer) -> @owned _ContiguousArrayBuffer<τ_0_0.Generator.Element> // user: %9
dealloc_stack %4#0 : $*@local_storage Array<T> // id: %8
return %7 : $_ContiguousArrayBuffer<T> // id: %9
}
// Swift.Array.generate <A>(Swift.Array<A>)() -> Swift.IndexingGenerator<Swift.Array<A>>
sil public_external Swift.Array.generate <A>([A])() -> Swift.IndexingGenerator<[A]> : $@cc(method) @thin <T> (@owned Array<T>) -> @owned IndexingGenerator<Array<T>> {
bb0(%0 : $Array<T>):
// function_ref Swift.IndexingGenerator.init <A : Swift._CollectionType>(Swift.IndexingGenerator<A>.Type)(A) -> Swift.IndexingGenerator<A>
%1 = function_ref Swift.IndexingGenerator.init <A : Swift._CollectionType>(Swift.IndexingGenerator<A>.Type)(A) -> Swift.IndexingGenerator<A> : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out IndexingGenerator<τ_0_0>, @in τ_0_0, @thin IndexingGenerator<τ_0_0>.Type) -> () // user: %6
%2 = metatype $@thin IndexingGenerator<Array<T>>.Type // user: %6
%3 = alloc_stack $Array<T> // users: %4, %6, %9
store %0 to %3#1 : $*Array<T> // id: %4
%5 = alloc_stack $IndexingGenerator<Array<T>> // users: %6, %7, %8
%6 = apply %1<[T], Int, Int, Int, Int, T>(%5#1, %3#1, %2) : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out IndexingGenerator<τ_0_0>, @in τ_0_0, @thin IndexingGenerator<τ_0_0>.Type) -> ()
%7 = load %5#1 : $*IndexingGenerator<Array<T>> // user: %10
dealloc_stack %5#0 : $*@local_storage IndexingGenerator<Array<T>> // id: %8
dealloc_stack %3#0 : $*@local_storage Array<T> // id: %9
return %7 : $IndexingGenerator<Array<T>> // id: %10
}
// Swift.IndexingGenerator.init <A : Swift._CollectionType>(Swift.IndexingGenerator<A>.Type)(A) -> Swift.IndexingGenerator<A>
sil public_external Swift.IndexingGenerator.init <A : Swift._CollectionType>(Swift.IndexingGenerator<A>.Type)(A) -> Swift.IndexingGenerator<A> : $@thin <C where C : _CollectionType, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out IndexingGenerator<C>, @in C, @thin IndexingGenerator<C>.Type) -> () {
bb0(%0 : $*IndexingGenerator<C>, %1 : $*C, %2 : $@thin IndexingGenerator<C>.Type):
%3 = alloc_stack $IndexingGenerator<C> // users: %6, %12, %16, %18
%4 = alloc_stack $C // users: %5, %7, %8
copy_addr %1 to [initialization] %4#1 : $*C // id: %5
%6 = struct_element_addr %3#1 : $*IndexingGenerator<C>, #IndexingGenerator._elements // user: %7
copy_addr [take] %4#1 to [initialization] %6 : $*C // id: %7
dealloc_stack %4#0 : $*@local_storage C // id: %8
%9 = witness_method $C, #_CollectionType.startIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %11
%10 = alloc_stack $C.Index // users: %11, %13, %14
%11 = apply %9<C, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%10#1, %1) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
%12 = struct_element_addr %3#1 : $*IndexingGenerator<C>, #IndexingGenerator._position // user: %13
copy_addr [take] %10#1 to [initialization] %12 : $*C.Index // id: %13
dealloc_stack %10#0 : $*@local_storage C.Index // id: %14
destroy_addr %1 : $*C // id: %15
copy_addr [take] %3#1 to [initialization] %0 : $*IndexingGenerator<C> // id: %16
%17 = tuple () // user: %19
dealloc_stack %3#0 : $*@local_storage IndexingGenerator<C> // id: %18
return %17 : $() // id: %19
}
// protocol witness for Swift.GeneratorType.next <A : Swift.GeneratorType>(inout Swift.GeneratorType.Self)() -> Swift.Optional<Swift.GeneratorType.Self.Element> in conformance Swift.IndexingGenerator : Swift.GeneratorType
sil public_external protocol witness for Swift.GeneratorType.next <A : Swift.GeneratorType>(inout Swift.GeneratorType.Self)() -> Swift.GeneratorType.Self.Element? in conformance Swift.IndexingGenerator : Swift.GeneratorType : $@cc(witness_method) @thin <C where C : _CollectionType, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<IndexingGenerator<C>.Element>, @inout IndexingGenerator<C>) -> () {
bb0(%0 : $*Optional<C._Element>, %1 : $*IndexingGenerator<C>):
// function_ref Swift.IndexingGenerator.next <A : Swift._CollectionType>(inout Swift.IndexingGenerator<A>)() -> Swift.Optional<A._Element>
%2 = function_ref Swift.IndexingGenerator.next <A : Swift._CollectionType>(inout Swift.IndexingGenerator<A>)() -> A._Element? : $@cc(method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_0._Element>, @inout IndexingGenerator<τ_0_0>) -> () // user: %3
%3 = apply %2<C, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%0, %1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_0._Element>, @inout IndexingGenerator<τ_0_0>) -> () // user: %4
return %3 : $() // id: %4
}
// Swift.IndexingGenerator.next <A : Swift._CollectionType>(inout Swift.IndexingGenerator<A>)() -> Swift.Optional<A._Element>
sil public_external Swift.IndexingGenerator.next <A : Swift._CollectionType>(inout Swift.IndexingGenerator<A>)() -> A._Element? : $@cc(method) @thin <C where C : _CollectionType, C.Index : ForwardIndexType, C.Index.Distance : _SignedIntegerType, C.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<C._Element>, @inout IndexingGenerator<C>) -> () {
bb0(%0 : $*Optional<C._Element>, %1 : $*IndexingGenerator<C>):
%2 = metatype $@thick C.Index.Type // user: %11
%3 = witness_method $C.Index, #Equatable."=="!1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : Equatable> (@in τ_0_0, @in τ_0_0, @thick τ_0_0.Type) -> Bool // user: %11
%4 = alloc_stack $C.Index // users: %6, %11, %14
%5 = struct_element_addr %1 : $*IndexingGenerator<C>, #IndexingGenerator._position // users: %6, %25
copy_addr %5 to [initialization] %4#1 : $*C.Index // id: %6
%7 = alloc_stack $C.Index // users: %10, %11, %13
%8 = struct_element_addr %1 : $*IndexingGenerator<C>, #IndexingGenerator._elements // users: %10, %27
%9 = witness_method $C, #_CollectionType.endIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %10
%10 = apply %9<C, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%7#1, %8) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
%11 = apply %3<C.Index>(%4#1, %7#1, %2) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : Equatable> (@in τ_0_0, @in τ_0_0, @thick τ_0_0.Type) -> Bool // user: %12
%12 = struct_extract %11 : $Bool, #Bool.value // user: %15
dealloc_stack %7#0 : $*@local_storage C.Index // id: %13
dealloc_stack %4#0 : $*@local_storage C.Index // id: %14
cond_br %12, bb1, bb2 // id: %15
bb1: // Preds: bb0
// function_ref Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
%16 = function_ref Swift.Optional.None <A>(A?.Type) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %18
%17 = metatype $@thin Optional<C._Element>.Type // user: %18
%18 = apply [transparent] %16<C._Element>(%0, %17) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
br bb3 // id: %19
bb2: // Preds: bb0
// function_ref Swift.Optional.Some <A>(Swift.Optional<A>.Type)(A) -> Swift.Optional<A>
%20 = function_ref Swift.Optional.Some <A>(A?.Type)(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0, @thin Optional<τ_0_0>.Type) -> () // user: %28
%21 = metatype $@thin Optional<C._Element>.Type // user: %28
%22 = alloc_stack $C._Element // users: %27, %28, %30
// function_ref Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A
%23 = function_ref Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A : $@thin <τ_0_0 where τ_0_0 : _Incrementable> (@out τ_0_0, @inout τ_0_0) -> () // user: %25
%24 = alloc_stack $C.Index // users: %25, %27, %29
%25 = apply [transparent] %23<C.Index>(%24#1, %5) : $@thin <τ_0_0 where τ_0_0 : _Incrementable> (@out τ_0_0, @inout τ_0_0) -> ()
%26 = witness_method $C, #_CollectionType.subscript!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0._Element, @in τ_0_0.Index, @inout τ_0_0) -> () // user: %27
%27 = apply %26<C, C.Index, C.Index.Distance, C.Index.Distance.IntegerLiteralType, C.Index._DisabledRangeIndex, C._Element>(%22#1, %24#1, %8) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0._Element, @in τ_0_0.Index, @inout τ_0_0) -> ()
%28 = apply [transparent] %20<C._Element>(%0, %22#1, %21) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0, @thin Optional<τ_0_0>.Type) -> ()
dealloc_stack %24#0 : $*@local_storage C.Index // id: %29
dealloc_stack %22#0 : $*@local_storage C._Element // id: %30
br bb3 // id: %31
bb3: // Preds: bb1 bb2
%32 = tuple () // user: %33
return %32 : $() // id: %33
}
// Swift.UnsafePointer.value.getter : Builtin.RawPointer
sil public_external [transparent] Swift.UnsafePointer.value.getter : Builtin.RawPointer : $@cc(method) @thin <T> (UnsafePointer<T>) -> Builtin.RawPointer {
bb0(%0 : $UnsafePointer<T>):
%1 = struct_extract %0 : $UnsafePointer<T>, #UnsafePointer.value // user: %2
return %1 : $Builtin.RawPointer // id: %2
}
// Swift.UnsafeBufferPointer.generate <A>(Swift.UnsafeBufferPointer<A>)() -> Swift.UnsafeBufferPointerGenerator<A>
sil public_external Swift.UnsafeBufferPointer.generate <A>(Swift.UnsafeBufferPointer<A>)() -> Swift.UnsafeBufferPointerGenerator<A> : $@cc(method) @thin <T> (UnsafeBufferPointer<T>) -> UnsafeBufferPointerGenerator<T> {
bb0(%0 : $UnsafeBufferPointer<T>):
// function_ref Swift.UnsafeBufferPointerGenerator.init <A>(Swift.UnsafeBufferPointerGenerator<A>.Type)(position : Swift.UnsafePointer<A>, end : Swift.UnsafePointer<A>) -> Swift.UnsafeBufferPointerGenerator<A>
%1 = function_ref Swift.UnsafeBufferPointerGenerator.init <A>(Swift.UnsafeBufferPointerGenerator<A>.Type)(position : Swift.UnsafePointer<A>, end : Swift.UnsafePointer<A>) -> Swift.UnsafeBufferPointerGenerator<A> : $@thin <τ_0_0> (UnsafePointer<τ_0_0>, UnsafePointer<τ_0_0>, @thin UnsafeBufferPointerGenerator<τ_0_0>.Type) -> UnsafeBufferPointerGenerator<τ_0_0> // user: %5
%2 = metatype $@thin UnsafeBufferPointerGenerator<T>.Type // user: %5
%3 = struct_extract %0 : $UnsafeBufferPointer<T>, #UnsafeBufferPointer._position // user: %5
%4 = struct_extract %0 : $UnsafeBufferPointer<T>, #UnsafeBufferPointer._end // user: %5
%5 = apply %1<T>(%3, %4, %2) : $@thin <τ_0_0> (UnsafePointer<τ_0_0>, UnsafePointer<τ_0_0>, @thin UnsafeBufferPointerGenerator<τ_0_0>.Type) -> UnsafeBufferPointerGenerator<τ_0_0> // user: %6
return %5 : $UnsafeBufferPointerGenerator<T> // id: %6
}
// Swift.UnsafeBufferPointerGenerator.init <A>(Swift.UnsafeBufferPointerGenerator<A>.Type)(position : Swift.UnsafePointer<A>, end : Swift.UnsafePointer<A>) -> Swift.UnsafeBufferPointerGenerator<A>
sil public_external Swift.UnsafeBufferPointerGenerator.init <A>(Swift.UnsafeBufferPointerGenerator<A>.Type)(position : Swift.UnsafePointer<A>, end : Swift.UnsafePointer<A>) -> Swift.UnsafeBufferPointerGenerator<A> : $@thin <T> (UnsafePointer<T>, UnsafePointer<T>, @thin UnsafeBufferPointerGenerator<T>.Type) -> UnsafeBufferPointerGenerator<T> {
bb0(%0 : $UnsafePointer<T>, %1 : $UnsafePointer<T>, %2 : $@thin UnsafeBufferPointerGenerator<T>.Type):
%3 = struct $UnsafeBufferPointerGenerator<T> (%0 : $UnsafePointer<T>, %1 : $UnsafePointer<T>) // user: %4
return %3 : $UnsafeBufferPointerGenerator<T> // id: %4
}
// Swift.~> infix <A : Swift._CollectionType>(A, (Swift._UnderestimateCount, ())) -> Swift.Int
sil public_external Swift.~> infix <A : Swift._CollectionType>(A, (Swift._UnderestimateCount, ())) -> Swift.Int : $@thin <T where T : _CollectionType, T.Index : ForwardIndexType, T.Index.Distance : _SignedIntegerType, T.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@in T, _UnderestimateCount) -> Int {
bb0(%0 : $*T, %1 : $_UnderestimateCount):
// function_ref Swift.numericCast <A : Swift._SignedIntegerType, B : Swift._SignedIntegerType>(A) -> B
%2 = function_ref Swift.numericCast <A : Swift._SignedIntegerType, B : Swift._SignedIntegerType>(A) -> B : $@thin <τ_0_0, τ_0_1 where τ_0_0 : _SignedIntegerType, τ_0_1 : _SignedIntegerType, τ_0_0.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, τ_0_1.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_1, @in τ_0_0) -> () // user: %10
%3 = alloc_stack $T.Index.Distance // users: %8, %10, %14
// function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance
%4 = function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0, _CountElements) -> () // user: %8
%5 = alloc_stack $T // users: %6, %8, %13
copy_addr %0 to [initialization] %5#1 : $*T // id: %6
%7 = struct $_CountElements () // user: %8
%8 = apply %4<T, T.Index, T.Index.Distance, T.Index.Distance.IntegerLiteralType, T.Index._DisabledRangeIndex, T._Element>(%3#1, %5#1, %7) : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0, _CountElements) -> ()
%9 = alloc_stack $Int // users: %10, %11, %12
%10 = apply %2<T.Index.Distance, Int, T.Index.Distance.IntegerLiteralType, Int>(%9#1, %3#1) : $@thin <τ_0_0, τ_0_1 where τ_0_0 : _SignedIntegerType, τ_0_1 : _SignedIntegerType, τ_0_0.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, τ_0_1.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_1, @in τ_0_0) -> ()
%11 = load %9#1 : $*Int // user: %16
dealloc_stack %9#0 : $*@local_storage Int // id: %12
dealloc_stack %5#0 : $*@local_storage T // id: %13
dealloc_stack %3#0 : $*@local_storage T.Index.Distance // id: %14
destroy_addr %0 : $*T // id: %15
return %11 : $Int // id: %16
}
// Swift.numericCast <A : Swift._SignedIntegerType, B : Swift._SignedIntegerType>(A) -> B
sil public_external Swift.numericCast <A : Swift._SignedIntegerType, B : Swift._SignedIntegerType>(A) -> B : $@thin <T, U where T : _SignedIntegerType, U : _SignedIntegerType, T.IntegerLiteralType : _BuiltinIntegerLiteralConvertible, U.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out U, @in T) -> () {
bb0(%0 : $*U, %1 : $*T):
%2 = metatype $@thick U.Type // user: %6
%3 = witness_method $U, #_SignedIntegerType.init!allocator.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _SignedIntegerType, τ_0_0.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0, Int64, @thick τ_0_0.Type) -> () // user: %6
%4 = witness_method $T, #_SignedIntegerType.toIntMax!1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _SignedIntegerType, τ_0_0.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@inout τ_0_0) -> Int64 // user: %5
%5 = apply %4<T, T.IntegerLiteralType>(%1) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _SignedIntegerType, τ_0_0.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@inout τ_0_0) -> Int64 // user: %6
%6 = apply %3<U, U.IntegerLiteralType>(%0, %5, %2) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _SignedIntegerType, τ_0_0.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0, Int64, @thick τ_0_0.Type) -> ()
destroy_addr %1 : $*T // id: %7
%8 = tuple () // user: %9
return %8 : $() // id: %9
}
// reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@in Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) to @callee_owned (@unowned Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0)
sil shared_external [transparent] reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@in Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) to @callee_owned (@unowned Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) : $@thin <T><R> (@out R, UnsafeBufferPointer<T>, @owned @callee_owned (@out R, @in UnsafeBufferPointer<T>) -> ()) -> () {
bb0(%0 : $*R, %1 : $UnsafeBufferPointer<T>, %2 : $@callee_owned (@out R, @in UnsafeBufferPointer<T>) -> ()):
%3 = alloc_stack $UnsafeBufferPointer<T> // users: %4, %5, %6
store %1 to %3#1 : $*UnsafeBufferPointer<T> // id: %4
%5 = apply %2(%0, %3#1) : $@callee_owned (@out R, @in UnsafeBufferPointer<T>) -> () // user: %7
dealloc_stack %3#0 : $*@local_storage UnsafeBufferPointer<T> // id: %6
return %5 : $() // id: %7
}
// reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@unowned Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) to @callee_owned (@in Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0)
sil shared_external [transparent] reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@unowned Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) to @callee_owned (@in Swift.UnsafeBufferPointer<T_0_0>) -> (@out T_1_0) : $@thin <T><R> (@out R, @in UnsafeBufferPointer<T>, @owned @callee_owned (@out R, UnsafeBufferPointer<T>) -> ()) -> () {
bb0(%0 : $*R, %1 : $*UnsafeBufferPointer<T>, %2 : $@callee_owned (@out R, UnsafeBufferPointer<T>) -> ()):
%3 = load %1 : $*UnsafeBufferPointer<T> // user: %4
%4 = apply %2(%0, %3) : $@callee_owned (@out R, UnsafeBufferPointer<T>) -> () // user: %5
return %4 : $() // id: %5
}
// Swift.~> infix <A : Swift._CollectionType, B>(A, (Swift._PreprocessingPass, (A) -> B)) -> Swift.Optional<B>
sil public_external Swift.~> infix <A : Swift._CollectionType, B>(A, (Swift._PreprocessingPass, (A) -> B)) -> B? : $@thin <T, R where T : _CollectionType, T.Index : ForwardIndexType, T.Index.Distance : _SignedIntegerType, T.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<R>, @in T, _PreprocessingPass, @owned @callee_owned (@out R, @in T) -> ()) -> () {
bb0(%0 : $*Optional<R>, %1 : $*T, %2 : $_PreprocessingPass, %3 : $@callee_owned (@out R, @in T) -> ()):
%4 = alloc_stack $R // users: %8, %10, %13
%5 = alloc_stack $T // users: %6, %8, %12
copy_addr %1 to [initialization] %5#1 : $*T // id: %6
strong_retain %3 : $@callee_owned (@out R, @in T) -> () // id: %7
%8 = apply %3(%4#1, %5#1) : $@callee_owned (@out R, @in T) -> ()
// function_ref Swift._injectValueIntoOptional <A>(A) -> Swift.Optional<A>
%9 = function_ref Swift._injectValueIntoOptional <A>(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> () // user: %10
%10 = apply [transparent] %9<R>(%0, %4#1) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0) -> ()
strong_release %3 : $@callee_owned (@out R, @in T) -> () // id: %11
dealloc_stack %5#0 : $*@local_storage T // id: %12
dealloc_stack %4#0 : $*@local_storage R // id: %13
destroy_addr %1 : $*T // id: %14
%15 = tuple () // user: %16
return %15 : $() // id: %16
}
// reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@in Swift.Array<T_0_0>) -> (@out T_1_0) to @callee_owned (@owned Swift.Array<T_0_0>) -> (@out T_1_0)
sil shared_external [transparent] reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@in [T_0_0]) -> (@out T_1_0) to @callee_owned (@owned [T_0_0]) -> (@out T_1_0) : $@thin <T><R> (@out R, @owned Array<T>, @owned @callee_owned (@out R, @in Array<T>) -> ()) -> () {
bb0(%0 : $*R, %1 : $Array<T>, %2 : $@callee_owned (@out R, @in Array<T>) -> ()):
%3 = alloc_stack $Array<T> // users: %4, %5, %6
store %1 to %3#1 : $*Array<T> // id: %4
%5 = apply %2(%0, %3#1) : $@callee_owned (@out R, @in Array<T>) -> () // user: %7
dealloc_stack %3#0 : $*@local_storage Array<T> // id: %6
return %5 : $() // id: %7
}
// reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@owned Swift.Array<T_0_0>) -> (@out T_1_0) to @callee_owned (@in Swift.Array<T_0_0>) -> (@out T_1_0)
sil shared_external [transparent] reabstraction thunk helper <T_0_0, T_1_0> from @callee_owned (@owned [T_0_0]) -> (@out T_1_0) to @callee_owned (@in [T_0_0]) -> (@out T_1_0) : $@thin <T><R> (@out R, @in Array<T>, @owned @callee_owned (@out R, @owned Array<T>) -> ()) -> () {
bb0(%0 : $*R, %1 : $*Array<T>, %2 : $@callee_owned (@out R, @owned Array<T>) -> ()):
%3 = load %1 : $*Array<T> // user: %4
%4 = apply %2(%0, %3) : $@callee_owned (@out R, @owned Array<T>) -> () // user: %5
return %4 : $() // id: %5
}
// specialization <Swift.Optional<Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>>, Swift.Optional<Swift._ContiguousArrayStorage<Swift.Int>>> of Swift.unsafeBitCast <A, B>(A, B.Type) -> B
sil shared [transparent] specialization <Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>?, Swift._ContiguousArrayStorage<Swift.Int>?> of Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin (@out Optional<_ContiguousArrayStorage<Int>>, @in Optional<HeapBufferStorage<_ArrayBody, Int>>, @thick Optional<_ContiguousArrayStorage<Int>>.Type) -> () {
bb0(%0 : $*Optional<_ContiguousArrayStorage<Int>>, %1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>>, %2 : $@thick Optional<_ContiguousArrayStorage<Int>>.Type):
%3 = alloc_stack $Optional<HeapBufferStorage<_ArrayBody, Int>> // users: %5, %21, %25, %28
%4 = load %1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %5
store %4 to %3#1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %5
%6 = integer_literal $Builtin.Int1, -1 // user: %17
// function_ref Swift.sizeof <A>(A.Type) -> Swift.Int
%7 = function_ref Swift.sizeof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // users: %9, %11
%8 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %9
%9 = apply [transparent] %7<HeapBufferStorage<_ArrayBody, Int>?>(%8) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %13
%10 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %11
%11 = apply [transparent] %7<_ContiguousArrayStorage<Int>?>(%10) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %14
%12 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %15
%13 = struct_extract %9 : $Int, #Int.value // user: %15
%14 = struct_extract %11 : $Int, #Int.value // user: %15
%15 = apply %12(%13, %14) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %17
%16 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
%17 = apply %16(%15, %6) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %18
cond_fail %17 : $Builtin.Int1 // id: %18
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A>
%19 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %22
%20 = metatype $@thin UnsafeMutablePointer<Optional<_ContiguousArrayStorage<Int>>>.Type // user: %22
%21 = address_to_pointer %3#1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.RawPointer // user: %22
%22 = apply [transparent] %19<_ContiguousArrayStorage<Int>?>(%21, %20) : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %24
// function_ref Swift.UnsafeMutablePointer.memory.getter : A
%23 = function_ref Swift.UnsafeMutablePointer.memory.getter : A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> () // user: %24
%24 = apply [transparent] %23<_ContiguousArrayStorage<Int>?>(%0, %22) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> ()
%25 = load %3#1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %26
release_value %25 : $Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %26
%27 = tuple () // user: %29
dealloc_stack %3#0 : $*@local_storage Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %28
return %27 : $() // id: %29
}
// specialization <Swift.Int> of protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)(Swift.SequenceType.Self, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<Swift.SequenceType.Self.Generator.Element> in conformance Swift.UnsafeBufferPointer : Swift.SequenceType
sil shared specialization <Swift.Int> of protocol witness for Swift.SequenceType.~> infix <A : Swift.SequenceType>(Swift.SequenceType.Self.Type)(Swift.SequenceType.Self, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<Swift.SequenceType.Self.Generator.Element> in conformance Swift.UnsafeBufferPointer : Swift.SequenceType : $@cc(witness_method) @thin (@in UnsafeBufferPointer<Int>, _CopyToNativeArrayBuffer, @thick UnsafeBufferPointer<Int>.Type) -> @owned _ContiguousArrayBuffer<Int> {
bb0(%0 : $*UnsafeBufferPointer<Int>, %1 : $_CopyToNativeArrayBuffer, %2 : $@thick UnsafeBufferPointer<Int>.Type):
%3 = struct_element_addr %0 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._position // user: %4
%4 = struct_element_addr %3 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %5
%5 = load %4 : $*Builtin.RawPointer // users: %13, %185
%6 = struct_element_addr %0 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._end // user: %7
%7 = struct_element_addr %6 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %8
%8 = load %7 : $*Builtin.RawPointer // user: %12
%9 = integer_literal $Builtin.Word, 0 // users: %19, %31, %41, %42, %133, %134, %161, %170, %173, %176, %176
%10 = builtin_function_ref "sub_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %14
%11 = builtin_function_ref "ptrtoint_Word" : $@thin (Builtin.RawPointer) -> Builtin.Word // users: %12, %13
%12 = apply %11(%8) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %14
%13 = apply %11(%5) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %14
%14 = apply %10(%12, %13) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %22, %29
%15 = metatype $@thick Int.Type // users: %17, %72
%16 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %17, %128
%17 = apply %16<Int>(%15) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %19, %24, %29, %84, %148, %182
%18 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %19, %22, %24, %31, %111, %122, %145, %173, %190
%19 = apply %18(%17, %9) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %20
cond_fail %19 : $Builtin.Int1 // id: %20
%21 = integer_literal $Builtin.Word, -9223372036854775808 // users: %22, %145
%22 = apply %18(%14, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %26
%23 = integer_literal $Builtin.Word, -1 // users: %24, %64, %81
%24 = apply %18(%17, %23) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %26, %146
%25 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %26, %146
%26 = apply %25(%22, %24) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %27
cond_fail %26 : $Builtin.Int1 // id: %27
%28 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %29, %148
%29 = apply %28(%14, %17) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %31, %37, %41, %43, %170, %173, %190
%30 = integer_literal $Builtin.Int1, 0 // users: %59, %61, %77, %79, %94, %129, %166, %180, %183
%31 = apply %18(%29, %9) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %32
cond_br %31, bb1, bb2 // id: %32
bb1: // Preds: bb0
%33 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.None!enumelt // user: %34
%34 = struct $HeapBuffer<_ArrayBody, Int> (%33 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // user: %35
%35 = struct $_ContiguousArrayBuffer<Int> (%34 : $HeapBuffer<_ArrayBody, Int>) // user: %36
br bb15(%35 : $_ContiguousArrayBuffer<Int>) // id: %36
bb2: // Preds: bb0
%37 = struct $Int (%29 : $Builtin.Word) // user: %163
%38 = metatype $@thick _ContiguousArrayStorage<Int>.Type // user: %39
%39 = upcast %38 : $@thick _ContiguousArrayStorage<Int>.Type to $@thick AnyObject.Type // user: %106
%40 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %41, %99, %101, %193
%41 = apply %40(%9, %29) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %42
cond_br %41, bb3, bb4(%9 : $Builtin.Word) // id: %42
bb3: // Preds: bb2
br bb4(%29 : $Builtin.Word) // id: %43
bb4(%44 : $Builtin.Word): // Preds: bb2 bb3
%45 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %47, %67, %108, %110, %119, %121
%46 = metatype $@thick HeapObject.Type // users: %47, %93
%47 = apply %45<HeapObject>(%46) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %53
%48 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %50, %72, %93
%49 = metatype $@thick _ArrayBody.Type // users: %50, %67
%50 = apply %48<_ArrayBody>(%49) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %53, %61
%51 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %53, %68, %73, %88, %180, %183
%52 = integer_literal $Builtin.Int1, -1 // users: %53, %68, %73, %84, %88, %113, %123, %141, %171
%53 = apply %51(%47, %50, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %54, %55
%54 = tuple_extract %53 : $(Builtin.Word, Builtin.Int1), 0 // user: %59
%55 = tuple_extract %53 : $(Builtin.Word, Builtin.Int1), 1 // user: %56
cond_fail %55 : $Builtin.Int1 // id: %56
%57 = integer_literal $Builtin.Word, 1 // users: %59, %61, %77, %79, %94, %159, %180, %183
%58 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %59, %61, %77, %79, %94, %141
%59 = apply %58(%54, %57, %30) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %60
%60 = tuple_extract %59 : $(Builtin.Word, Builtin.Int1), 0 // user: %66
%61 = apply %58(%50, %57, %30) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %62
%62 = tuple_extract %61 : $(Builtin.Word, Builtin.Int1), 0 // users: %64, %97, %99, %101
%63 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %64, %81
%64 = apply %63(%62, %23) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %66
%65 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %66, %82
%66 = apply %65(%60, %64) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %68, %129
%67 = apply %45<_ArrayBody>(%49) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %68
%68 = apply %51(%66, %67, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %69, %70
%69 = tuple_extract %68 : $(Builtin.Word, Builtin.Int1), 0 // user: %73
%70 = tuple_extract %68 : $(Builtin.Word, Builtin.Int1), 1 // user: %71
cond_fail %70 : $Builtin.Int1 // id: %71
%72 = apply %48<Int>(%15) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %73, %79
%73 = apply %51(%69, %72, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %74, %75
%74 = tuple_extract %73 : $(Builtin.Word, Builtin.Int1), 0 // user: %77
%75 = tuple_extract %73 : $(Builtin.Word, Builtin.Int1), 1 // user: %76
cond_fail %75 : $Builtin.Int1 // id: %76
%77 = apply %58(%74, %57, %30) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %78
%78 = tuple_extract %77 : $(Builtin.Word, Builtin.Int1), 0 // user: %82
%79 = apply %58(%72, %57, %30) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %80
%80 = tuple_extract %79 : $(Builtin.Word, Builtin.Int1), 0 // users: %81, %98, %101, %193
%81 = apply %63(%80, %23) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %82
%82 = apply %65(%78, %81) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %88, %141, %166
%83 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %84, %129, %166
%84 = apply %83(%44, %17, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %85, %86
%85 = tuple_extract %84 : $(Builtin.Word, Builtin.Int1), 0 // user: %88
%86 = tuple_extract %84 : $(Builtin.Word, Builtin.Int1), 1 // user: %87
cond_fail %86 : $Builtin.Int1 // id: %87
%88 = apply %51(%82, %85, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %89, %90
%89 = tuple_extract %88 : $(Builtin.Word, Builtin.Int1), 0 // user: %92
%90 = tuple_extract %88 : $(Builtin.Word, Builtin.Int1), 1 // user: %91
cond_fail %90 : $Builtin.Int1 // id: %91
%92 = struct $Int (%89 : $Builtin.Word) // user: %106
%93 = apply %48<HeapObject>(%46) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %94
%94 = apply %58(%93, %57, %30) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %95
%95 = tuple_extract %94 : $(Builtin.Word, Builtin.Int1), 0 // users: %96, %99, %193
%96 = struct $Int (%95 : $Builtin.Word) // user: %196
%97 = struct $Int (%62 : $Builtin.Word) // user: %192
%98 = struct $Int (%80 : $Builtin.Word) // users: %103, %195
%99 = apply %40(%95, %62) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %100
cond_br %99, bb5, bb12 // id: %100
bb5: // Preds: bb4
%101 = apply %40(%62, %80) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %102
cond_br %101, bb6, bb11 // id: %102
bb6: // Preds: bb5
br bb7(%98 : $Int) // id: %103
bb7(%104 : $Int): // Preds: bb6 bb11 bb13 bb14
// function_ref swift_bufferAllocate
%105 = function_ref @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %106
%106 = apply %105(%39, %92, %104) : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %115
%107 = metatype $@thick AnyObject.Protocol // user: %108
%108 = apply %45<AnyObject>(%107) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %111
%109 = metatype $@thick HeapBufferStorage<_ArrayBody, Int>.Type // user: %110
%110 = apply %45<HeapBufferStorage<_ArrayBody, Int>>(%109) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %111
%111 = apply %18(%108, %110) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %113
%112 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %113, %123, %171
%113 = apply %112(%111, %52) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %114
cond_fail %113 : $Builtin.Int1 // id: %114
%115 = unchecked_ref_bit_cast %106 : $AnyObject to $HeapBufferStorage<_ArrayBody, Int> // user: %116
%116 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1, %115 : $HeapBufferStorage<_ArrayBody, Int> // users: %117, %125
%117 = struct $HeapBuffer<_ArrayBody, Int> (%116 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // user: %165
%118 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %119
%119 = apply %45<HeapBufferStorage<_ArrayBody, Int>?>(%118) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %122
%120 = metatype $@thick Builtin.NativeObject.Type // user: %121
%121 = apply %45<Builtin.NativeObject>(%120) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %122
%122 = apply %18(%119, %121) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %123
%123 = apply %112(%122, %52) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %124
cond_fail %123 : $Builtin.Int1 // id: %124
%125 = unchecked_ref_bit_cast %116 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %126
%126 = ref_to_raw_pointer %125 : $Builtin.NativeObject to $Builtin.RawPointer // users: %131, %138, %168
%127 = metatype $@thick Int8.Type // user: %128
%128 = apply %16<Int8>(%127) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %129, %166
%129 = apply %83(%66, %128, %30) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %130
%130 = tuple_extract %129 : $(Builtin.Word, Builtin.Int1), 0 // user: %131
%131 = index_raw_pointer %126 : $Builtin.RawPointer, %130 : $Builtin.Word // user: %132
%132 = pointer_to_address %131 : $Builtin.RawPointer to $*_ArrayBody // users: %136, %164
%133 = struct $Int (%9 : $Builtin.Word) // user: %135
%134 = struct $UInt (%9 : $Builtin.Word) // user: %135
%135 = struct $_ArrayBody (%133 : $Int, %134 : $UInt) // user: %136
store %135 to %132 : $*_ArrayBody // id: %136
// function_ref malloc_size
%137 = function_ref @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %139
%138 = struct $UnsafePointer<()> (%126 : $Builtin.RawPointer) // user: %139
%139 = apply %137(%138) : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %140
%140 = struct_extract %139 : $UInt, #UInt.value // user: %141
%141 = apply %58(%140, %82, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %142, %143
%142 = tuple_extract %141 : $(Builtin.Word, Builtin.Int1), 0 // users: %145, %148
%143 = tuple_extract %141 : $(Builtin.Word, Builtin.Int1), 1 // user: %144
cond_fail %143 : $Builtin.Int1 // id: %144
%145 = apply %18(%142, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %146
%146 = apply %25(%145, %24) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %147
cond_fail %146 : $Builtin.Int1 // id: %147
%148 = apply %28(%142, %17) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %150
%149 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // user: %150
%150 = apply %149(%148) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %152
%151 = builtin_function_ref "s_to_u_checked_conversion_Int64" : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // user: %152
%152 = apply %151(%150) : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // users: %153, %154
%153 = tuple_extract %152 : $(Builtin.Int64, Builtin.Int1), 0 // user: %157
%154 = tuple_extract %152 : $(Builtin.Int64, Builtin.Int1), 1 // user: %155
cond_fail %154 : $Builtin.Int1 // id: %155
%156 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %157
%157 = apply %156(%153) : $@thin (Builtin.Int64) -> Builtin.Word // user: %159
%158 = builtin_function_ref "shl_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %159
%159 = apply %158(%157, %57) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %161
%160 = builtin_function_ref "or_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %161
%161 = apply %160(%159, %9) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %162
%162 = struct $UInt (%161 : $Builtin.Word) // user: %163
%163 = struct $_ArrayBody (%37 : $Int, %162 : $UInt) // user: %164
store %163 to %132 : $*_ArrayBody // id: %164
%165 = struct $_ContiguousArrayBuffer<Int> (%117 : $HeapBuffer<_ArrayBody, Int>) // user: %175
%166 = apply %83(%82, %128, %30) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %167
%167 = tuple_extract %166 : $(Builtin.Word, Builtin.Int1), 0 // user: %168
%168 = index_raw_pointer %126 : $Builtin.RawPointer, %167 : $Builtin.Word // user: %176
%169 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %170
%170 = apply %169(%9, %29) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %171
%171 = apply %112(%170, %52) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %172
cond_fail %171 : $Builtin.Int1 // id: %172
%173 = apply %18(%9, %29) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %174
cond_br %173, bb8, bb9 // id: %174
bb8: // Preds: bb7 bb10
br bb15(%165 : $_ContiguousArrayBuffer<Int>) // id: %175
bb9: // Preds: bb7
br bb10(%9 : $Builtin.Word, %168 : $Builtin.RawPointer, %9 : $Builtin.Word) // id: %176
bb10(%177 : $Builtin.Word, %178 : $Builtin.RawPointer, %179 : $Builtin.Word): // Preds: bb9 bb10
%180 = apply %51(%177, %57, %30) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %181
%181 = tuple_extract %180 : $(Builtin.Word, Builtin.Int1), 0 // users: %190, %191
%182 = index_raw_pointer %178 : $Builtin.RawPointer, %17 : $Builtin.Word // user: %191
%183 = apply %51(%179, %57, %30) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %184
%184 = tuple_extract %183 : $(Builtin.Word, Builtin.Int1), 0 // user: %191
%185 = pointer_to_address %5 : $Builtin.RawPointer to $*Int // user: %186
%186 = index_addr %185 : $*Int, %179 : $Builtin.Word // user: %187
%187 = load %186 : $*Int // user: %189
%188 = pointer_to_address %178 : $Builtin.RawPointer to $*Int // user: %189
store %187 to %188 : $*Int // id: %189
%190 = apply %18(%181, %29) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %191
cond_br %190, bb8, bb10(%181 : $Builtin.Word, %182 : $Builtin.RawPointer, %184 : $Builtin.Word) // id: %191
bb11: // Preds: bb5
br bb7(%97 : $Int) // id: %192
bb12: // Preds: bb4
%193 = apply %40(%95, %80) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %194
cond_br %193, bb13, bb14 // id: %194
bb13: // Preds: bb12
br bb7(%98 : $Int) // id: %195
bb14: // Preds: bb12
br bb7(%96 : $Int) // id: %196
bb15(%197 : $_ContiguousArrayBuffer<Int>): // Preds: bb1 bb8
return %197 : $_ContiguousArrayBuffer<Int> // id: %198
}
// specialization <Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift.CollectionType, Swift.UnsafeBufferPointerGenerator<Swift.Int> with Swift.UnsafeBufferPointerGenerator<Swift.Int> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.~> infix <A : Swift.CollectionType>(A, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<A._Element>
sil shared specialization <Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift.CollectionType, Swift.UnsafeBufferPointerGenerator<Swift.Int> with Swift.UnsafeBufferPointerGenerator<Swift.Int> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.~> infix <A : Swift.CollectionType>(A, (Swift._CopyToNativeArrayBuffer, ())) -> Swift._ContiguousArrayBuffer<A._Element> : $@thin (@in UnsafeBufferPointer<Int>, _CopyToNativeArrayBuffer) -> @owned _ContiguousArrayBuffer<Int> {
bb0(%0 : $*UnsafeBufferPointer<Int>, %1 : $_CopyToNativeArrayBuffer):
%2 = struct_element_addr %0 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._position // user: %3
%3 = struct_element_addr %2 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %4
%4 = load %3 : $*Builtin.RawPointer // users: %12, %184
%5 = struct_element_addr %0 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._end // user: %6
%6 = struct_element_addr %5 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %7
%7 = load %6 : $*Builtin.RawPointer // user: %11
%8 = integer_literal $Builtin.Word, 0 // users: %18, %30, %40, %41, %132, %133, %160, %169, %172, %175, %175
%9 = builtin_function_ref "sub_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %13
%10 = builtin_function_ref "ptrtoint_Word" : $@thin (Builtin.RawPointer) -> Builtin.Word // users: %11, %12
%11 = apply %10(%7) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %13
%12 = apply %10(%4) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %13
%13 = apply %9(%11, %12) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %21, %28
%14 = metatype $@thick Int.Type // users: %16, %71
%15 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %16, %127
%16 = apply %15<Int>(%14) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %18, %23, %28, %83, %147, %181
%17 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %18, %21, %23, %30, %110, %121, %144, %172, %189
%18 = apply %17(%16, %8) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %19
cond_fail %18 : $Builtin.Int1 // id: %19
%20 = integer_literal $Builtin.Word, -9223372036854775808 // users: %21, %144
%21 = apply %17(%13, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %25
%22 = integer_literal $Builtin.Word, -1 // users: %23, %63, %80
%23 = apply %17(%16, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %25, %145
%24 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %25, %145
%25 = apply %24(%21, %23) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %26
cond_fail %25 : $Builtin.Int1 // id: %26
%27 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %28, %147
%28 = apply %27(%13, %16) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %30, %36, %40, %42, %169, %172, %189
%29 = integer_literal $Builtin.Int1, 0 // users: %58, %60, %76, %78, %93, %128, %165, %179, %182
%30 = apply %17(%28, %8) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %31
cond_br %30, bb1, bb2 // id: %31
bb1: // Preds: bb0
%32 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.None!enumelt // user: %33
%33 = struct $HeapBuffer<_ArrayBody, Int> (%32 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // user: %34
%34 = struct $_ContiguousArrayBuffer<Int> (%33 : $HeapBuffer<_ArrayBody, Int>) // user: %35
br bb15(%34 : $_ContiguousArrayBuffer<Int>) // id: %35
bb2: // Preds: bb0
%36 = struct $Int (%28 : $Builtin.Word) // user: %162
%37 = metatype $@thick _ContiguousArrayStorage<Int>.Type // user: %38
%38 = upcast %37 : $@thick _ContiguousArrayStorage<Int>.Type to $@thick AnyObject.Type // user: %105
%39 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %40, %98, %100, %192
%40 = apply %39(%8, %28) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %41
cond_br %40, bb3, bb4(%8 : $Builtin.Word) // id: %41
bb3: // Preds: bb2
br bb4(%28 : $Builtin.Word) // id: %42
bb4(%43 : $Builtin.Word): // Preds: bb2 bb3
%44 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %46, %66, %107, %109, %118, %120
%45 = metatype $@thick HeapObject.Type // users: %46, %92
%46 = apply %44<HeapObject>(%45) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %52
%47 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %49, %71, %92
%48 = metatype $@thick _ArrayBody.Type // users: %49, %66
%49 = apply %47<_ArrayBody>(%48) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %52, %60
%50 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %52, %67, %72, %87, %179, %182
%51 = integer_literal $Builtin.Int1, -1 // users: %52, %67, %72, %83, %87, %112, %122, %140, %170
%52 = apply %50(%46, %49, %51) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %53, %54
%53 = tuple_extract %52 : $(Builtin.Word, Builtin.Int1), 0 // user: %58
%54 = tuple_extract %52 : $(Builtin.Word, Builtin.Int1), 1 // user: %55
cond_fail %54 : $Builtin.Int1 // id: %55
%56 = integer_literal $Builtin.Word, 1 // users: %58, %60, %76, %78, %93, %158, %179, %182
%57 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %58, %60, %76, %78, %93, %140
%58 = apply %57(%53, %56, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %59
%59 = tuple_extract %58 : $(Builtin.Word, Builtin.Int1), 0 // user: %65
%60 = apply %57(%49, %56, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %61
%61 = tuple_extract %60 : $(Builtin.Word, Builtin.Int1), 0 // users: %63, %96, %98, %100
%62 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %63, %80
%63 = apply %62(%61, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %65
%64 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %65, %81
%65 = apply %64(%59, %63) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %67, %128
%66 = apply %44<_ArrayBody>(%48) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %67
%67 = apply %50(%65, %66, %51) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %68, %69
%68 = tuple_extract %67 : $(Builtin.Word, Builtin.Int1), 0 // user: %72
%69 = tuple_extract %67 : $(Builtin.Word, Builtin.Int1), 1 // user: %70
cond_fail %69 : $Builtin.Int1 // id: %70
%71 = apply %47<Int>(%14) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %72, %78
%72 = apply %50(%68, %71, %51) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %73, %74
%73 = tuple_extract %72 : $(Builtin.Word, Builtin.Int1), 0 // user: %76
%74 = tuple_extract %72 : $(Builtin.Word, Builtin.Int1), 1 // user: %75
cond_fail %74 : $Builtin.Int1 // id: %75
%76 = apply %57(%73, %56, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %77
%77 = tuple_extract %76 : $(Builtin.Word, Builtin.Int1), 0 // user: %81
%78 = apply %57(%71, %56, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %79
%79 = tuple_extract %78 : $(Builtin.Word, Builtin.Int1), 0 // users: %80, %97, %100, %192
%80 = apply %62(%79, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %81
%81 = apply %64(%77, %80) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %87, %140, %165
%82 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %83, %128, %165
%83 = apply %82(%43, %16, %51) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %84, %85
%84 = tuple_extract %83 : $(Builtin.Word, Builtin.Int1), 0 // user: %87
%85 = tuple_extract %83 : $(Builtin.Word, Builtin.Int1), 1 // user: %86
cond_fail %85 : $Builtin.Int1 // id: %86
%87 = apply %50(%81, %84, %51) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %88, %89
%88 = tuple_extract %87 : $(Builtin.Word, Builtin.Int1), 0 // user: %91
%89 = tuple_extract %87 : $(Builtin.Word, Builtin.Int1), 1 // user: %90
cond_fail %89 : $Builtin.Int1 // id: %90
%91 = struct $Int (%88 : $Builtin.Word) // user: %105
%92 = apply %47<HeapObject>(%45) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %93
%93 = apply %57(%92, %56, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %94
%94 = tuple_extract %93 : $(Builtin.Word, Builtin.Int1), 0 // users: %95, %98, %192
%95 = struct $Int (%94 : $Builtin.Word) // user: %195
%96 = struct $Int (%61 : $Builtin.Word) // user: %191
%97 = struct $Int (%79 : $Builtin.Word) // users: %102, %194
%98 = apply %39(%94, %61) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %99
cond_br %98, bb5, bb12 // id: %99
bb5: // Preds: bb4
%100 = apply %39(%61, %79) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %101
cond_br %100, bb6, bb11 // id: %101
bb6: // Preds: bb5
br bb7(%97 : $Int) // id: %102
bb7(%103 : $Int): // Preds: bb6 bb11 bb13 bb14
// function_ref swift_bufferAllocate
%104 = function_ref @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %105
%105 = apply %104(%38, %91, %103) : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %114
%106 = metatype $@thick AnyObject.Protocol // user: %107
%107 = apply %44<AnyObject>(%106) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %110
%108 = metatype $@thick HeapBufferStorage<_ArrayBody, Int>.Type // user: %109
%109 = apply %44<HeapBufferStorage<_ArrayBody, Int>>(%108) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %110
%110 = apply %17(%107, %109) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %112
%111 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %112, %122, %170
%112 = apply %111(%110, %51) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %113
cond_fail %112 : $Builtin.Int1 // id: %113
%114 = unchecked_ref_bit_cast %105 : $AnyObject to $HeapBufferStorage<_ArrayBody, Int> // user: %115
%115 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1, %114 : $HeapBufferStorage<_ArrayBody, Int> // users: %116, %124
%116 = struct $HeapBuffer<_ArrayBody, Int> (%115 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // user: %164
%117 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %118
%118 = apply %44<HeapBufferStorage<_ArrayBody, Int>?>(%117) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %121
%119 = metatype $@thick Builtin.NativeObject.Type // user: %120
%120 = apply %44<Builtin.NativeObject>(%119) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %121
%121 = apply %17(%118, %120) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %122
%122 = apply %111(%121, %51) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %123
cond_fail %122 : $Builtin.Int1 // id: %123
%124 = unchecked_ref_bit_cast %115 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %125
%125 = ref_to_raw_pointer %124 : $Builtin.NativeObject to $Builtin.RawPointer // users: %130, %137, %167
%126 = metatype $@thick Int8.Type // user: %127
%127 = apply %15<Int8>(%126) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %128, %165
%128 = apply %82(%65, %127, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %129
%129 = tuple_extract %128 : $(Builtin.Word, Builtin.Int1), 0 // user: %130
%130 = index_raw_pointer %125 : $Builtin.RawPointer, %129 : $Builtin.Word // user: %131
%131 = pointer_to_address %130 : $Builtin.RawPointer to $*_ArrayBody // users: %135, %163
%132 = struct $Int (%8 : $Builtin.Word) // user: %134
%133 = struct $UInt (%8 : $Builtin.Word) // user: %134
%134 = struct $_ArrayBody (%132 : $Int, %133 : $UInt) // user: %135
store %134 to %131 : $*_ArrayBody // id: %135
// function_ref malloc_size
%136 = function_ref @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %138
%137 = struct $UnsafePointer<()> (%125 : $Builtin.RawPointer) // user: %138
%138 = apply %136(%137) : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %139
%139 = struct_extract %138 : $UInt, #UInt.value // user: %140
%140 = apply %57(%139, %81, %51) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %141, %142
%141 = tuple_extract %140 : $(Builtin.Word, Builtin.Int1), 0 // users: %144, %147
%142 = tuple_extract %140 : $(Builtin.Word, Builtin.Int1), 1 // user: %143
cond_fail %142 : $Builtin.Int1 // id: %143
%144 = apply %17(%141, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %145
%145 = apply %24(%144, %23) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %146
cond_fail %145 : $Builtin.Int1 // id: %146
%147 = apply %27(%141, %16) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %149
%148 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // user: %149
%149 = apply %148(%147) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %151
%150 = builtin_function_ref "s_to_u_checked_conversion_Int64" : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // user: %151
%151 = apply %150(%149) : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // users: %152, %153
%152 = tuple_extract %151 : $(Builtin.Int64, Builtin.Int1), 0 // user: %156
%153 = tuple_extract %151 : $(Builtin.Int64, Builtin.Int1), 1 // user: %154
cond_fail %153 : $Builtin.Int1 // id: %154
%155 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %156
%156 = apply %155(%152) : $@thin (Builtin.Int64) -> Builtin.Word // user: %158
%157 = builtin_function_ref "shl_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %158
%158 = apply %157(%156, %56) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %160
%159 = builtin_function_ref "or_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %160
%160 = apply %159(%158, %8) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %161
%161 = struct $UInt (%160 : $Builtin.Word) // user: %162
%162 = struct $_ArrayBody (%36 : $Int, %161 : $UInt) // user: %163
store %162 to %131 : $*_ArrayBody // id: %163
%164 = struct $_ContiguousArrayBuffer<Int> (%116 : $HeapBuffer<_ArrayBody, Int>) // user: %174
%165 = apply %82(%81, %127, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %166
%166 = tuple_extract %165 : $(Builtin.Word, Builtin.Int1), 0 // user: %167
%167 = index_raw_pointer %125 : $Builtin.RawPointer, %166 : $Builtin.Word // user: %175
%168 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %169
%169 = apply %168(%8, %28) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %170
%170 = apply %111(%169, %51) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %171
cond_fail %170 : $Builtin.Int1 // id: %171
%172 = apply %17(%8, %28) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %173
cond_br %172, bb8, bb9 // id: %173
bb8: // Preds: bb7 bb10
br bb15(%164 : $_ContiguousArrayBuffer<Int>) // id: %174
bb9: // Preds: bb7
br bb10(%8 : $Builtin.Word, %167 : $Builtin.RawPointer, %8 : $Builtin.Word) // id: %175
bb10(%176 : $Builtin.Word, %177 : $Builtin.RawPointer, %178 : $Builtin.Word): // Preds: bb9 bb10
%179 = apply %50(%176, %56, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %180
%180 = tuple_extract %179 : $(Builtin.Word, Builtin.Int1), 0 // users: %189, %190
%181 = index_raw_pointer %177 : $Builtin.RawPointer, %16 : $Builtin.Word // user: %190
%182 = apply %50(%178, %56, %29) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %183
%183 = tuple_extract %182 : $(Builtin.Word, Builtin.Int1), 0 // user: %190
%184 = pointer_to_address %4 : $Builtin.RawPointer to $*Int // user: %185
%185 = index_addr %184 : $*Int, %178 : $Builtin.Word // user: %186
%186 = load %185 : $*Int // user: %188
%187 = pointer_to_address %177 : $Builtin.RawPointer to $*Int // user: %188
store %186 to %187 : $*Int // id: %188
%189 = apply %17(%180, %28) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %190
cond_br %189, bb8, bb10(%180 : $Builtin.Word, %181 : $Builtin.RawPointer, %183 : $Builtin.Word) // id: %190
bb11: // Preds: bb5
br bb7(%96 : $Int) // id: %191
bb12: // Preds: bb4
%192 = apply %39(%94, %79) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %193
cond_br %192, bb13, bb14 // id: %193
bb13: // Preds: bb12
br bb7(%97 : $Int) // id: %194
bb14: // Preds: bb12
br bb7(%95 : $Int) // id: %195
bb15(%196 : $_ContiguousArrayBuffer<Int>): // Preds: bb1 bb8
return %196 : $_ContiguousArrayBuffer<Int> // id: %197
}
// specialization <Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift.CollectionType, Swift.UnsafeBufferPointerGenerator<Swift.Int> with Swift.UnsafeBufferPointerGenerator<Swift.Int> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift._copyCollectionToNativeArrayBuffer <A : Swift.CollectionType>(A) -> Swift._ContiguousArrayBuffer<A._Element>
sil shared specialization <Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift.CollectionType, Swift.UnsafeBufferPointerGenerator<Swift.Int> with Swift.UnsafeBufferPointerGenerator<Swift.Int> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift._copyCollectionToNativeArrayBuffer <A : Swift.CollectionType>(A) -> Swift._ContiguousArrayBuffer<A._Element> : $@thin (@in UnsafeBufferPointer<Int>) -> @owned _ContiguousArrayBuffer<Int> {
bb0(%0 : $*UnsafeBufferPointer<Int>):
%1 = struct_element_addr %0 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._position // user: %2
%2 = struct_element_addr %1 : $*UnsafePointer<Int>, #UnsafePointer.value // users: %3, %190
%3 = load %2 : $*Builtin.RawPointer // user: %11
%4 = struct_element_addr %0 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._end // user: %5
%5 = struct_element_addr %4 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %6
%6 = load %5 : $*Builtin.RawPointer // user: %10
%7 = integer_literal $Builtin.Word, 0 // users: %17, %29, %41, %42, %133, %134, %161, %170, %173, %181, %181
%8 = builtin_function_ref "sub_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %12
%9 = builtin_function_ref "ptrtoint_Word" : $@thin (Builtin.RawPointer) -> Builtin.Word // users: %10, %11
%10 = apply %9(%6) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %12
%11 = apply %9(%3) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %12
%12 = apply %8(%10, %11) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %20, %27
%13 = metatype $@thick Int.Type // users: %15, %72
%14 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %15, %128
%15 = apply %14<Int>(%13) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %17, %22, %27, %84, %148, %187
%16 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %17, %20, %22, %29, %111, %122, %145, %173, %196
%17 = apply %16(%15, %7) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %18
cond_fail %17 : $Builtin.Int1 // id: %18
%19 = integer_literal $Builtin.Word, -9223372036854775808 // users: %20, %145
%20 = apply %16(%12, %19) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %24
%21 = integer_literal $Builtin.Word, -1 // users: %22, %64, %81
%22 = apply %16(%15, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %24, %146
%23 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %24, %146
%24 = apply %23(%20, %22) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %25
cond_fail %24 : $Builtin.Int1 // id: %25
%26 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %27, %148
%27 = apply %26(%12, %15) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %29, %37, %41, %43, %170, %173, %196
%28 = integer_literal $Builtin.Int1, 0 // users: %59, %61, %77, %79, %94, %129, %166, %185, %188
%29 = apply %16(%27, %7) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %30
cond_br %29, bb1, bb3 // id: %30
bb1: // Preds: bb0
%31 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.None!enumelt // user: %32
%32 = struct $HeapBuffer<_ArrayBody, Int> (%31 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // user: %33
%33 = struct $_ContiguousArrayBuffer<Int> (%32 : $HeapBuffer<_ArrayBody, Int>) // user: %34
br bb2(%33 : $_ContiguousArrayBuffer<Int>) // id: %34
bb2(%35 : $_ContiguousArrayBuffer<Int>): // Preds: bb1 bb13
return %35 : $_ContiguousArrayBuffer<Int> // id: %36
bb3: // Preds: bb0
%37 = struct $Int (%27 : $Builtin.Word) // user: %163
%38 = metatype $@thick _ContiguousArrayStorage<Int>.Type // user: %39
%39 = upcast %38 : $@thick _ContiguousArrayStorage<Int>.Type to $@thick AnyObject.Type // user: %106
%40 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %41, %99, %101, %176
%41 = apply %40(%7, %27) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %42
cond_br %41, bb4, bb5(%7 : $Builtin.Word) // id: %42
bb4: // Preds: bb3
br bb5(%27 : $Builtin.Word) // id: %43
bb5(%44 : $Builtin.Word): // Preds: bb3 bb4
%45 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %47, %67, %108, %110, %119, %121
%46 = metatype $@thick HeapObject.Type // users: %47, %93
%47 = apply %45<HeapObject>(%46) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %53
%48 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %50, %72, %93
%49 = metatype $@thick _ArrayBody.Type // users: %50, %67
%50 = apply %48<_ArrayBody>(%49) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %53, %61
%51 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %53, %68, %73, %88, %185, %188
%52 = integer_literal $Builtin.Int1, -1 // users: %53, %68, %73, %84, %88, %113, %123, %141, %171
%53 = apply %51(%47, %50, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %54, %55
%54 = tuple_extract %53 : $(Builtin.Word, Builtin.Int1), 0 // user: %59
%55 = tuple_extract %53 : $(Builtin.Word, Builtin.Int1), 1 // user: %56
cond_fail %55 : $Builtin.Int1 // id: %56
%57 = integer_literal $Builtin.Word, 1 // users: %59, %61, %77, %79, %94, %159, %185, %188
%58 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %59, %61, %77, %79, %94, %141
%59 = apply %58(%54, %57, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %60
%60 = tuple_extract %59 : $(Builtin.Word, Builtin.Int1), 0 // user: %66
%61 = apply %58(%50, %57, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %62
%62 = tuple_extract %61 : $(Builtin.Word, Builtin.Int1), 0 // users: %64, %97, %99, %101
%63 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %64, %81
%64 = apply %63(%62, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %66
%65 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %66, %82
%66 = apply %65(%60, %64) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %68, %129
%67 = apply %45<_ArrayBody>(%49) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %68
%68 = apply %51(%66, %67, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %69, %70
%69 = tuple_extract %68 : $(Builtin.Word, Builtin.Int1), 0 // user: %73
%70 = tuple_extract %68 : $(Builtin.Word, Builtin.Int1), 1 // user: %71
cond_fail %70 : $Builtin.Int1 // id: %71
%72 = apply %48<Int>(%13) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %73, %79
%73 = apply %51(%69, %72, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %74, %75
%74 = tuple_extract %73 : $(Builtin.Word, Builtin.Int1), 0 // user: %77
%75 = tuple_extract %73 : $(Builtin.Word, Builtin.Int1), 1 // user: %76
cond_fail %75 : $Builtin.Int1 // id: %76
%77 = apply %58(%74, %57, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %78
%78 = tuple_extract %77 : $(Builtin.Word, Builtin.Int1), 0 // user: %82
%79 = apply %58(%72, %57, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %80
%80 = tuple_extract %79 : $(Builtin.Word, Builtin.Int1), 0 // users: %81, %98, %101, %176
%81 = apply %63(%80, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %82
%82 = apply %65(%78, %81) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %88, %141, %166
%83 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %84, %129, %166
%84 = apply %83(%44, %15, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %85, %86
%85 = tuple_extract %84 : $(Builtin.Word, Builtin.Int1), 0 // user: %88
%86 = tuple_extract %84 : $(Builtin.Word, Builtin.Int1), 1 // user: %87
cond_fail %86 : $Builtin.Int1 // id: %87
%88 = apply %51(%82, %85, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %89, %90
%89 = tuple_extract %88 : $(Builtin.Word, Builtin.Int1), 0 // user: %92
%90 = tuple_extract %88 : $(Builtin.Word, Builtin.Int1), 1 // user: %91
cond_fail %90 : $Builtin.Int1 // id: %91
%92 = struct $Int (%89 : $Builtin.Word) // user: %106
%93 = apply %48<HeapObject>(%46) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %94
%94 = apply %58(%93, %57, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %95
%95 = tuple_extract %94 : $(Builtin.Word, Builtin.Int1), 0 // users: %96, %99, %176
%96 = struct $Int (%95 : $Builtin.Word) // user: %179
%97 = struct $Int (%62 : $Builtin.Word) // user: %175
%98 = struct $Int (%80 : $Builtin.Word) // users: %103, %178
%99 = apply %40(%95, %62) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %100
cond_br %99, bb6, bb10 // id: %100
bb6: // Preds: bb5
%101 = apply %40(%62, %80) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %102
cond_br %101, bb7, bb9 // id: %102
bb7: // Preds: bb6
br bb8(%98 : $Int) // id: %103
bb8(%104 : $Int): // Preds: bb7 bb9 bb11 bb12
// function_ref swift_bufferAllocate
%105 = function_ref @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %106
%106 = apply %105(%39, %92, %104) : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %115
%107 = metatype $@thick AnyObject.Protocol // user: %108
%108 = apply %45<AnyObject>(%107) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %111
%109 = metatype $@thick HeapBufferStorage<_ArrayBody, Int>.Type // user: %110
%110 = apply %45<HeapBufferStorage<_ArrayBody, Int>>(%109) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %111
%111 = apply %16(%108, %110) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %113
%112 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %113, %123, %171
%113 = apply %112(%111, %52) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %114
cond_fail %113 : $Builtin.Int1 // id: %114
%115 = unchecked_ref_bit_cast %106 : $AnyObject to $HeapBufferStorage<_ArrayBody, Int> // user: %116
%116 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1, %115 : $HeapBufferStorage<_ArrayBody, Int> // users: %117, %125
%117 = struct $HeapBuffer<_ArrayBody, Int> (%116 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // user: %165
%118 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %119
%119 = apply %45<HeapBufferStorage<_ArrayBody, Int>?>(%118) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %122
%120 = metatype $@thick Builtin.NativeObject.Type // user: %121
%121 = apply %45<Builtin.NativeObject>(%120) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %122
%122 = apply %16(%119, %121) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %123
%123 = apply %112(%122, %52) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %124
cond_fail %123 : $Builtin.Int1 // id: %124
%125 = unchecked_ref_bit_cast %116 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %126
%126 = ref_to_raw_pointer %125 : $Builtin.NativeObject to $Builtin.RawPointer // users: %131, %138, %168
%127 = metatype $@thick Int8.Type // user: %128
%128 = apply %14<Int8>(%127) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %129, %166
%129 = apply %83(%66, %128, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %130
%130 = tuple_extract %129 : $(Builtin.Word, Builtin.Int1), 0 // user: %131
%131 = index_raw_pointer %126 : $Builtin.RawPointer, %130 : $Builtin.Word // user: %132
%132 = pointer_to_address %131 : $Builtin.RawPointer to $*_ArrayBody // users: %136, %164
%133 = struct $Int (%7 : $Builtin.Word) // user: %135
%134 = struct $UInt (%7 : $Builtin.Word) // user: %135
%135 = struct $_ArrayBody (%133 : $Int, %134 : $UInt) // user: %136
store %135 to %132 : $*_ArrayBody // id: %136
// function_ref malloc_size
%137 = function_ref @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %139
%138 = struct $UnsafePointer<()> (%126 : $Builtin.RawPointer) // user: %139
%139 = apply %137(%138) : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %140
%140 = struct_extract %139 : $UInt, #UInt.value // user: %141
%141 = apply %58(%140, %82, %52) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %142, %143
%142 = tuple_extract %141 : $(Builtin.Word, Builtin.Int1), 0 // users: %145, %148
%143 = tuple_extract %141 : $(Builtin.Word, Builtin.Int1), 1 // user: %144
cond_fail %143 : $Builtin.Int1 // id: %144
%145 = apply %16(%142, %19) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %146
%146 = apply %23(%145, %22) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %147
cond_fail %146 : $Builtin.Int1 // id: %147
%148 = apply %26(%142, %15) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %150
%149 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // user: %150
%150 = apply %149(%148) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %152
%151 = builtin_function_ref "s_to_u_checked_conversion_Int64" : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // user: %152
%152 = apply %151(%150) : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // users: %153, %154
%153 = tuple_extract %152 : $(Builtin.Int64, Builtin.Int1), 0 // user: %157
%154 = tuple_extract %152 : $(Builtin.Int64, Builtin.Int1), 1 // user: %155
cond_fail %154 : $Builtin.Int1 // id: %155
%156 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %157
%157 = apply %156(%153) : $@thin (Builtin.Int64) -> Builtin.Word // user: %159
%158 = builtin_function_ref "shl_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %159
%159 = apply %158(%157, %57) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %161
%160 = builtin_function_ref "or_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %161
%161 = apply %160(%159, %7) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %162
%162 = struct $UInt (%161 : $Builtin.Word) // user: %163
%163 = struct $_ArrayBody (%37 : $Int, %162 : $UInt) // user: %164
store %163 to %132 : $*_ArrayBody // id: %164
%165 = struct $_ContiguousArrayBuffer<Int> (%117 : $HeapBuffer<_ArrayBody, Int>) // user: %180
%166 = apply %83(%82, %128, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %167
%167 = tuple_extract %166 : $(Builtin.Word, Builtin.Int1), 0 // user: %168
%168 = index_raw_pointer %126 : $Builtin.RawPointer, %167 : $Builtin.Word // user: %181
%169 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %170
%170 = apply %169(%7, %27) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %171
%171 = apply %112(%170, %52) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %172
cond_fail %171 : $Builtin.Int1 // id: %172
%173 = apply %16(%7, %27) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %174
cond_br %173, bb13, bb14 // id: %174
bb9: // Preds: bb6
br bb8(%97 : $Int) // id: %175
bb10: // Preds: bb5
%176 = apply %40(%95, %80) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %177
cond_br %176, bb11, bb12 // id: %177
bb11: // Preds: bb10
br bb8(%98 : $Int) // id: %178
bb12: // Preds: bb10
br bb8(%96 : $Int) // id: %179
bb13: // Preds: bb8 bb15
br bb2(%165 : $_ContiguousArrayBuffer<Int>) // id: %180
bb14: // Preds: bb8
br bb15(%7 : $Builtin.Word, %168 : $Builtin.RawPointer, %7 : $Builtin.Word) // id: %181
bb15(%182 : $Builtin.Word, %183 : $Builtin.RawPointer, %184 : $Builtin.Word): // Preds: bb14 bb15
%185 = apply %51(%182, %57, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %186
%186 = tuple_extract %185 : $(Builtin.Word, Builtin.Int1), 0 // users: %196, %197
%187 = index_raw_pointer %183 : $Builtin.RawPointer, %15 : $Builtin.Word // user: %197
%188 = apply %51(%184, %57, %28) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %189
%189 = tuple_extract %188 : $(Builtin.Word, Builtin.Int1), 0 // user: %197
%190 = load %2 : $*Builtin.RawPointer // user: %191
%191 = pointer_to_address %190 : $Builtin.RawPointer to $*Int // user: %192
%192 = index_addr %191 : $*Int, %184 : $Builtin.Word // user: %193
%193 = load %192 : $*Int // user: %195
%194 = pointer_to_address %183 : $Builtin.RawPointer to $*Int // user: %195
store %193 to %194 : $*Int // id: %195
%196 = apply %16(%186, %27) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %197
cond_br %196, bb13, bb15(%186 : $Builtin.Word, %187 : $Builtin.RawPointer, %189 : $Builtin.Word) // id: %197
}
// specialization <Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift._CollectionType, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.countElements <A : Swift._CollectionType>(A) -> A.Index.Distance
sil shared specialization <Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift._CollectionType, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.countElements <A : Swift._CollectionType>(A) -> A.Index.Distance : $@thin (@out Int, @in UnsafeBufferPointer<Int>) -> () {
bb0(%0 : $*Int, %1 : $*UnsafeBufferPointer<Int>):
%2 = struct_element_addr %1 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._position // user: %3
%3 = struct_element_addr %2 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %4
%4 = load %3 : $*Builtin.RawPointer // user: %12
%5 = struct_element_addr %1 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._end // user: %6
%6 = struct_element_addr %5 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %7
%7 = load %6 : $*Builtin.RawPointer // user: %11
%8 = integer_literal $Builtin.Word, 0 // user: %18
%9 = builtin_function_ref "sub_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %13
%10 = builtin_function_ref "ptrtoint_Word" : $@thin (Builtin.RawPointer) -> Builtin.Word // users: %11, %12
%11 = apply %10(%7) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %13
%12 = apply %10(%4) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %13
%13 = apply %9(%11, %12) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %21, %28
%14 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %16
%15 = metatype $@thick Int.Type // user: %16
%16 = apply %14<Int>(%15) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %18, %23, %28
%17 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %18, %21, %23
%18 = apply %17(%16, %8) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %19
cond_fail %18 : $Builtin.Int1 // id: %19
%20 = integer_literal $Builtin.Word, -9223372036854775808 // user: %21
%21 = apply %17(%13, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %25
%22 = integer_literal $Builtin.Word, -1 // user: %23
%23 = apply %17(%16, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %25
%24 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %25
%25 = apply %24(%21, %23) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %26
cond_fail %25 : $Builtin.Int1 // id: %26
%27 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %28
%28 = apply %27(%13, %16) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %29
%29 = struct $Int (%28 : $Builtin.Word) // user: %30
store %29 to %0 : $*Int // id: %30
%31 = tuple () // user: %32
return %31 : $() // id: %32
}
// specialization <Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift._CollectionType, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance
sil shared specialization <Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift._CollectionType, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance : $@thin (@out Int, @in UnsafeBufferPointer<Int>, _CountElements) -> () {
bb0(%0 : $*Int, %1 : $*UnsafeBufferPointer<Int>, %2 : $_CountElements):
%3 = integer_literal $Builtin.Word, 0 // user: %19
%4 = struct_element_addr %1 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._position // user: %5
%5 = struct_element_addr %4 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %6
%6 = load %5 : $*Builtin.RawPointer // user: %13
%7 = struct_element_addr %1 : $*UnsafeBufferPointer<Int>, #UnsafeBufferPointer._end // user: %8
%8 = struct_element_addr %7 : $*UnsafePointer<Int>, #UnsafePointer.value // user: %9
%9 = load %8 : $*Builtin.RawPointer // user: %12
%10 = builtin_function_ref "sub_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %14
%11 = builtin_function_ref "ptrtoint_Word" : $@thin (Builtin.RawPointer) -> Builtin.Word // users: %12, %13
%12 = apply %11(%9) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %14
%13 = apply %11(%6) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %14
%14 = apply %10(%12, %13) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %22, %29
%15 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %17
%16 = metatype $@thick Int.Type // user: %17
%17 = apply %15<Int>(%16) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %19, %24, %29
%18 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %19, %22, %24
%19 = apply %18(%17, %3) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %20
cond_fail %19 : $Builtin.Int1 // id: %20
%21 = integer_literal $Builtin.Word, -9223372036854775808 // user: %22
%22 = apply %18(%14, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %26
%23 = integer_literal $Builtin.Word, -1 // user: %24
%24 = apply %18(%17, %23) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %26
%25 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %26
%26 = apply %25(%22, %24) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %27
cond_fail %26 : $Builtin.Int1 // id: %27
%28 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %29
%29 = apply %28(%14, %17) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %30
%30 = struct $Int (%29 : $Builtin.Word) // user: %31
store %30 to %0 : $*Int // id: %31
%32 = tuple () // user: %33
return %32 : $() // id: %33
}
// protocol witness for Swift._CollectionType.startIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.UnsafeBufferPointer : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.startIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.UnsafeBufferPointer : Swift._CollectionType : $@cc(witness_method) @thin <T> (@out UnsafeBufferPointer<T>.Index, @inout UnsafeBufferPointer<T>) -> () {
bb0(%0 : $*Int, %1 : $*UnsafeBufferPointer<T>):
%2 = load %1 : $*UnsafeBufferPointer<T> // user: %4
// function_ref Swift.UnsafeBufferPointer.startIndex.getter : Swift.Int
%3 = function_ref Swift.UnsafeBufferPointer.startIndex.getter : Swift.Int : $@cc(method) @thin <τ_0_0> (UnsafeBufferPointer<τ_0_0>) -> Int // user: %4
%4 = apply %3<T>(%2) : $@cc(method) @thin <τ_0_0> (UnsafeBufferPointer<τ_0_0>) -> Int // user: %5
store %4 to %0 : $*Int // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// protocol witness for Swift._CollectionType.endIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.UnsafeBufferPointer : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.endIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.UnsafeBufferPointer : Swift._CollectionType : $@cc(witness_method) @thin <T> (@out UnsafeBufferPointer<T>.Index, @inout UnsafeBufferPointer<T>) -> () {
bb0(%0 : $*Int, %1 : $*UnsafeBufferPointer<T>):
%2 = load %1 : $*UnsafeBufferPointer<T> // user: %4
// function_ref Swift.UnsafeBufferPointer.endIndex.getter : Swift.Int
%3 = function_ref Swift.UnsafeBufferPointer.endIndex.getter : Swift.Int : $@cc(method) @thin <τ_0_0> (UnsafeBufferPointer<τ_0_0>) -> Int // user: %4
%4 = apply %3<T>(%2) : $@cc(method) @thin <τ_0_0> (UnsafeBufferPointer<τ_0_0>) -> Int // user: %5
store %4 to %0 : $*Int // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// protocol witness for Swift._CollectionType.subscript.getter (Swift._CollectionType.Self.Index) -> Swift._CollectionType.Self._Element in conformance Swift.UnsafeBufferPointer : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.subscript.getter (Swift._CollectionType.Self.Index) -> Swift._CollectionType.Self._Element in conformance Swift.UnsafeBufferPointer : Swift._CollectionType : $@cc(witness_method) @thin <T> (@out UnsafeBufferPointer<T>._Element, @in UnsafeBufferPointer<T>.Index, @inout UnsafeBufferPointer<T>) -> () {
bb0(%0 : $*T, %1 : $*Int, %2 : $*UnsafeBufferPointer<T>):
%3 = load %2 : $*UnsafeBufferPointer<T> // user: %6
%4 = load %1 : $*Int // user: %6
// function_ref Swift.UnsafeBufferPointer.subscript.getter (Swift.Int) -> A
%5 = function_ref Swift.UnsafeBufferPointer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, UnsafeBufferPointer<τ_0_0>) -> () // user: %6
%6 = apply %5<T>(%0, %4, %3) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, UnsafeBufferPointer<τ_0_0>) -> () // user: %7
return %6 : $() // id: %7
}
// specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.distance <A : Swift.ForwardIndexType>(A, A) -> A.Distance
sil shared specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.distance <A : Swift.ForwardIndexType>(A, A) -> A.Distance : $@thin (@out Int, @in Int, @in Int) -> () {
bb0(%0 : $*Int, %1 : $*Int, %2 : $*Int):
%3 = struct_element_addr %1 : $*Int, #Int.value // user: %4
%4 = load %3 : $*Builtin.Word // user: %9
%5 = struct_element_addr %2 : $*Int, #Int.value // user: %6
%6 = load %5 : $*Builtin.Word // user: %8
%7 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // users: %8, %9
%8 = apply %7(%6) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %12
%9 = apply %7(%4) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %12
%10 = builtin_function_ref "ssub_with_overflow_Int64" : $@thin (Builtin.Int64, Builtin.Int64, Builtin.Int1) -> (Builtin.Int64, Builtin.Int1) // user: %12
%11 = integer_literal $Builtin.Int1, 0 // user: %12
%12 = apply %10(%8, %9, %11) : $@thin (Builtin.Int64, Builtin.Int64, Builtin.Int1) -> (Builtin.Int64, Builtin.Int1) // user: %13
%13 = tuple_extract %12 : $(Builtin.Int64, Builtin.Int1), 0 // user: %15
%14 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %15
%15 = apply %14(%13) : $@thin (Builtin.Int64) -> Builtin.Word // user: %16
%16 = struct $Int (%15 : $Builtin.Word) // user: %17
store %16 to %0 : $*Int // id: %17
%18 = tuple () // user: %19
return %18 : $() // id: %19
}
// specialization <Swift.Int> of Swift._distanceTo <A>(A) -> (Swift._Distance, A)
sil shared specialization <Swift.Int> of Swift._distanceTo <A>(A) -> (Swift._Distance, A) : $@thin (@out (_Distance, Int), @in Int) -> () {
bb0(%0 : $*(_Distance, Int), %1 : $*Int):
%2 = tuple_element_addr %0 : $*(_Distance, Int), 0 // user: %5
%3 = tuple_element_addr %0 : $*(_Distance, Int), 1 // user: %7
%4 = struct $_Distance () // user: %5
store %4 to %2 : $*_Distance // id: %5
%6 = load %1 : $*Int // user: %7
store %6 to %3 : $*Int // id: %7
%8 = tuple () // user: %9
return %8 : $() // id: %9
}
// specialization <Swift.Int> of Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)() -> Swift._ContiguousArrayBuffer<A>
sil shared specialization <Swift.Int> of Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)() -> Swift._ContiguousArrayBuffer<A> : $@thin (@thin _ContiguousArrayBuffer<Int>.Type) -> @owned _ContiguousArrayBuffer<Int> {
bb0(%0 : $@thin _ContiguousArrayBuffer<Int>.Type):
%1 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.None!enumelt // user: %2
%2 = struct $HeapBuffer<_ArrayBody, Int> (%1 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // user: %3
%3 = struct $_ContiguousArrayBuffer<Int> (%2 : $HeapBuffer<_ArrayBody, Int>) // user: %4
return %3 : $_ContiguousArrayBuffer<Int> // id: %4
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.HeapBuffer<A, B>
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.HeapBuffer<A, B> : $@thin (@thin HeapBuffer<_ArrayBody, Int>.Type) -> @owned HeapBuffer<_ArrayBody, Int> {
bb0(%0 : $@thin HeapBuffer<_ArrayBody, Int>.Type):
%1 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.None!enumelt // user: %2
%2 = struct $HeapBuffer<_ArrayBody, Int> (%1 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // user: %3
return %2 : $HeapBuffer<_ArrayBody, Int> // id: %3
}
// specialization <Swift.Int> of Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(count : Swift.Int, minimumCapacity : Swift.Int) -> Swift._ContiguousArrayBuffer<A>
sil shared specialization <Swift.Int> of Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(count : Swift.Int, minimumCapacity : Swift.Int) -> Swift._ContiguousArrayBuffer<A> : $@thin (Int, Int, @thin _ContiguousArrayBuffer<Int>.Type) -> @owned _ContiguousArrayBuffer<Int> {
bb0(%0 : $Int, %1 : $Int, %2 : $@thin _ContiguousArrayBuffer<Int>.Type):
%3 = metatype $@thick _ContiguousArrayStorage<Int>.Type // user: %4
%4 = upcast %3 : $@thick _ContiguousArrayStorage<Int>.Type to $@thick AnyObject.Type // user: %79
%5 = integer_literal $Builtin.Word, 0 // users: %107, %108, %119, %141
%6 = struct_extract %0 : $Int, #Int.value // users: %9, %11
%7 = struct_extract %1 : $Int, #Int.value // users: %9, %10
%8 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %9, %72, %74, %148
%9 = apply %8(%7, %6) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %10
cond_br %9, bb1, bb2(%7 : $Builtin.Word) // id: %10
bb1: // Preds: bb0
br bb2(%6 : $Builtin.Word) // id: %11
bb2(%12 : $Builtin.Word): // Preds: bb0 bb1
%13 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %15, %37, %81, %83, %93, %95
%14 = metatype $@thick HeapObject.Type // users: %15, %66
%15 = apply %13<HeapObject>(%14) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %21
%16 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %18, %43, %66
%17 = metatype $@thick _ArrayBody.Type // users: %18, %37
%18 = apply %16<_ArrayBody>(%17) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %21, %30
%19 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %21, %38, %44, %61
%20 = integer_literal $Builtin.Int1, -1 // users: %21, %38, %44, %57, %61, %87, %97, %115
%21 = apply %19(%15, %18, %20) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %22, %23
%22 = tuple_extract %21 : $(Builtin.Word, Builtin.Int1), 0 // user: %28
%23 = tuple_extract %21 : $(Builtin.Word, Builtin.Int1), 1 // user: %24
cond_fail %23 : $Builtin.Int1 // id: %24
%25 = integer_literal $Builtin.Word, 1 // users: %28, %30, %48, %50, %67, %139
%26 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %28, %30, %48, %50, %67, %115
%27 = integer_literal $Builtin.Int1, 0 // users: %28, %30, %48, %50, %67, %103
%28 = apply %26(%22, %25, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %29
%29 = tuple_extract %28 : $(Builtin.Word, Builtin.Int1), 0 // user: %36
%30 = apply %26(%18, %25, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %31
%31 = tuple_extract %30 : $(Builtin.Word, Builtin.Int1), 0 // users: %34, %70, %72, %74
%32 = integer_literal $Builtin.Word, -1 // users: %34, %52, %123
%33 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %34, %52
%34 = apply %33(%31, %32) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %36
%35 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %36, %53
%36 = apply %35(%29, %34) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %38, %103
%37 = apply %13<_ArrayBody>(%17) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %38
%38 = apply %19(%36, %37, %20) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %39, %40
%39 = tuple_extract %38 : $(Builtin.Word, Builtin.Int1), 0 // user: %44
%40 = tuple_extract %38 : $(Builtin.Word, Builtin.Int1), 1 // user: %41
cond_fail %40 : $Builtin.Int1 // id: %41
%42 = metatype $@thick Int.Type // users: %43, %55
%43 = apply %16<Int>(%42) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %44, %50
%44 = apply %19(%39, %43, %20) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %45, %46
%45 = tuple_extract %44 : $(Builtin.Word, Builtin.Int1), 0 // user: %48
%46 = tuple_extract %44 : $(Builtin.Word, Builtin.Int1), 1 // user: %47
cond_fail %46 : $Builtin.Int1 // id: %47
%48 = apply %26(%45, %25, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %49
%49 = tuple_extract %48 : $(Builtin.Word, Builtin.Int1), 0 // user: %53
%50 = apply %26(%43, %25, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %51
%51 = tuple_extract %50 : $(Builtin.Word, Builtin.Int1), 0 // users: %52, %71, %74, %148
%52 = apply %33(%51, %32) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %53
%53 = apply %35(%49, %52) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %61, %115
%54 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %55, %102
%55 = apply %54<Int>(%42) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %57, %119, %123, %128
%56 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %57, %103
%57 = apply %56(%12, %55, %20) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %58, %59
%58 = tuple_extract %57 : $(Builtin.Word, Builtin.Int1), 0 // user: %61
%59 = tuple_extract %57 : $(Builtin.Word, Builtin.Int1), 1 // user: %60
cond_fail %59 : $Builtin.Int1 // id: %60
%61 = apply %19(%53, %58, %20) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %62, %63
%62 = tuple_extract %61 : $(Builtin.Word, Builtin.Int1), 0 // user: %65
%63 = tuple_extract %61 : $(Builtin.Word, Builtin.Int1), 1 // user: %64
cond_fail %63 : $Builtin.Int1 // id: %64
%65 = struct $Int (%62 : $Builtin.Word) // user: %79
%66 = apply %16<HeapObject>(%14) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %67
%67 = apply %26(%66, %25, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %68
%68 = tuple_extract %67 : $(Builtin.Word, Builtin.Int1), 0 // users: %69, %72, %148
%69 = struct $Int (%68 : $Builtin.Word) // user: %151
%70 = struct $Int (%31 : $Builtin.Word) // user: %147
%71 = struct $Int (%51 : $Builtin.Word) // users: %76, %150
%72 = apply %8(%68, %31) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %73
cond_br %72, bb3, bb7 // id: %73
bb3: // Preds: bb2
%74 = apply %8(%31, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %75
cond_br %74, bb4, bb6 // id: %75
bb4: // Preds: bb3
br bb5(%71 : $Int) // id: %76
bb5(%77 : $Int): // Preds: bb4 bb6 bb8 bb9
// function_ref swift_bufferAllocate
%78 = function_ref @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %79
%79 = apply %78(%4, %65, %77) : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %89
%80 = metatype $@thick AnyObject.Protocol // user: %81
%81 = apply %13<AnyObject>(%80) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %85
%82 = metatype $@thick HeapBufferStorage<_ArrayBody, Int>.Type // user: %83
%83 = apply %13<HeapBufferStorage<_ArrayBody, Int>>(%82) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %85
%84 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %85, %96, %119, %122, %123
%85 = apply %84(%81, %83) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %87
%86 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %87, %97
%87 = apply %86(%85, %20) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %88
cond_fail %87 : $Builtin.Int1 // id: %88
%89 = unchecked_ref_bit_cast %79 : $AnyObject to $HeapBufferStorage<_ArrayBody, Int> // user: %90
%90 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1, %89 : $HeapBufferStorage<_ArrayBody, Int> // users: %91, %99
%91 = struct $HeapBuffer<_ArrayBody, Int> (%90 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // user: %145
%92 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %93
%93 = apply %13<HeapBufferStorage<_ArrayBody, Int>?>(%92) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %96
%94 = metatype $@thick Builtin.NativeObject.Type // user: %95
%95 = apply %13<Builtin.NativeObject>(%94) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %96
%96 = apply %84(%93, %95) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %97
%97 = apply %86(%96, %20) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %98
cond_fail %97 : $Builtin.Int1 // id: %98
%99 = unchecked_ref_bit_cast %90 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %100
%100 = ref_to_raw_pointer %99 : $Builtin.NativeObject to $Builtin.RawPointer // users: %105, %112
%101 = metatype $@thick Int8.Type // user: %102
%102 = apply %54<Int8>(%101) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %103
%103 = apply %56(%36, %102, %27) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %104
%104 = tuple_extract %103 : $(Builtin.Word, Builtin.Int1), 0 // user: %105
%105 = index_raw_pointer %100 : $Builtin.RawPointer, %104 : $Builtin.Word // user: %106
%106 = pointer_to_address %105 : $Builtin.RawPointer to $*_ArrayBody // users: %110, %144
%107 = struct $Int (%5 : $Builtin.Word) // user: %109
%108 = struct $UInt (%5 : $Builtin.Word) // user: %109
%109 = struct $_ArrayBody (%107 : $Int, %108 : $UInt) // user: %110
store %109 to %106 : $*_ArrayBody // id: %110
// function_ref malloc_size
%111 = function_ref @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %113
%112 = struct $UnsafePointer<()> (%100 : $Builtin.RawPointer) // user: %113
%113 = apply %111(%112) : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %114
%114 = struct_extract %113 : $UInt, #UInt.value // user: %115
%115 = apply %26(%114, %53, %20) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %116, %117
%116 = tuple_extract %115 : $(Builtin.Word, Builtin.Int1), 0 // users: %122, %128
%117 = tuple_extract %115 : $(Builtin.Word, Builtin.Int1), 1 // user: %118
cond_fail %117 : $Builtin.Int1 // id: %118
%119 = apply %84(%55, %5) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %120
cond_fail %119 : $Builtin.Int1 // id: %120
%121 = integer_literal $Builtin.Word, -9223372036854775808 // user: %122
%122 = apply %84(%116, %121) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %125
%123 = apply %84(%55, %32) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %125
%124 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %125
%125 = apply %124(%122, %123) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %126
cond_fail %125 : $Builtin.Int1 // id: %126
%127 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %128
%128 = apply %127(%116, %55) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %130
%129 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // user: %130
%130 = apply %129(%128) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %132
%131 = builtin_function_ref "s_to_u_checked_conversion_Int64" : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // user: %132
%132 = apply %131(%130) : $@thin (Builtin.Int64) -> (Builtin.Int64, Builtin.Int1) // users: %133, %134
%133 = tuple_extract %132 : $(Builtin.Int64, Builtin.Int1), 0 // user: %137
%134 = tuple_extract %132 : $(Builtin.Int64, Builtin.Int1), 1 // user: %135
cond_fail %134 : $Builtin.Int1 // id: %135
%136 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %137
%137 = apply %136(%133) : $@thin (Builtin.Int64) -> Builtin.Word // user: %139
%138 = builtin_function_ref "shl_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %139
%139 = apply %138(%137, %25) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %141
%140 = builtin_function_ref "or_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %141
%141 = apply %140(%139, %5) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %142
%142 = struct $UInt (%141 : $Builtin.Word) // user: %143
%143 = struct $_ArrayBody (%0 : $Int, %142 : $UInt) // user: %144
store %143 to %106 : $*_ArrayBody // id: %144
%145 = struct $_ContiguousArrayBuffer<Int> (%91 : $HeapBuffer<_ArrayBody, Int>) // user: %146
return %145 : $_ContiguousArrayBuffer<Int> // id: %146
bb6: // Preds: bb3
br bb5(%70 : $Int) // id: %147
bb7: // Preds: bb2
%148 = apply %8(%68, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %149
cond_br %148, bb8, bb9 // id: %149
bb8: // Preds: bb7
br bb5(%71 : $Int) // id: %150
bb9: // Preds: bb7
br bb5(%69 : $Int) // id: %151
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)(Swift.AnyObject.Type, A, Swift.Int) -> Swift.HeapBuffer<A, B>
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer.init <A, B>(Swift.HeapBuffer<A, B>.Type)(Swift.AnyObject.Type, A, Swift.Int) -> Swift.HeapBuffer<A, B> : $@thin (@thick AnyObject.Type, @in _ArrayBody, Int, @thin HeapBuffer<_ArrayBody, Int>.Type) -> @owned HeapBuffer<_ArrayBody, Int> {
bb0(%0 : $@thick AnyObject.Type, %1 : $*_ArrayBody, %2 : $Int, %3 : $@thin HeapBuffer<_ArrayBody, Int>.Type):
%4 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %6, %28, %79, %81, %91, %93
%5 = metatype $@thick HeapObject.Type // users: %6, %58
%6 = apply %4<HeapObject>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %12
%7 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %9, %34, %58
%8 = metatype $@thick _ArrayBody.Type // users: %9, %28
%9 = apply %7<_ArrayBody>(%8) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %12, %21
%10 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %12, %29, %35, %53
%11 = integer_literal $Builtin.Int1, -1 // users: %12, %29, %35, %49, %53, %85, %95
%12 = apply %10(%6, %9, %11) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %13, %14
%13 = tuple_extract %12 : $(Builtin.Word, Builtin.Int1), 0 // user: %19
%14 = tuple_extract %12 : $(Builtin.Word, Builtin.Int1), 1 // user: %15
cond_fail %14 : $Builtin.Int1 // id: %15
%16 = integer_literal $Builtin.Word, 1 // users: %19, %21, %39, %41, %59
%17 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %19, %21, %39, %41, %59
%18 = integer_literal $Builtin.Int1, 0 // users: %19, %21, %39, %41, %59, %101
%19 = apply %17(%13, %16, %18) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %20
%20 = tuple_extract %19 : $(Builtin.Word, Builtin.Int1), 0 // user: %27
%21 = apply %17(%9, %16, %18) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %22
%22 = tuple_extract %21 : $(Builtin.Word, Builtin.Int1), 0 // users: %25, %62, %65, %67
%23 = integer_literal $Builtin.Word, -1 // users: %25, %43
%24 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %25, %43
%25 = apply %24(%22, %23) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %27
%26 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %27, %44
%27 = apply %26(%20, %25) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %29, %101
%28 = apply %4<_ArrayBody>(%8) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %29
%29 = apply %10(%27, %28, %11) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %30, %31
%30 = tuple_extract %29 : $(Builtin.Word, Builtin.Int1), 0 // user: %35
%31 = tuple_extract %29 : $(Builtin.Word, Builtin.Int1), 1 // user: %32
cond_fail %31 : $Builtin.Int1 // id: %32
%33 = metatype $@thick Int.Type // users: %34, %46
%34 = apply %7<Int>(%33) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %35, %41
%35 = apply %10(%30, %34, %11) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %36, %37
%36 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 0 // user: %39
%37 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 1 // user: %38
cond_fail %37 : $Builtin.Int1 // id: %38
%39 = apply %17(%36, %16, %18) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %40
%40 = tuple_extract %39 : $(Builtin.Word, Builtin.Int1), 0 // user: %44
%41 = apply %17(%34, %16, %18) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %42
%42 = tuple_extract %41 : $(Builtin.Word, Builtin.Int1), 0 // users: %43, %63, %67, %71
%43 = apply %24(%42, %23) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %44
%44 = apply %26(%40, %43) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %53
%45 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %46, %100
%46 = apply %45<Int>(%33) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %49
%47 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %49, %101
%48 = struct_extract %2 : $Int, #Int.value // user: %49
%49 = apply %47(%48, %46, %11) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %50, %51
%50 = tuple_extract %49 : $(Builtin.Word, Builtin.Int1), 0 // user: %53
%51 = tuple_extract %49 : $(Builtin.Word, Builtin.Int1), 1 // user: %52
cond_fail %51 : $Builtin.Int1 // id: %52
%53 = apply %10(%44, %50, %11) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %54, %55
%54 = tuple_extract %53 : $(Builtin.Word, Builtin.Int1), 0 // user: %57
%55 = tuple_extract %53 : $(Builtin.Word, Builtin.Int1), 1 // user: %56
cond_fail %55 : $Builtin.Int1 // id: %56
%57 = struct $Int (%54 : $Builtin.Word) // user: %77
%58 = apply %7<HeapObject>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %59
%59 = apply %17(%58, %16, %18) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %60
%60 = tuple_extract %59 : $(Builtin.Word, Builtin.Int1), 0 // users: %61, %65, %71
%61 = struct $Int (%60 : $Builtin.Word) // user: %74
%62 = struct $Int (%22 : $Builtin.Word) // user: %70
%63 = struct $Int (%42 : $Builtin.Word) // users: %69, %73
%64 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %65, %67, %71
%65 = apply %64(%60, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %66
cond_br %65, bb1, bb4 // id: %66
bb1: // Preds: bb0
%67 = apply %64(%22, %42) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %68
cond_br %67, bb2, bb3 // id: %68
bb2: // Preds: bb1
br bb7(%63 : $Int) // id: %69
bb3: // Preds: bb1
br bb7(%62 : $Int) // id: %70
bb4: // Preds: bb0
%71 = apply %64(%60, %42) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %72
cond_br %71, bb5, bb6 // id: %72
bb5: // Preds: bb4
br bb7(%63 : $Int) // id: %73
bb6: // Preds: bb4
br bb7(%61 : $Int) // id: %74
bb7(%75 : $Int): // Preds: bb2 bb3 bb5 bb6
// function_ref swift_bufferAllocate
%76 = function_ref @swift_bufferAllocate : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %77
%77 = apply %76(%0, %57, %75) : $@thin (@thick AnyObject.Type, Int, Int) -> @owned AnyObject // user: %87
%78 = metatype $@thick AnyObject.Protocol // user: %79
%79 = apply %4<AnyObject>(%78) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %83
%80 = metatype $@thick HeapBufferStorage<_ArrayBody, Int>.Type // user: %81
%81 = apply %4<HeapBufferStorage<_ArrayBody, Int>>(%80) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %83
%82 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %83, %94
%83 = apply %82(%79, %81) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %85
%84 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %85, %95
%85 = apply %84(%83, %11) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %86
cond_fail %85 : $Builtin.Int1 // id: %86
%87 = unchecked_ref_bit_cast %77 : $AnyObject to $HeapBufferStorage<_ArrayBody, Int> // user: %88
%88 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1, %87 : $HeapBufferStorage<_ArrayBody, Int> // users: %89, %97
%89 = struct $HeapBuffer<_ArrayBody, Int> (%88 : $Optional<HeapBufferStorage<_ArrayBody, Int>>) // user: %107
%90 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %91
%91 = apply %4<HeapBufferStorage<_ArrayBody, Int>?>(%90) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %94
%92 = metatype $@thick Builtin.NativeObject.Type // user: %93
%93 = apply %4<Builtin.NativeObject>(%92) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %94
%94 = apply %82(%91, %93) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %95
%95 = apply %84(%94, %11) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %96
cond_fail %95 : $Builtin.Int1 // id: %96
%97 = unchecked_ref_bit_cast %88 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %98
%98 = ref_to_raw_pointer %97 : $Builtin.NativeObject to $Builtin.RawPointer // user: %103
%99 = metatype $@thick Int8.Type // user: %100
%100 = apply %45<Int8>(%99) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %101
%101 = apply %47(%27, %100, %18) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %102
%102 = tuple_extract %101 : $(Builtin.Word, Builtin.Int1), 0 // user: %103
%103 = index_raw_pointer %98 : $Builtin.RawPointer, %102 : $Builtin.Word // user: %105
%104 = load %1 : $*_ArrayBody // user: %106
%105 = pointer_to_address %103 : $Builtin.RawPointer to $*_ArrayBody // user: %106
store %104 to %105 : $*_ArrayBody // id: %106
return %89 : $HeapBuffer<_ArrayBody, Int> // id: %107
}
// specialization <Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>> of Swift.Optional.init <A>(Swift.Optional<A>.Type)(nilLiteral : ()) -> Swift.Optional<A>
sil shared [transparent] specialization <Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>> of Swift.Optional.init <A>(A?.Type)(nilLiteral : ()) -> A? : $@thin (@out Optional<HeapBufferStorage<_ArrayBody, Int>>, @thin Optional<HeapBufferStorage<_ArrayBody, Int>>.Type) -> () {
bb0(%0 : $*Optional<HeapBufferStorage<_ArrayBody, Int>>, %1 : $@thin Optional<HeapBufferStorage<_ArrayBody, Int>>.Type):
// function_ref Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
%2 = function_ref Swift.Optional.None <A>(A?.Type) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> () // user: %5
%3 = metatype $@thin Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %5
%4 = alloc_stack $Optional<HeapBufferStorage<_ArrayBody, Int>> // users: %5, %6, %7
%5 = apply [transparent] %2<HeapBufferStorage<_ArrayBody, Int>>(%4#1, %3) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @thin Optional<τ_0_0>.Type) -> ()
%6 = load %4#1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %8
dealloc_stack %4#0 : $*@local_storage Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %7
store %6 to %0 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._requiredAlignMask <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._requiredAlignMask <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin (@thin HeapBuffer<_ArrayBody, Int>.Type) -> Int {
bb0(%0 : $@thin HeapBuffer<_ArrayBody, Int>.Type):
%1 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %3, %11, %16
%2 = metatype $@thick HeapObject.Type // user: %3
%3 = apply %1<HeapObject>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %7
%4 = integer_literal $Builtin.Word, 1 // users: %7, %12, %17
%5 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %7, %12, %17
%6 = integer_literal $Builtin.Int1, 0 // users: %7, %12, %17
%7 = apply %5(%3, %4, %6) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %8
%8 = tuple_extract %7 : $(Builtin.Word, Builtin.Int1), 0 // users: %9, %21, %29
%9 = struct $Int (%8 : $Builtin.Word) // user: %32
%10 = metatype $@thick _ArrayBody.Type // user: %11
%11 = apply %1<_ArrayBody>(%10) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %12
%12 = apply %5(%11, %4, %6) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %13
%13 = tuple_extract %12 : $(Builtin.Word, Builtin.Int1), 0 // users: %14, %21, %23
%14 = struct $Int (%13 : $Builtin.Word) // user: %28
%15 = metatype $@thick Int.Type // user: %16
%16 = apply %1<Int>(%15) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %17
%17 = apply %5(%16, %4, %6) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %18
%18 = tuple_extract %17 : $(Builtin.Word, Builtin.Int1), 0 // users: %19, %23, %29
%19 = struct $Int (%18 : $Builtin.Word) // users: %25, %31
%20 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %21, %23, %29
%21 = apply %20(%8, %13) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %22
cond_br %21, bb1, bb5 // id: %22
bb1: // Preds: bb0
%23 = apply %20(%13, %18) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %24
cond_br %23, bb2, bb4 // id: %24
bb2: // Preds: bb1
br bb3(%19 : $Int) // id: %25
bb3(%26 : $Int): // Preds: bb2 bb4 bb6 bb7
return %26 : $Int // id: %27
bb4: // Preds: bb1
br bb3(%14 : $Int) // id: %28
bb5: // Preds: bb0
%29 = apply %20(%8, %18) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %30
cond_br %29, bb6, bb7 // id: %30
bb6: // Preds: bb5
br bb3(%19 : $Int) // id: %31
bb7: // Preds: bb5
br bb3(%9 : $Int) // id: %32
}
// specialization <Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>> of Swift._injectValueIntoOptional <A>(A) -> Swift.Optional<A>
sil shared [transparent] specialization <Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>> of Swift._injectValueIntoOptional <A>(A) -> A? : $@thin (@out Optional<HeapBufferStorage<_ArrayBody, Int>>, @in HeapBufferStorage<_ArrayBody, Int>) -> () {
bb0(%0 : $*Optional<HeapBufferStorage<_ArrayBody, Int>>, %1 : $*HeapBufferStorage<_ArrayBody, Int>):
// function_ref Swift.Optional.Some <A>(Swift.Optional<A>.Type)(A) -> Swift.Optional<A>
%2 = function_ref Swift.Optional.Some <A>(A?.Type)(A) -> A? : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0, @thin Optional<τ_0_0>.Type) -> () // user: %8
%3 = metatype $@thin Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %8
%4 = alloc_stack $HeapBufferStorage<_ArrayBody, Int> // users: %6, %8, %9
%5 = load %1 : $*HeapBufferStorage<_ArrayBody, Int> // users: %6, %7
store %5 to %4#1 : $*HeapBufferStorage<_ArrayBody, Int> // id: %6
strong_retain %5 : $HeapBufferStorage<_ArrayBody, Int> // id: %7
%8 = apply [transparent] %2<HeapBufferStorage<_ArrayBody, Int>>(%0, %4#1, %3) : $@thin <τ_0_0> (@out Optional<τ_0_0>, @in τ_0_0, @thin Optional<τ_0_0>.Type) -> ()
dealloc_stack %4#0 : $*@local_storage HeapBufferStorage<_ArrayBody, Int> // id: %9
%10 = load %1 : $*HeapBufferStorage<_ArrayBody, Int> // user: %11
strong_release %10 : $HeapBufferStorage<_ArrayBody, Int> // id: %11
%12 = tuple () // user: %13
return %12 : $() // id: %13
}
// specialization <Swift.Int> of Swift._isBridgedVerbatimToObjectiveC <A>(A.Type) -> Swift.Bool
sil shared specialization <Swift.Int> of Swift._isBridgedVerbatimToObjectiveC <A>(A.Type) -> Swift.Bool : $@thin (@thick Int.Type) -> Bool {
bb0(%0 : $@thick Int.Type):
%1 = integer_literal $Builtin.Int1, 0 // user: %2
%2 = struct $Bool (%1 : $Builtin.Int1) // user: %3
return %2 : $Bool // id: %3
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._capacity <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._capacity <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int : $@cc(method) @thin (@owned HeapBuffer<_ArrayBody, Int>) -> Int {
bb0(%0 : $HeapBuffer<_ArrayBody, Int>):
// function_ref malloc_size
%1 = function_ref @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %17
%2 = struct_extract %0 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %14, %18
%3 = integer_literal $Builtin.Int1, -1 // users: %12, %26, %43, %49, %59
%4 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %6, %8, %21, %42
%5 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %6
%6 = apply %4<HeapBufferStorage<_ArrayBody, Int>?>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %10
%7 = metatype $@thick Builtin.NativeObject.Type // user: %8
%8 = apply %4<Builtin.NativeObject>(%7) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %10
%9 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %10, %66, %69, %70
%10 = apply %9(%6, %8) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %12
%11 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %12
%12 = apply %11(%10, %3) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %13
cond_fail %12 : $Builtin.Int1 // id: %13
%14 = unchecked_ref_bit_cast %2 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %15
%15 = ref_to_raw_pointer %14 : $Builtin.NativeObject to $Builtin.RawPointer // user: %16
%16 = struct $UnsafePointer<()> (%15 : $Builtin.RawPointer) // user: %17
%17 = apply %1(%16) : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %19
release_value %2 : $Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %18
%19 = struct_extract %17 : $UInt, #UInt.value // user: %59
%20 = metatype $@thick HeapObject.Type // user: %21
%21 = apply %4<HeapObject>(%20) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %26
%22 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %24, %48
%23 = metatype $@thick _ArrayBody.Type // users: %24, %42
%24 = apply %22<_ArrayBody>(%23) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %26, %35
%25 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %26, %43, %49
%26 = apply %25(%21, %24, %3) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %27, %28
%27 = tuple_extract %26 : $(Builtin.Word, Builtin.Int1), 0 // user: %33
%28 = tuple_extract %26 : $(Builtin.Word, Builtin.Int1), 1 // user: %29
cond_fail %28 : $Builtin.Int1 // id: %29
%30 = integer_literal $Builtin.Word, 1 // users: %33, %35, %53, %55
%31 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %33, %35, %53, %55, %59
%32 = integer_literal $Builtin.Int1, 0 // users: %33, %35, %53, %55
%33 = apply %31(%27, %30, %32) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %34
%34 = tuple_extract %33 : $(Builtin.Word, Builtin.Int1), 0 // user: %41
%35 = apply %31(%24, %30, %32) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %36
%36 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 0 // user: %39
%37 = integer_literal $Builtin.Word, -1 // users: %39, %57, %70
%38 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %39, %57
%39 = apply %38(%36, %37) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %41
%40 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %41, %58
%41 = apply %40(%34, %39) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %43
%42 = apply %4<_ArrayBody>(%23) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %43
%43 = apply %25(%41, %42, %3) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %44, %45
%44 = tuple_extract %43 : $(Builtin.Word, Builtin.Int1), 0 // user: %49
%45 = tuple_extract %43 : $(Builtin.Word, Builtin.Int1), 1 // user: %46
cond_fail %45 : $Builtin.Int1 // id: %46
%47 = metatype $@thick Int.Type // users: %48, %64
%48 = apply %22<Int>(%47) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %49, %55
%49 = apply %25(%44, %48, %3) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %50, %51
%50 = tuple_extract %49 : $(Builtin.Word, Builtin.Int1), 0 // user: %53
%51 = tuple_extract %49 : $(Builtin.Word, Builtin.Int1), 1 // user: %52
cond_fail %51 : $Builtin.Int1 // id: %52
%53 = apply %31(%50, %30, %32) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %54
%54 = tuple_extract %53 : $(Builtin.Word, Builtin.Int1), 0 // user: %58
%55 = apply %31(%48, %30, %32) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %56
%56 = tuple_extract %55 : $(Builtin.Word, Builtin.Int1), 0 // user: %57
%57 = apply %38(%56, %37) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %58
%58 = apply %40(%54, %57) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %59
%59 = apply %31(%19, %58, %3) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %60, %61
%60 = tuple_extract %59 : $(Builtin.Word, Builtin.Int1), 0 // users: %69, %75
%61 = tuple_extract %59 : $(Builtin.Word, Builtin.Int1), 1 // user: %62
cond_fail %61 : $Builtin.Int1 // id: %62
%63 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %64
%64 = apply %63<Int>(%47) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %66, %70, %75
%65 = integer_literal $Builtin.Word, 0 // user: %66
%66 = apply %9(%64, %65) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %67
cond_fail %66 : $Builtin.Int1 // id: %67
%68 = integer_literal $Builtin.Word, -9223372036854775808 // user: %69
%69 = apply %9(%60, %68) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %72
%70 = apply %9(%64, %37) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %72
%71 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %72
%72 = apply %71(%69, %70) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %73
cond_fail %72 : $Builtin.Int1 // id: %73
%74 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %75
%75 = apply %74(%60, %64) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %76
%76 = struct $Int (%75 : $Builtin.Word) // user: %77
return %76 : $Int // id: %77
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._allocatedSize <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._allocatedSize <A, B>(Swift.HeapBuffer<A, B>)() -> Swift.Int : $@cc(method) @thin (@owned HeapBuffer<_ArrayBody, Int>) -> Int {
bb0(%0 : $HeapBuffer<_ArrayBody, Int>):
// function_ref malloc_size
%1 = function_ref @malloc_size : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %17
%2 = struct_extract %0 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %14, %18
%3 = integer_literal $Builtin.Int1, -1 // user: %12
%4 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %6, %8
%5 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %6
%6 = apply %4<HeapBufferStorage<_ArrayBody, Int>?>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %10
%7 = metatype $@thick Builtin.NativeObject.Type // user: %8
%8 = apply %4<Builtin.NativeObject>(%7) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %10
%9 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %10
%10 = apply %9(%6, %8) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %12
%11 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %12
%12 = apply %11(%10, %3) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %13
cond_fail %12 : $Builtin.Int1 // id: %13
%14 = unchecked_ref_bit_cast %2 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %15
%15 = ref_to_raw_pointer %14 : $Builtin.NativeObject to $Builtin.RawPointer // user: %16
%16 = struct $UnsafePointer<()> (%15 : $Builtin.RawPointer) // user: %17
%17 = apply %1(%16) : $@cc(cdecl) @thin (UnsafePointer<()>) -> UInt // user: %19
release_value %2 : $Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %18
%19 = struct_extract %17 : $UInt, #UInt.value // user: %20
%20 = struct $Int (%19 : $Builtin.Word) // user: %21
return %20 : $Int // id: %21
}
// specialization <Swift.Int> of Swift.strideof <A>(A.Type) -> Swift.Int
sil shared [transparent] specialization <Swift.Int> of Swift.strideof <A>(A.Type) -> Swift.Int : $@thin (@thick Int.Type) -> Int {
bb0(%0 : $@thick Int.Type):
%1 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %3
%2 = metatype $@thick Int.Type // user: %3
%3 = apply %1<Int>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %4
%4 = struct $Int (%3 : $Builtin.Word) // user: %5
return %4 : $Int // id: %5
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer.value.setter : A
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer.value.setter : A : $@cc(method) @thin (@in _ArrayBody, @owned HeapBuffer<_ArrayBody, Int>) -> () {
bb0(%0 : $*_ArrayBody, %1 : $HeapBuffer<_ArrayBody, Int>):
%2 = load %0 : $*_ArrayBody // user: %47
%3 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %5, %29, %31
%4 = metatype $@thick HeapObject.Type // user: %5
%5 = apply %3<HeapObject>(%4) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %11
%6 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %8
%7 = metatype $@thick _ArrayBody.Type // user: %8
%8 = apply %6<_ArrayBody>(%7) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %11, %20
%9 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %11
%10 = integer_literal $Builtin.Int1, -1 // users: %11, %35
%11 = apply %9(%5, %8, %10) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %12, %13
%12 = tuple_extract %11 : $(Builtin.Word, Builtin.Int1), 0 // user: %18
%13 = tuple_extract %11 : $(Builtin.Word, Builtin.Int1), 1 // user: %14
cond_fail %13 : $Builtin.Int1 // id: %14
%15 = integer_literal $Builtin.Word, 1 // users: %18, %20
%16 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %18, %20
%17 = integer_literal $Builtin.Int1, 0 // users: %18, %20, %43
%18 = apply %16(%12, %15, %17) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %19
%19 = tuple_extract %18 : $(Builtin.Word, Builtin.Int1), 0 // user: %26
%20 = apply %16(%8, %15, %17) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %21
%21 = tuple_extract %20 : $(Builtin.Word, Builtin.Int1), 0 // user: %24
%22 = integer_literal $Builtin.Word, -1 // user: %24
%23 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %24
%24 = apply %23(%21, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %26
%25 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %26
%26 = apply %25(%19, %24) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %43
%27 = struct_extract %1 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %37, %48
%28 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %29
%29 = apply %3<HeapBufferStorage<_ArrayBody, Int>?>(%28) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %33
%30 = metatype $@thick Builtin.NativeObject.Type // user: %31
%31 = apply %3<Builtin.NativeObject>(%30) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %33
%32 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %33
%33 = apply %32(%29, %31) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %35
%34 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %35
%35 = apply %34(%33, %10) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %36
cond_fail %35 : $Builtin.Int1 // id: %36
%37 = unchecked_ref_bit_cast %27 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %38
%38 = ref_to_raw_pointer %37 : $Builtin.NativeObject to $Builtin.RawPointer // user: %45
%39 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %41
%40 = metatype $@thick Int8.Type // user: %41
%41 = apply %39<Int8>(%40) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %43
%42 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %43
%43 = apply %42(%26, %41, %17) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %44
%44 = tuple_extract %43 : $(Builtin.Word, Builtin.Int1), 0 // user: %45
%45 = index_raw_pointer %38 : $Builtin.RawPointer, %44 : $Builtin.Word // user: %46
%46 = pointer_to_address %45 : $Builtin.RawPointer to $*_ArrayBody // user: %47
store %2 to %46 : $*_ArrayBody // id: %47
release_value %27 : $Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %48
%49 = tuple () // user: %50
return %49 : $() // id: %50
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._value.getter : Swift.UnsafeMutablePointer<A>
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._value.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin (@owned HeapBuffer<_ArrayBody, Int>) -> UnsafeMutablePointer<_ArrayBody> {
bb0(%0 : $HeapBuffer<_ArrayBody, Int>):
%1 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %3, %27, %29
%2 = metatype $@thick HeapObject.Type // user: %3
%3 = apply %1<HeapObject>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %9
%4 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %6
%5 = metatype $@thick _ArrayBody.Type // user: %6
%6 = apply %4<_ArrayBody>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %9, %18
%7 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %9
%8 = integer_literal $Builtin.Int1, -1 // users: %9, %33
%9 = apply %7(%3, %6, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %10, %11
%10 = tuple_extract %9 : $(Builtin.Word, Builtin.Int1), 0 // user: %16
%11 = tuple_extract %9 : $(Builtin.Word, Builtin.Int1), 1 // user: %12
cond_fail %11 : $Builtin.Int1 // id: %12
%13 = integer_literal $Builtin.Word, 1 // users: %16, %18
%14 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %16, %18
%15 = integer_literal $Builtin.Int1, 0 // users: %16, %18, %42
%16 = apply %14(%10, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %17
%17 = tuple_extract %16 : $(Builtin.Word, Builtin.Int1), 0 // user: %24
%18 = apply %14(%6, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %19
%19 = tuple_extract %18 : $(Builtin.Word, Builtin.Int1), 0 // user: %22
%20 = integer_literal $Builtin.Word, -1 // user: %22
%21 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %22
%22 = apply %21(%19, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %24
%23 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %24
%24 = apply %23(%17, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %42
%25 = struct_extract %0 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %35, %37
%26 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %27
%27 = apply %1<HeapBufferStorage<_ArrayBody, Int>?>(%26) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %31
%28 = metatype $@thick Builtin.NativeObject.Type // user: %29
%29 = apply %1<Builtin.NativeObject>(%28) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %31
%30 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %31
%31 = apply %30(%27, %29) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %33
%32 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %33
%33 = apply %32(%31, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %34
cond_fail %33 : $Builtin.Int1 // id: %34
%35 = unchecked_ref_bit_cast %25 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %36
%36 = ref_to_raw_pointer %35 : $Builtin.NativeObject to $Builtin.RawPointer // user: %44
release_value %25 : $Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %37
%38 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %40
%39 = metatype $@thick Int8.Type // user: %40
%40 = apply %38<Int8>(%39) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %42
%41 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %42
%42 = apply %41(%24, %40, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %43
%43 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 0 // user: %44
%44 = index_raw_pointer %36 : $Builtin.RawPointer, %43 : $Builtin.Word // user: %45
%45 = struct $UnsafeMutablePointer<_ArrayBody> (%44 : $Builtin.RawPointer) // user: %46
return %45 : $UnsafeMutablePointer<_ArrayBody> // id: %46
}
// specialization <Swift._ArrayBody> of Swift.UnsafeMutablePointer.memory.setter : A
sil shared [transparent] specialization <Swift._ArrayBody> of Swift.UnsafeMutablePointer.memory.setter : A : $@cc(method) @thin (@in _ArrayBody, UnsafeMutablePointer<_ArrayBody>) -> () {
bb0(%0 : $*_ArrayBody, %1 : $UnsafeMutablePointer<_ArrayBody>):
%2 = load %0 : $*_ArrayBody // user: %5
%3 = struct_extract %1 : $UnsafeMutablePointer<_ArrayBody>, #UnsafeMutablePointer.value // user: %4
%4 = pointer_to_address %3 : $Builtin.RawPointer to $*_ArrayBody // user: %5
store %2 to %4 : $*_ArrayBody // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// specialization <Swift.Int> of Swift._ContiguousArrayBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<A>
sil shared specialization <Swift.Int> of Swift._ContiguousArrayBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<A> : $@cc(method) @thin (@owned _ContiguousArrayBuffer<Int>) -> UnsafeMutablePointer<Int> {
bb0(%0 : $_ContiguousArrayBuffer<Int>):
%1 = struct_extract %0 : $_ContiguousArrayBuffer<Int>, #_ContiguousArrayBuffer._base // user: %2
%2 = struct_extract %1 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %3, %55, %57
%3 = enum_is_tag $Builtin.Int1, %2 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %4
cond_br %3, bb1, bb3 // id: %4
bb1: // Preds: bb0
%5 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %7, %29, %47, %49
%6 = metatype $@thick HeapObject.Type // user: %7
%7 = apply %5<HeapObject>(%6) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %13
%8 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %10, %35
%9 = metatype $@thick _ArrayBody.Type // users: %10, %29
%10 = apply %8<_ArrayBody>(%9) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %13, %22
%11 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %13, %30, %36
%12 = integer_literal $Builtin.Int1, -1 // users: %13, %30, %36, %53
%13 = apply %11(%7, %10, %12) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %14, %15
%14 = tuple_extract %13 : $(Builtin.Word, Builtin.Int1), 0 // user: %20
%15 = tuple_extract %13 : $(Builtin.Word, Builtin.Int1), 1 // user: %16
cond_fail %15 : $Builtin.Int1 // id: %16
%17 = integer_literal $Builtin.Word, 1 // users: %20, %22, %40, %42
%18 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %20, %22, %40, %42
%19 = integer_literal $Builtin.Int1, 0 // users: %20, %22, %40, %42, %63
%20 = apply %18(%14, %17, %19) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %21
%21 = tuple_extract %20 : $(Builtin.Word, Builtin.Int1), 0 // user: %28
%22 = apply %18(%10, %17, %19) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %23
%23 = tuple_extract %22 : $(Builtin.Word, Builtin.Int1), 0 // user: %26
%24 = integer_literal $Builtin.Word, -1 // users: %26, %44
%25 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %26, %44
%26 = apply %25(%23, %24) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %28
%27 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %28, %45
%28 = apply %27(%21, %26) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %30
%29 = apply %5<_ArrayBody>(%9) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %30
%30 = apply %11(%28, %29, %12) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %31, %32
%31 = tuple_extract %30 : $(Builtin.Word, Builtin.Int1), 0 // user: %36
%32 = tuple_extract %30 : $(Builtin.Word, Builtin.Int1), 1 // user: %33
cond_fail %32 : $Builtin.Int1 // id: %33
%34 = metatype $@thick Int.Type // user: %35
%35 = apply %8<Int>(%34) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %36, %42
%36 = apply %11(%31, %35, %12) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %37, %38
%37 = tuple_extract %36 : $(Builtin.Word, Builtin.Int1), 0 // user: %40
%38 = tuple_extract %36 : $(Builtin.Word, Builtin.Int1), 1 // user: %39
cond_fail %38 : $Builtin.Int1 // id: %39
%40 = apply %18(%37, %17, %19) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %41
%41 = tuple_extract %40 : $(Builtin.Word, Builtin.Int1), 0 // user: %45
%42 = apply %18(%35, %17, %19) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %43
%43 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 0 // user: %44
%44 = apply %25(%43, %24) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %45
%45 = apply %27(%41, %44) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %63
%46 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %47
%47 = apply %5<HeapBufferStorage<_ArrayBody, Int>?>(%46) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %51
%48 = metatype $@thick Builtin.NativeObject.Type // user: %49
%49 = apply %5<Builtin.NativeObject>(%48) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %51
%50 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %51
%51 = apply %50(%47, %49) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %53
%52 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %53
%53 = apply %52(%51, %12) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %54
cond_fail %53 : $Builtin.Int1 // id: %54
%55 = unchecked_ref_bit_cast %2 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %56
%56 = ref_to_raw_pointer %55 : $Builtin.NativeObject to $Builtin.RawPointer // user: %65
%57 = unchecked_enum_data %2 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %58
strong_release %57 : $HeapBufferStorage<_ArrayBody, Int> // id: %58
%59 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %61
%60 = metatype $@thick Int8.Type // user: %61
%61 = apply %59<Int8>(%60) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %63
%62 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %63
%63 = apply %62(%45, %61, %19) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %64
%64 = tuple_extract %63 : $(Builtin.Word, Builtin.Int1), 0 // user: %65
%65 = index_raw_pointer %56 : $Builtin.RawPointer, %64 : $Builtin.Word // user: %66
%66 = struct $UnsafeMutablePointer<Int> (%65 : $Builtin.RawPointer) // user: %67
br bb2(%66 : $UnsafeMutablePointer<Int>) // id: %67
bb2(%68 : $UnsafeMutablePointer<Int>): // Preds: bb1 bb3
return %68 : $UnsafeMutablePointer<Int> // id: %69
bb3: // Preds: bb0
%70 = builtin_function_ref "inttoptr_Word" : $@thin (Builtin.Word) -> Builtin.RawPointer // user: %72
%71 = integer_literal $Builtin.Word, 0 // user: %72
%72 = apply %70(%71) : $@thin (Builtin.Word) -> Builtin.RawPointer // user: %73
%73 = struct $UnsafeMutablePointer<Int> (%72 : $Builtin.RawPointer) // user: %74
br bb2(%73 : $UnsafeMutablePointer<Int>) // id: %74
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer.hasStorage.getter : Swift.Bool
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer.hasStorage.getter : Swift.Bool : $@cc(method) @thin (@owned HeapBuffer<_ArrayBody, Int>) -> Bool {
bb0(%0 : $HeapBuffer<_ArrayBody, Int>):
%1 = struct_extract %0 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %2, %3, %4
%2 = enum_is_tag $Builtin.Int1, %1 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %7
switch_enum %1 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, case #Optional.Some!enumelt.1: bb1, case #Optional.None!enumelt: bb3 // id: %3
bb1: // Preds: bb0
%4 = unchecked_enum_data %1 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %5
strong_release %4 : $HeapBufferStorage<_ArrayBody, Int> // id: %5
br bb2 // id: %6
bb2: // Preds: bb1 bb3
%7 = struct $Bool (%2 : $Builtin.Int1) // user: %8
return %7 : $Bool // id: %8
bb3: // Preds: bb0
br bb2 // id: %9
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<B>
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer.baseAddress.getter : Swift.UnsafeMutablePointer<B> : $@cc(method) @thin (@owned HeapBuffer<_ArrayBody, Int>) -> UnsafeMutablePointer<Int> {
bb0(%0 : $HeapBuffer<_ArrayBody, Int>):
%1 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %3, %25, %44, %46
%2 = metatype $@thick HeapObject.Type // user: %3
%3 = apply %1<HeapObject>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %9
%4 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %6, %31
%5 = metatype $@thick _ArrayBody.Type // users: %6, %25
%6 = apply %4<_ArrayBody>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %9, %18
%7 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %9, %26, %32
%8 = integer_literal $Builtin.Int1, -1 // users: %9, %26, %32, %50
%9 = apply %7(%3, %6, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %10, %11
%10 = tuple_extract %9 : $(Builtin.Word, Builtin.Int1), 0 // user: %16
%11 = tuple_extract %9 : $(Builtin.Word, Builtin.Int1), 1 // user: %12
cond_fail %11 : $Builtin.Int1 // id: %12
%13 = integer_literal $Builtin.Word, 1 // users: %16, %18, %36, %38
%14 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %16, %18, %36, %38
%15 = integer_literal $Builtin.Int1, 0 // users: %16, %18, %36, %38, %59
%16 = apply %14(%10, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %17
%17 = tuple_extract %16 : $(Builtin.Word, Builtin.Int1), 0 // user: %24
%18 = apply %14(%6, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %19
%19 = tuple_extract %18 : $(Builtin.Word, Builtin.Int1), 0 // user: %22
%20 = integer_literal $Builtin.Word, -1 // users: %22, %40
%21 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %22, %40
%22 = apply %21(%19, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %24
%23 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %24, %41
%24 = apply %23(%17, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %26
%25 = apply %1<_ArrayBody>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %26
%26 = apply %7(%24, %25, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %27, %28
%27 = tuple_extract %26 : $(Builtin.Word, Builtin.Int1), 0 // user: %32
%28 = tuple_extract %26 : $(Builtin.Word, Builtin.Int1), 1 // user: %29
cond_fail %28 : $Builtin.Int1 // id: %29
%30 = metatype $@thick Int.Type // user: %31
%31 = apply %4<Int>(%30) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %32, %38
%32 = apply %7(%27, %31, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %33, %34
%33 = tuple_extract %32 : $(Builtin.Word, Builtin.Int1), 0 // user: %36
%34 = tuple_extract %32 : $(Builtin.Word, Builtin.Int1), 1 // user: %35
cond_fail %34 : $Builtin.Int1 // id: %35
%36 = apply %14(%33, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %37
%37 = tuple_extract %36 : $(Builtin.Word, Builtin.Int1), 0 // user: %41
%38 = apply %14(%31, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %39
%39 = tuple_extract %38 : $(Builtin.Word, Builtin.Int1), 0 // user: %40
%40 = apply %21(%39, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %41
%41 = apply %23(%37, %40) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %59
%42 = struct_extract %0 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %52, %54
%43 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %44
%44 = apply %1<HeapBufferStorage<_ArrayBody, Int>?>(%43) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %48
%45 = metatype $@thick Builtin.NativeObject.Type // user: %46
%46 = apply %1<Builtin.NativeObject>(%45) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %48
%47 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %48
%48 = apply %47(%44, %46) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %50
%49 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %50
%50 = apply %49(%48, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %51
cond_fail %50 : $Builtin.Int1 // id: %51
%52 = unchecked_ref_bit_cast %42 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %53
%53 = ref_to_raw_pointer %52 : $Builtin.NativeObject to $Builtin.RawPointer // user: %61
release_value %42 : $Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %54
%55 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %57
%56 = metatype $@thick Int8.Type // user: %57
%57 = apply %55<Int8>(%56) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %59
%58 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %59
%59 = apply %58(%41, %57, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %60
%60 = tuple_extract %59 : $(Builtin.Word, Builtin.Int1), 0 // user: %61
%61 = index_raw_pointer %53 : $Builtin.RawPointer, %60 : $Builtin.Word // user: %62
%62 = struct $UnsafeMutablePointer<Int> (%61 : $Builtin.RawPointer) // user: %63
return %62 : $UnsafeMutablePointer<Int> // id: %63
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._elementOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._elementOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin (@thin HeapBuffer<_ArrayBody, Int>.Type) -> Int {
bb0(%0 : $@thin HeapBuffer<_ArrayBody, Int>.Type):
%1 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %3, %25
%2 = metatype $@thick HeapObject.Type // user: %3
%3 = apply %1<HeapObject>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %9
%4 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %6, %31
%5 = metatype $@thick _ArrayBody.Type // users: %6, %25
%6 = apply %4<_ArrayBody>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %9, %18
%7 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %9, %26, %32
%8 = integer_literal $Builtin.Int1, -1 // users: %9, %26, %32
%9 = apply %7(%3, %6, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %10, %11
%10 = tuple_extract %9 : $(Builtin.Word, Builtin.Int1), 0 // user: %16
%11 = tuple_extract %9 : $(Builtin.Word, Builtin.Int1), 1 // user: %12
cond_fail %11 : $Builtin.Int1 // id: %12
%13 = integer_literal $Builtin.Word, 1 // users: %16, %18, %36, %38
%14 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %16, %18, %36, %38
%15 = integer_literal $Builtin.Int1, 0 // users: %16, %18, %36, %38
%16 = apply %14(%10, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %17
%17 = tuple_extract %16 : $(Builtin.Word, Builtin.Int1), 0 // user: %24
%18 = apply %14(%6, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %19
%19 = tuple_extract %18 : $(Builtin.Word, Builtin.Int1), 0 // user: %22
%20 = integer_literal $Builtin.Word, -1 // users: %22, %40
%21 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %22, %40
%22 = apply %21(%19, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %24
%23 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %24, %41
%24 = apply %23(%17, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %26
%25 = apply %1<_ArrayBody>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %26
%26 = apply %7(%24, %25, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %27, %28
%27 = tuple_extract %26 : $(Builtin.Word, Builtin.Int1), 0 // user: %32
%28 = tuple_extract %26 : $(Builtin.Word, Builtin.Int1), 1 // user: %29
cond_fail %28 : $Builtin.Int1 // id: %29
%30 = metatype $@thick Int.Type // user: %31
%31 = apply %4<Int>(%30) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %32, %38
%32 = apply %7(%27, %31, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %33, %34
%33 = tuple_extract %32 : $(Builtin.Word, Builtin.Int1), 0 // user: %36
%34 = tuple_extract %32 : $(Builtin.Word, Builtin.Int1), 1 // user: %35
cond_fail %34 : $Builtin.Int1 // id: %35
%36 = apply %14(%33, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %37
%37 = tuple_extract %36 : $(Builtin.Word, Builtin.Int1), 0 // user: %41
%38 = apply %14(%31, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %39
%39 = tuple_extract %38 : $(Builtin.Word, Builtin.Int1), 0 // user: %40
%40 = apply %21(%39, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %41
%41 = apply %23(%37, %40) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %42
%42 = struct $Int (%41 : $Builtin.Word) // user: %43
return %42 : $Int // id: %43
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._valueOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._valueOffset <A, B>(Swift.HeapBuffer<A, B>.Type)() -> Swift.Int : $@thin (@thin HeapBuffer<_ArrayBody, Int>.Type) -> Int {
bb0(%0 : $@thin HeapBuffer<_ArrayBody, Int>.Type):
%1 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %3
%2 = metatype $@thick HeapObject.Type // user: %3
%3 = apply %1<HeapObject>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %9
%4 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %6
%5 = metatype $@thick _ArrayBody.Type // user: %6
%6 = apply %4<_ArrayBody>(%5) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %9, %18
%7 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %9
%8 = integer_literal $Builtin.Int1, -1 // user: %9
%9 = apply %7(%3, %6, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %10, %11
%10 = tuple_extract %9 : $(Builtin.Word, Builtin.Int1), 0 // user: %16
%11 = tuple_extract %9 : $(Builtin.Word, Builtin.Int1), 1 // user: %12
cond_fail %11 : $Builtin.Int1 // id: %12
%13 = integer_literal $Builtin.Word, 1 // users: %16, %18
%14 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %16, %18
%15 = integer_literal $Builtin.Int1, 0 // users: %16, %18
%16 = apply %14(%10, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %17
%17 = tuple_extract %16 : $(Builtin.Word, Builtin.Int1), 0 // user: %24
%18 = apply %14(%6, %13, %15) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %19
%19 = tuple_extract %18 : $(Builtin.Word, Builtin.Int1), 0 // user: %22
%20 = integer_literal $Builtin.Word, -1 // user: %22
%21 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %22
%22 = apply %21(%19, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %24
%23 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %24
%24 = apply %23(%17, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %25
%25 = struct $Int (%24 : $Builtin.Word) // user: %26
return %25 : $Int // id: %26
}
// specialization <Swift._ArrayBody> of Swift.alignof <A>(A.Type) -> Swift.Int
sil shared [transparent] specialization <Swift._ArrayBody> of Swift.alignof <A>(A.Type) -> Swift.Int : $@thin (@thick _ArrayBody.Type) -> Int {
bb0(%0 : $@thick _ArrayBody.Type):
%1 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %3
%2 = metatype $@thick _ArrayBody.Type // user: %3
%3 = apply %1<_ArrayBody>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %4
%4 = struct $Int (%3 : $Builtin.Word) // user: %5
return %4 : $Int // id: %5
}
// specialization <Swift.Int> of Swift.alignof <A>(A.Type) -> Swift.Int
sil shared [transparent] specialization <Swift.Int> of Swift.alignof <A>(A.Type) -> Swift.Int : $@thin (@thick Int.Type) -> Int {
bb0(%0 : $@thick Int.Type):
%1 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %3
%2 = metatype $@thick Int.Type // user: %3
%3 = apply %1<Int>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %4
%4 = struct $Int (%3 : $Builtin.Word) // user: %5
return %4 : $Int // id: %5
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._address.getter : Swift.UnsafeMutablePointer<Swift.Int8>
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._address.getter : Swift.UnsafeMutablePointer<Swift.Int8> : $@cc(method) @thin (@owned HeapBuffer<_ArrayBody, Int>) -> UnsafeMutablePointer<Int8> {
bb0(%0 : $HeapBuffer<_ArrayBody, Int>):
%1 = struct_extract %0 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // users: %13, %16
%2 = integer_literal $Builtin.Int1, -1 // user: %11
%3 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %5, %7
%4 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %5
%5 = apply %3<HeapBufferStorage<_ArrayBody, Int>?>(%4) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %9
%6 = metatype $@thick Builtin.NativeObject.Type // user: %7
%7 = apply %3<Builtin.NativeObject>(%6) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %9
%8 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %9
%9 = apply %8(%5, %7) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %11
%10 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %11
%11 = apply %10(%9, %2) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %12
cond_fail %11 : $Builtin.Int1 // id: %12
%13 = unchecked_ref_bit_cast %1 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %14
%14 = ref_to_raw_pointer %13 : $Builtin.NativeObject to $Builtin.RawPointer // user: %15
%15 = struct $UnsafeMutablePointer<Int8> (%14 : $Builtin.RawPointer) // user: %17
release_value %1 : $Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %16
return %15 : $UnsafeMutablePointer<Int8> // id: %17
}
// specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._nativeObject.getter : Builtin.NativeObject
sil shared specialization <Swift._ArrayBody, Swift.Int> of Swift.HeapBuffer._nativeObject.getter : Builtin.NativeObject : $@cc(method) @thin (@owned HeapBuffer<_ArrayBody, Int>) -> @owned Builtin.NativeObject {
bb0(%0 : $HeapBuffer<_ArrayBody, Int>):
%1 = struct_extract %0 : $HeapBuffer<_ArrayBody, Int>, #HeapBuffer.storage // user: %13
%2 = integer_literal $Builtin.Int1, -1 // user: %11
%3 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %5, %7
%4 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %5
%5 = apply %3<HeapBufferStorage<_ArrayBody, Int>?>(%4) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %9
%6 = metatype $@thick Builtin.NativeObject.Type // user: %7
%7 = apply %3<Builtin.NativeObject>(%6) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %9
%8 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %9
%9 = apply %8(%5, %7) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %11
%10 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %11
%11 = apply %10(%9, %2) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %12
cond_fail %11 : $Builtin.Int1 // id: %12
%13 = unchecked_ref_bit_cast %1 : $Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.NativeObject // user: %14
return %13 : $Builtin.NativeObject // id: %14
}
// specialization <Swift.AnyObject, Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>> of Swift.unsafeBitCast <A, B>(A, B.Type) -> B
sil shared [transparent] specialization <Swift.AnyObject, Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>> of Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin (@out HeapBufferStorage<_ArrayBody, Int>, @in AnyObject, @thick HeapBufferStorage<_ArrayBody, Int>.Type) -> () {
bb0(%0 : $*HeapBufferStorage<_ArrayBody, Int>, %1 : $*AnyObject, %2 : $@thick HeapBufferStorage<_ArrayBody, Int>.Type):
%3 = alloc_stack $AnyObject // users: %5, %21, %25, %28
%4 = load %1 : $*AnyObject // user: %5
store %4 to %3#1 : $*AnyObject // id: %5
%6 = integer_literal $Builtin.Int1, -1 // user: %17
// function_ref Swift.sizeof <A>(A.Type) -> Swift.Int
%7 = function_ref Swift.sizeof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // users: %9, %11
%8 = metatype $@thick AnyObject.Protocol // user: %9
%9 = apply [transparent] %7<AnyObject>(%8) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %13
%10 = metatype $@thick HeapBufferStorage<_ArrayBody, Int>.Type // user: %11
%11 = apply [transparent] %7<HeapBufferStorage<_ArrayBody, Int>>(%10) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %14
%12 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %15
%13 = struct_extract %9 : $Int, #Int.value // user: %15
%14 = struct_extract %11 : $Int, #Int.value // user: %15
%15 = apply %12(%13, %14) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %17
%16 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
%17 = apply %16(%15, %6) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %18
cond_fail %17 : $Builtin.Int1 // id: %18
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A>
%19 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %22
%20 = metatype $@thin UnsafeMutablePointer<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %22
%21 = address_to_pointer %3#1 : $*AnyObject to $Builtin.RawPointer // user: %22
%22 = apply [transparent] %19<HeapBufferStorage<_ArrayBody, Int>>(%21, %20) : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %24
// function_ref Swift.UnsafeMutablePointer.memory.getter : A
%23 = function_ref Swift.UnsafeMutablePointer.memory.getter : A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> () // user: %24
%24 = apply [transparent] %23<HeapBufferStorage<_ArrayBody, Int>>(%0, %22) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> ()
%25 = load %3#1 : $*AnyObject // user: %26
strong_release %25 : $AnyObject // id: %26
%27 = tuple () // user: %29
dealloc_stack %3#0 : $*@local_storage AnyObject // id: %28
return %27 : $() // id: %29
}
// specialization <Swift.Optional<Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>>, Builtin.NativeObject> of Swift.unsafeBitCast <A, B>(A, B.Type) -> B
sil shared [transparent] specialization <Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>?, Builtin.NativeObject> of Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin (@out Builtin.NativeObject, @in Optional<HeapBufferStorage<_ArrayBody, Int>>, @thick Builtin.NativeObject.Type) -> () {
bb0(%0 : $*Builtin.NativeObject, %1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>>, %2 : $@thick Builtin.NativeObject.Type):
%3 = alloc_stack $Optional<HeapBufferStorage<_ArrayBody, Int>> // users: %5, %21, %25, %28
%4 = load %1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %5
store %4 to %3#1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %5
%6 = integer_literal $Builtin.Int1, -1 // user: %17
// function_ref Swift.sizeof <A>(A.Type) -> Swift.Int
%7 = function_ref Swift.sizeof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // users: %9, %11
%8 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %9
%9 = apply [transparent] %7<HeapBufferStorage<_ArrayBody, Int>?>(%8) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %13
%10 = metatype $@thick Builtin.NativeObject.Type // user: %11
%11 = apply [transparent] %7<Builtin.NativeObject>(%10) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %14
%12 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %15
%13 = struct_extract %9 : $Int, #Int.value // user: %15
%14 = struct_extract %11 : $Int, #Int.value // user: %15
%15 = apply %12(%13, %14) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %17
%16 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
%17 = apply %16(%15, %6) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %18
cond_fail %17 : $Builtin.Int1 // id: %18
// function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A>
%19 = function_ref Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(Builtin.RawPointer) -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %22
%20 = metatype $@thin UnsafeMutablePointer<Builtin.NativeObject>.Type // user: %22
%21 = address_to_pointer %3#1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> to $Builtin.RawPointer // user: %22
%22 = apply [transparent] %19<Builtin.NativeObject>(%21, %20) : $@thin <τ_0_0> (Builtin.RawPointer, @thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %24
// function_ref Swift.UnsafeMutablePointer.memory.getter : A
%23 = function_ref Swift.UnsafeMutablePointer.memory.getter : A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> () // user: %24
%24 = apply [transparent] %23<Builtin.NativeObject>(%0, %22) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafeMutablePointer<τ_0_0>) -> ()
%25 = load %3#1 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %26
release_value %25 : $Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %26
%27 = tuple () // user: %29
dealloc_stack %3#0 : $*@local_storage Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %28
return %27 : $() // id: %29
}
// specialization <Swift._ArrayBody, Swift.Int8> of Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafeMutablePointer<A>
sil shared [transparent] specialization <Swift._ArrayBody, Swift.Int8> of Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafeMutablePointer<A> : $@thin (UnsafeMutablePointer<Int8>, @thin UnsafeMutablePointer<_ArrayBody>.Type) -> UnsafeMutablePointer<_ArrayBody> {
bb0(%0 : $UnsafeMutablePointer<Int8>, %1 : $@thin UnsafeMutablePointer<_ArrayBody>.Type):
%2 = struct_extract %0 : $UnsafeMutablePointer<Int8>, #UnsafeMutablePointer.value // user: %3
%3 = struct $UnsafeMutablePointer<_ArrayBody> (%2 : $Builtin.RawPointer) // user: %4
return %3 : $UnsafeMutablePointer<_ArrayBody> // id: %4
}
// specialization <Swift.Int, Swift.Int8> of Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafeMutablePointer<A>
sil shared [transparent] specialization <Swift.Int, Swift.Int8> of Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)<B>(Swift.UnsafeMutablePointer<B>) -> Swift.UnsafeMutablePointer<A> : $@thin (UnsafeMutablePointer<Int8>, @thin UnsafeMutablePointer<Int>.Type) -> UnsafeMutablePointer<Int> {
bb0(%0 : $UnsafeMutablePointer<Int8>, %1 : $@thin UnsafeMutablePointer<Int>.Type):
%2 = struct_extract %0 : $UnsafeMutablePointer<Int8>, #UnsafeMutablePointer.value // user: %3
%3 = struct $UnsafeMutablePointer<Int> (%2 : $Builtin.RawPointer) // user: %4
return %3 : $UnsafeMutablePointer<Int> // id: %4
}
// specialization <Swift.Int> of Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(nilLiteral : ()) -> Swift.UnsafeMutablePointer<A>
sil shared [transparent] specialization <Swift.Int> of Swift.UnsafeMutablePointer.init <A>(Swift.UnsafeMutablePointer<A>.Type)(nilLiteral : ()) -> Swift.UnsafeMutablePointer<A> : $@thin (@thin UnsafeMutablePointer<Int>.Type) -> UnsafeMutablePointer<Int> {
bb0(%0 : $@thin UnsafeMutablePointer<Int>.Type):
// function_ref Swift.UnsafeMutablePointer.null <A>(Swift.UnsafeMutablePointer<A>.Type)() -> Swift.UnsafeMutablePointer<A>
%1 = function_ref Swift.UnsafeMutablePointer.null <A>(Swift.UnsafeMutablePointer<A>.Type)() -> Swift.UnsafeMutablePointer<A> : $@thin <τ_0_0> (@thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %3
%2 = metatype $@thin UnsafeMutablePointer<Int>.Type // user: %3
%3 = apply [transparent] %1<Int>(%2) : $@thin <τ_0_0> (@thin UnsafeMutablePointer<τ_0_0>.Type) -> UnsafeMutablePointer<τ_0_0> // user: %4
return %3 : $UnsafeMutablePointer<Int> // id: %4
}
// specialization <Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift.CollectionType, Swift.UnsafeBufferPointerGenerator<Swift.Int> with Swift.UnsafeBufferPointerGenerator<Swift.Int> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift._expectEnd <A : Swift.CollectionType>(A.Index, A) -> ()
sil shared specialization <Swift.UnsafeBufferPointer<Swift.Int> with Swift.UnsafeBufferPointer<Swift.Int> : Swift.CollectionType, Swift.UnsafeBufferPointerGenerator<Swift.Int> with Swift.UnsafeBufferPointerGenerator<Swift.Int> : Swift.GeneratorType, Swift.Int, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift._expectEnd <A : Swift.CollectionType>(A.Index, A) -> () : $@thin (@in Int, @in UnsafeBufferPointer<Int>) -> () {
bb0(%0 : $*Int, %1 : $*UnsafeBufferPointer<Int>):
%2 = tuple () // user: %3
return %2 : $() // id: %3
}
// specialization <Swift.Int> of Swift.UnsafeMutablePointer.initialize <A>(Swift.UnsafeMutablePointer<A>)(A) -> ()
sil shared specialization <Swift.Int> of Swift.UnsafeMutablePointer.initialize <A>(Swift.UnsafeMutablePointer<A>)(A) -> () : $@cc(method) @thin (@in Int, UnsafeMutablePointer<Int>) -> () {
bb0(%0 : $*Int, %1 : $UnsafeMutablePointer<Int>):
%2 = load %0 : $*Int // user: %5
%3 = struct_extract %1 : $UnsafeMutablePointer<Int>, #UnsafeMutablePointer.value // user: %4
%4 = pointer_to_address %3 : $Builtin.RawPointer to $*Int // user: %5
store %2 to %4 : $*Int // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// specialization <Swift._ArrayBody> of Swift.UnsafeMutablePointer.initialize <A>(Swift.UnsafeMutablePointer<A>)(A) -> ()
sil shared specialization <Swift._ArrayBody> of Swift.UnsafeMutablePointer.initialize <A>(Swift.UnsafeMutablePointer<A>)(A) -> () : $@cc(method) @thin (@in _ArrayBody, UnsafeMutablePointer<_ArrayBody>) -> () {
bb0(%0 : $*_ArrayBody, %1 : $UnsafeMutablePointer<_ArrayBody>):
%2 = load %0 : $*_ArrayBody // user: %5
%3 = struct_extract %1 : $UnsafeMutablePointer<_ArrayBody>, #UnsafeMutablePointer.value // user: %4
%4 = pointer_to_address %3 : $Builtin.RawPointer to $*_ArrayBody // user: %5
store %2 to %4 : $*_ArrayBody // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// specialization <Swift._ArrayBody> of Swift.sizeof <A>(A.Type) -> Swift.Int
sil shared [transparent] specialization <Swift._ArrayBody> of Swift.sizeof <A>(A.Type) -> Swift.Int : $@thin (@thick _ArrayBody.Type) -> Int {
bb0(%0 : $@thick _ArrayBody.Type):
%1 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %3
%2 = metatype $@thick _ArrayBody.Type // user: %3
%3 = apply %1<_ArrayBody>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %4
%4 = struct $Int (%3 : $Builtin.Word) // user: %5
return %4 : $Int // id: %5
}
// specialization <Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> with Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of protocol witness for Swift._CollectionType.startIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.LazyForwardCollection : Swift._CollectionType
sil shared specialization <Swift.MapCollectionView<[Swift.Int], Swift.Bool> with Swift.MapCollectionView<[Swift.Int], Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of protocol witness for Swift._CollectionType.startIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.LazyForwardCollection : Swift._CollectionType : $@cc(witness_method) @thin (@out Int, @inout LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>) -> () {
bb0(%0 : $*Int, %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>):
%2 = integer_literal $Builtin.Word, 0 // user: %3
%3 = struct $Int (%2 : $Builtin.Word) // user: %4
store %3 to %0 : $*Int // id: %4
%5 = tuple () // user: %6
return %5 : $() // id: %6
}
// specialization <Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> with Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.LazyForwardCollection.startIndex.getter : A.Index
sil shared specialization <Swift.MapCollectionView<[Swift.Int], Swift.Bool> with Swift.MapCollectionView<[Swift.Int], Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.LazyForwardCollection.startIndex.getter : A.Index : $@cc(method) @thin (@out Int, @in LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>) -> () {
bb0(%0 : $*Int, %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>):
%2 = struct_element_addr %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, #LazyForwardCollection._base // users: %3, %4
%3 = struct_element_addr %2 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._base // user: %8
%4 = struct_element_addr %2 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._transform // user: %11
%5 = integer_literal $Builtin.Word, 0 // user: %6
%6 = struct $Int (%5 : $Builtin.Word) // user: %7
store %6 to %0 : $*Int // id: %7
%8 = struct_element_addr %3 : $*Array<Int>, #Array._buffer // user: %9
%9 = struct_element_addr %8 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // user: %10
%10 = load %9 : $*Optional<Builtin.NativeObject> // user: %12
%11 = load %4 : $*@callee_owned (@out Bool, @in Int) -> () // user: %13
release_value %10 : $Optional<Builtin.NativeObject> // id: %12
strong_release %11 : $@callee_owned (@out Bool, @in Int) -> () // id: %13
%14 = tuple () // user: %15
return %14 : $() // id: %15
}
// specialization <Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> with Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of protocol witness for Swift._CollectionType.endIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.LazyForwardCollection : Swift._CollectionType
sil shared specialization <Swift.MapCollectionView<[Swift.Int], Swift.Bool> with Swift.MapCollectionView<[Swift.Int], Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of protocol witness for Swift._CollectionType.endIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.LazyForwardCollection : Swift._CollectionType : $@cc(witness_method) @thin (@out Int, @inout LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>) -> () {
bb0(%0 : $*Int, %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>):
%2 = struct_element_addr %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, #LazyForwardCollection._base // user: %3
%3 = struct_element_addr %2 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._base // user: %4
%4 = struct_element_addr %3 : $*Array<Int>, #Array._buffer // user: %5
%5 = struct_element_addr %4 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // user: %6
%6 = load %5 : $*Optional<Builtin.NativeObject> // users: %23, %55, %75
%7 = integer_literal $Builtin.Int1, -1 // users: %16, %21, %32, %53
%8 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %10, %12, %19, %27, %49, %51
%9 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %10
%10 = apply %8<Builtin.NativeObject?>(%9) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %14
%11 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %12
%12 = apply %8<_ContiguousArrayStorage<Int>?>(%11) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %14, %20
%13 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %14, %20, %52
%14 = apply %13(%10, %12) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %16
%15 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %16, %21, %53
%16 = apply %15(%14, %7) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
cond_fail %16 : $Builtin.Int1 // id: %17
%18 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %19
%19 = apply %8<HeapBuffer<_ArrayBody, Int>>(%18) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %20
%20 = apply %13(%12, %19) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %21
%21 = apply %15(%20, %7) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %22
cond_fail %21 : $Builtin.Int1 // id: %22
%23 = unchecked_ref_bit_cast %6 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %24
%24 = enum_is_tag $Builtin.Int1, %23 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %25
cond_br %24, bb1, bb3 // id: %25
bb1: // Preds: bb0
%26 = metatype $@thick HeapObject.Type // user: %27
%27 = apply %8<HeapObject>(%26) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %32
%28 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %30
%29 = metatype $@thick _ArrayBody.Type // user: %30
%30 = apply %28<_ArrayBody>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %32, %41
%31 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %32
%32 = apply %31(%27, %30, %7) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %33, %34
%33 = tuple_extract %32 : $(Builtin.Word, Builtin.Int1), 0 // user: %39
%34 = tuple_extract %32 : $(Builtin.Word, Builtin.Int1), 1 // user: %35
cond_fail %34 : $Builtin.Int1 // id: %35
%36 = integer_literal $Builtin.Word, 1 // users: %39, %41
%37 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %39, %41
%38 = integer_literal $Builtin.Int1, 0 // users: %39, %41, %61
%39 = apply %37(%33, %36, %38) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %40
%40 = tuple_extract %39 : $(Builtin.Word, Builtin.Int1), 0 // user: %47
%41 = apply %37(%30, %36, %38) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %42
%42 = tuple_extract %41 : $(Builtin.Word, Builtin.Int1), 0 // user: %45
%43 = integer_literal $Builtin.Word, -1 // user: %45
%44 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %45
%45 = apply %44(%42, %43) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %47
%46 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %47
%47 = apply %46(%40, %45) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %61
%48 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %49
%49 = apply %8<HeapBufferStorage<_ArrayBody, Int>?>(%48) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %52
%50 = metatype $@thick Builtin.NativeObject.Type // user: %51
%51 = apply %8<Builtin.NativeObject>(%50) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %52
%52 = apply %13(%49, %51) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %53
%53 = apply %15(%52, %7) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %54
cond_fail %53 : $Builtin.Int1 // id: %54
%55 = unchecked_ref_bit_cast %6 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %56
%56 = ref_to_raw_pointer %55 : $Builtin.NativeObject to $Builtin.RawPointer // user: %63
%57 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %59
%58 = metatype $@thick Int8.Type // user: %59
%59 = apply %57<Int8>(%58) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %61
%60 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %61
%61 = apply %60(%47, %59, %38) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %62
%62 = tuple_extract %61 : $(Builtin.Word, Builtin.Int1), 0 // user: %63
%63 = index_raw_pointer %56 : $Builtin.RawPointer, %62 : $Builtin.Word // user: %64
%64 = pointer_to_address %63 : $Builtin.RawPointer to $*_ArrayBody // user: %65
%65 = struct_element_addr %64 : $*_ArrayBody, #_ArrayBody.count // user: %66
%66 = struct_element_addr %65 : $*Int, #Int.value // user: %67
%67 = load %66 : $*Builtin.Word // user: %68
br bb2(%67 : $Builtin.Word) // id: %68
bb2(%69 : $Builtin.Word): // Preds: bb1 bb3
%70 = struct $Int (%69 : $Builtin.Word) // user: %71
store %70 to %0 : $*Int // id: %71
%72 = tuple () // user: %73
return %72 : $() // id: %73
bb3: // Preds: bb0
%74 = integer_literal $Builtin.Word, 0 // user: %76
retain_value %6 : $Optional<Builtin.NativeObject> // id: %75
br bb2(%74 : $Builtin.Word) // id: %76
}
// specialization <Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> with Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.LazyForwardCollection.endIndex.getter : A.Index
sil shared specialization <Swift.MapCollectionView<[Swift.Int], Swift.Bool> with Swift.MapCollectionView<[Swift.Int], Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.LazyForwardCollection.endIndex.getter : A.Index : $@cc(method) @thin (@out Int, @in LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>) -> () {
bb0(%0 : $*Int, %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>):
%2 = struct_element_addr %1 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, #LazyForwardCollection._base // users: %3, %7
%3 = struct_element_addr %2 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._base // user: %4
%4 = struct_element_addr %3 : $*Array<Int>, #Array._buffer // user: %5
%5 = struct_element_addr %4 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // users: %6, %73
%6 = load %5 : $*Optional<Builtin.NativeObject> // users: %24, %56, %80
%7 = struct_element_addr %2 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._transform // user: %74
%8 = integer_literal $Builtin.Int1, -1 // users: %17, %22, %33, %54
%9 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %11, %13, %20, %28, %50, %52
%10 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %11
%11 = apply %9<Builtin.NativeObject?>(%10) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %15
%12 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %13
%13 = apply %9<_ContiguousArrayStorage<Int>?>(%12) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %15, %21
%14 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %15, %21, %53
%15 = apply %14(%11, %13) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %17
%16 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %17, %22, %54
%17 = apply %16(%15, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %18
cond_fail %17 : $Builtin.Int1 // id: %18
%19 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %20
%20 = apply %9<HeapBuffer<_ArrayBody, Int>>(%19) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %21
%21 = apply %14(%13, %20) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %22
%22 = apply %16(%21, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %23
cond_fail %22 : $Builtin.Int1 // id: %23
%24 = unchecked_ref_bit_cast %6 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %25
%25 = enum_is_tag $Builtin.Int1, %24 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %26
cond_br %25, bb1, bb3 // id: %26
bb1: // Preds: bb0
%27 = metatype $@thick HeapObject.Type // user: %28
%28 = apply %9<HeapObject>(%27) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %33
%29 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %31
%30 = metatype $@thick _ArrayBody.Type // user: %31
%31 = apply %29<_ArrayBody>(%30) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %33, %42
%32 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %33
%33 = apply %32(%28, %31, %8) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %34, %35
%34 = tuple_extract %33 : $(Builtin.Word, Builtin.Int1), 0 // user: %40
%35 = tuple_extract %33 : $(Builtin.Word, Builtin.Int1), 1 // user: %36
cond_fail %35 : $Builtin.Int1 // id: %36
%37 = integer_literal $Builtin.Word, 1 // users: %40, %42
%38 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %40, %42
%39 = integer_literal $Builtin.Int1, 0 // users: %40, %42, %62
%40 = apply %38(%34, %37, %39) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %41
%41 = tuple_extract %40 : $(Builtin.Word, Builtin.Int1), 0 // user: %48
%42 = apply %38(%31, %37, %39) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %43
%43 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 0 // user: %46
%44 = integer_literal $Builtin.Word, -1 // user: %46
%45 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %46
%46 = apply %45(%43, %44) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %48
%47 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %48
%48 = apply %47(%41, %46) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %62
%49 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %50
%50 = apply %9<HeapBufferStorage<_ArrayBody, Int>?>(%49) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %53
%51 = metatype $@thick Builtin.NativeObject.Type // user: %52
%52 = apply %9<Builtin.NativeObject>(%51) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %53
%53 = apply %14(%50, %52) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %54
%54 = apply %16(%53, %8) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %55
cond_fail %54 : $Builtin.Int1 // id: %55
%56 = unchecked_ref_bit_cast %6 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %57
%57 = ref_to_raw_pointer %56 : $Builtin.NativeObject to $Builtin.RawPointer // user: %64
%58 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %60
%59 = metatype $@thick Int8.Type // user: %60
%60 = apply %58<Int8>(%59) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %62
%61 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %62
%62 = apply %61(%48, %60, %39) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %63
%63 = tuple_extract %62 : $(Builtin.Word, Builtin.Int1), 0 // user: %64
%64 = index_raw_pointer %57 : $Builtin.RawPointer, %63 : $Builtin.Word // user: %65
%65 = pointer_to_address %64 : $Builtin.RawPointer to $*_ArrayBody // user: %66
%66 = struct_element_addr %65 : $*_ArrayBody, #_ArrayBody.count // user: %67
%67 = struct_element_addr %66 : $*Int, #Int.value // user: %68
%68 = load %67 : $*Builtin.Word // user: %69
br bb2(%68 : $Builtin.Word) // id: %69
bb2(%70 : $Builtin.Word): // Preds: bb1 bb3
%71 = struct $Int (%70 : $Builtin.Word) // user: %72
store %71 to %0 : $*Int // id: %72
%73 = load %5 : $*Optional<Builtin.NativeObject> // user: %75
%74 = load %7 : $*@callee_owned (@out Bool, @in Int) -> () // user: %76
release_value %73 : $Optional<Builtin.NativeObject> // id: %75
strong_release %74 : $@callee_owned (@out Bool, @in Int) -> () // id: %76
%77 = tuple () // user: %78
return %77 : $() // id: %78
bb3: // Preds: bb0
%79 = integer_literal $Builtin.Word, 0 // user: %81
retain_value %6 : $Optional<Builtin.NativeObject> // id: %80
br bb2(%79 : $Builtin.Word) // id: %81
}
// protocol witness for Swift._CollectionType.startIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.MapCollectionView : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.startIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.MapCollectionView : Swift._CollectionType : $@cc(witness_method) @thin <Base, T where Base : CollectionType, Base.Generator : GeneratorType, Base.Index : ForwardIndexType, Base.Index.Distance : _SignedIntegerType, Base.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out MapCollectionView<Base, T>.Index, @inout MapCollectionView<Base, T>) -> () {
bb0(%0 : $*Base.Index, %1 : $*MapCollectionView<Base, T>):
%2 = alloc_stack $MapCollectionView<Base, T> // users: %3, %5, %6
copy_addr %1 to [initialization] %2#1 : $*MapCollectionView<Base, T> // id: %3
// function_ref Swift.MapCollectionView.startIndex.getter : A.Index
%4 = function_ref Swift.MapCollectionView.startIndex.getter : A.Index : $@cc(method) @thin <τ_0_0, τ_0_1 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @in MapCollectionView<τ_0_0, τ_0_1>) -> () // user: %5
%5 = apply %4<Base, T, Base.Generator, Base.Generator.Element, Base.Index, Base.Index.Distance, Base.Index.Distance.IntegerLiteralType, Base.Index._DisabledRangeIndex, Base._Element>(%0, %2#1) : $@cc(method) @thin <τ_0_0, τ_0_1 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @in MapCollectionView<τ_0_0, τ_0_1>) -> () // user: %7
dealloc_stack %2#0 : $*@local_storage MapCollectionView<Base, T> // id: %6
return %5 : $() // id: %7
}
// protocol witness for Swift._CollectionType.endIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.MapCollectionView : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.endIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.MapCollectionView : Swift._CollectionType : $@cc(witness_method) @thin <Base, T where Base : CollectionType, Base.Generator : GeneratorType, Base.Index : ForwardIndexType, Base.Index.Distance : _SignedIntegerType, Base.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out MapCollectionView<Base, T>.Index, @inout MapCollectionView<Base, T>) -> () {
bb0(%0 : $*Base.Index, %1 : $*MapCollectionView<Base, T>):
%2 = alloc_stack $MapCollectionView<Base, T> // users: %3, %5, %6
copy_addr %1 to [initialization] %2#1 : $*MapCollectionView<Base, T> // id: %3
// function_ref Swift.MapCollectionView.endIndex.getter : A.Index
%4 = function_ref Swift.MapCollectionView.endIndex.getter : A.Index : $@cc(method) @thin <τ_0_0, τ_0_1 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @in MapCollectionView<τ_0_0, τ_0_1>) -> () // user: %5
%5 = apply %4<Base, T, Base.Generator, Base.Generator.Element, Base.Index, Base.Index.Distance, Base.Index.Distance.IntegerLiteralType, Base.Index._DisabledRangeIndex, Base._Element>(%0, %2#1) : $@cc(method) @thin <τ_0_0, τ_0_1 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @in MapCollectionView<τ_0_0, τ_0_1>) -> () // user: %7
dealloc_stack %2#0 : $*@local_storage MapCollectionView<Base, T> // id: %6
return %5 : $() // id: %7
}
// protocol witness for Swift._CollectionType.subscript.getter (Swift._CollectionType.Self.Index) -> Swift._CollectionType.Self._Element in conformance Swift.MapCollectionView : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.subscript.getter (Swift._CollectionType.Self.Index) -> Swift._CollectionType.Self._Element in conformance Swift.MapCollectionView : Swift._CollectionType : $@cc(witness_method) @thin <Base, T where Base : CollectionType, Base.Generator : GeneratorType, Base.Index : ForwardIndexType, Base.Index.Distance : _SignedIntegerType, Base.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out MapCollectionView<Base, T>._Element, @in MapCollectionView<Base, T>.Index, @inout MapCollectionView<Base, T>) -> () {
bb0(%0 : $*T, %1 : $*Base.Index, %2 : $*MapCollectionView<Base, T>):
%3 = alloc_stack $MapCollectionView<Base, T> // users: %4, %6, %7
copy_addr %2 to [initialization] %3#1 : $*MapCollectionView<Base, T> // id: %4
// function_ref Swift.MapCollectionView.subscript.getter (A.Index) -> B
%5 = function_ref Swift.MapCollectionView.subscript.getter (A.Index) -> B : $@cc(method) @thin <τ_0_0, τ_0_1 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_1, @in τ_0_0.Index, @in MapCollectionView<τ_0_0, τ_0_1>) -> () // user: %6
%6 = apply %5<Base, T, Base.Generator, Base.Generator.Element, Base.Index, Base.Index.Distance, Base.Index.Distance.IntegerLiteralType, Base.Index._DisabledRangeIndex, Base._Element>(%0, %1, %3#1) : $@cc(method) @thin <τ_0_0, τ_0_1 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_1, @in τ_0_0.Index, @in MapCollectionView<τ_0_0, τ_0_1>) -> () // user: %8
dealloc_stack %3#0 : $*@local_storage MapCollectionView<Base, T> // id: %7
return %6 : $() // id: %8
}
// specialization <Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> with Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of protocol witness for Swift.CollectionType.subscript.getter (Swift.CollectionType.Self.Index) -> Swift.CollectionType.Self.Generator.Element in conformance Swift.LazyForwardCollection : Swift.CollectionType
sil shared specialization <Swift.MapCollectionView<[Swift.Int], Swift.Bool> with Swift.MapCollectionView<[Swift.Int], Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of protocol witness for Swift.CollectionType.subscript.getter (Swift.CollectionType.Self.Index) -> Swift.CollectionType.Self.Generator.Element in conformance Swift.LazyForwardCollection : Swift.CollectionType : $@cc(witness_method) @thin (@out Bool, @in Int, @inout LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>) -> () {
bb0(%0 : $*Bool, %1 : $*Int, %2 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>):
%3 = struct_element_addr %2 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, #LazyForwardCollection._base // users: %4, %8
%4 = struct_element_addr %3 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._base // user: %5
%5 = struct_element_addr %4 : $*Array<Int>, #Array._buffer // user: %6
%6 = struct_element_addr %5 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // user: %7
%7 = load %6 : $*Optional<Builtin.NativeObject> // users: %29, %65
%8 = struct_element_addr %3 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._transform // user: %9
%9 = load %8 : $*@callee_owned (@out Bool, @in Int) -> () // users: %118, %119
%10 = struct_element_addr %1 : $*Int, #Int.value // user: %11
%11 = load %10 : $*Builtin.Word // users: %35, %79, %85, %85, %88, %91, %115
%12 = alloc_stack $Int // users: %117, %119, %120
%13 = integer_literal $Builtin.Int1, -1 // users: %22, %27, %31, %42, %63, %82, %86, %92, %95, %101
%14 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %16, %18, %25, %37, %59, %61, %94
%15 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %16
%16 = apply %14<Builtin.NativeObject?>(%15) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %20
%17 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %18
%18 = apply %14<_ContiguousArrayStorage<Int>?>(%17) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %20, %26
%19 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %20, %26, %62
%20 = apply %19(%16, %18) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %22
%21 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %22, %27, %31, %63, %82, %86, %92
%22 = apply %21(%20, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %23
cond_fail %22 : $Builtin.Int1 // id: %23
%24 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %25
%25 = apply %14<HeapBuffer<_ArrayBody, Int>>(%24) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %26
%26 = apply %19(%18, %25) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %27
%27 = apply %21(%26, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %28
cond_fail %27 : $Builtin.Int1 // id: %28
%29 = unchecked_ref_bit_cast %7 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %30
%30 = enum_is_tag $Builtin.Int1, %29 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %31
%31 = apply %21(%30, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %32
cond_fail %31 : $Builtin.Int1 // id: %32
%33 = integer_literal $Builtin.Word, 0 // user: %35
%34 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %35
%35 = apply %34(%11, %33) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %81
%36 = metatype $@thick HeapObject.Type // user: %37
%37 = apply %14<HeapObject>(%36) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %42
%38 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %40, %100
%39 = metatype $@thick _ArrayBody.Type // users: %40, %94
%40 = apply %38<_ArrayBody>(%39) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %42, %51
%41 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %42, %88, %95, %101
%42 = apply %41(%37, %40, %13) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %43, %44
%43 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 0 // user: %49
%44 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 1 // user: %45
cond_fail %44 : $Builtin.Int1 // id: %45
%46 = integer_literal $Builtin.Word, 1 // users: %49, %51, %88, %105, %107
%47 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %49, %51, %105, %107
%48 = integer_literal $Builtin.Int1, 0 // users: %49, %51, %71, %88, %105, %107, %111
%49 = apply %47(%43, %46, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %50
%50 = tuple_extract %49 : $(Builtin.Word, Builtin.Int1), 0 // user: %57
%51 = apply %47(%40, %46, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %52
%52 = tuple_extract %51 : $(Builtin.Word, Builtin.Int1), 0 // user: %55
%53 = integer_literal $Builtin.Word, -1 // users: %55, %109
%54 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %55, %109
%55 = apply %54(%52, %53) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %57
%56 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %57, %110
%57 = apply %56(%50, %55) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %71, %95
%58 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %59
%59 = apply %14<HeapBufferStorage<_ArrayBody, Int>?>(%58) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %62
%60 = metatype $@thick Builtin.NativeObject.Type // user: %61
%61 = apply %14<Builtin.NativeObject>(%60) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %62
%62 = apply %19(%59, %61) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %63
%63 = apply %21(%62, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %64
cond_fail %63 : $Builtin.Int1 // id: %64
%65 = unchecked_ref_bit_cast %7 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %66
%66 = ref_to_raw_pointer %65 : $Builtin.NativeObject to $Builtin.RawPointer // users: %73, %113
%67 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %69
%68 = metatype $@thick Int8.Type // user: %69
%69 = apply %67<Int8>(%68) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %71, %111
%70 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %71, %111
%71 = apply %70(%57, %69, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %72
%72 = tuple_extract %71 : $(Builtin.Word, Builtin.Int1), 0 // user: %73
%73 = index_raw_pointer %66 : $Builtin.RawPointer, %72 : $Builtin.Word // user: %74
%74 = pointer_to_address %73 : $Builtin.RawPointer to $*_ArrayBody // user: %75
%75 = struct_element_addr %74 : $*_ArrayBody, #_ArrayBody.count // user: %76
%76 = struct_element_addr %75 : $*Int, #Int.value // user: %77
%77 = load %76 : $*Builtin.Word // user: %79
%78 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %79
%79 = apply %78(%11, %77) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %81
%80 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %81
%81 = apply %80(%35, %79) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %82
%82 = apply %21(%81, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %83
cond_fail %82 : $Builtin.Int1 // id: %83
%84 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %85
%85 = apply %84(%11, %11) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %86
%86 = apply %21(%85, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %87
cond_fail %86 : $Builtin.Int1 // id: %87
%88 = apply %41(%11, %46, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %89
%89 = tuple_extract %88 : $(Builtin.Word, Builtin.Int1), 0 // user: %91
%90 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %91
%91 = apply %90(%89, %11) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %92
%92 = apply %21(%91, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %93
cond_fail %92 : $Builtin.Int1 // id: %93
%94 = apply %14<_ArrayBody>(%39) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %95
%95 = apply %41(%57, %94, %13) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %96, %97
%96 = tuple_extract %95 : $(Builtin.Word, Builtin.Int1), 0 // user: %101
%97 = tuple_extract %95 : $(Builtin.Word, Builtin.Int1), 1 // user: %98
cond_fail %97 : $Builtin.Int1 // id: %98
%99 = metatype $@thick Int.Type // user: %100
%100 = apply %38<Int>(%99) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %101, %107
%101 = apply %41(%96, %100, %13) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %102, %103
%102 = tuple_extract %101 : $(Builtin.Word, Builtin.Int1), 0 // user: %105
%103 = tuple_extract %101 : $(Builtin.Word, Builtin.Int1), 1 // user: %104
cond_fail %103 : $Builtin.Int1 // id: %104
%105 = apply %47(%102, %46, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %106
%106 = tuple_extract %105 : $(Builtin.Word, Builtin.Int1), 0 // user: %110
%107 = apply %47(%100, %46, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %108
%108 = tuple_extract %107 : $(Builtin.Word, Builtin.Int1), 0 // user: %109
%109 = apply %54(%108, %53) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %110
%110 = apply %56(%106, %109) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %111
%111 = apply %70(%110, %69, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %112
%112 = tuple_extract %111 : $(Builtin.Word, Builtin.Int1), 0 // user: %113
%113 = index_raw_pointer %66 : $Builtin.RawPointer, %112 : $Builtin.Word // user: %114
%114 = pointer_to_address %113 : $Builtin.RawPointer to $*Int // user: %115
%115 = index_addr %114 : $*Int, %11 : $Builtin.Word // user: %116
%116 = load %115 : $*Int // user: %117
store %116 to %12#1 : $*Int // id: %117
strong_retain %9 : $@callee_owned (@out Bool, @in Int) -> () // id: %118
%119 = apply %9(%0, %12#1) : $@callee_owned (@out Bool, @in Int) -> ()
dealloc_stack %12#0 : $*@local_storage Int // id: %120
%121 = tuple () // user: %122
return %121 : $() // id: %122
}
// specialization <Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> with Swift.MapCollectionView<Swift.Array<Swift.Int>, Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<Swift.Array<Swift.Int>>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.LazyForwardCollection.subscript.getter (A.Index) -> A.Generator.Element
sil shared specialization <Swift.MapCollectionView<[Swift.Int], Swift.Bool> with Swift.MapCollectionView<[Swift.Int], Swift.Bool> : Swift.CollectionType, Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> with Swift.MapSequenceGenerator<Swift.IndexingGenerator<[Swift.Int]>, Swift.Bool> : Swift.GeneratorType, Swift.Bool, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Bool> of Swift.LazyForwardCollection.subscript.getter (A.Index) -> A.Generator.Element : $@cc(method) @thin (@out Bool, @in Int, @in LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>) -> () {
bb0(%0 : $*Bool, %1 : $*Int, %2 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>):
%3 = struct_element_addr %2 : $*LazyForwardCollection<MapCollectionView<Array<Int>, Bool>>, #LazyForwardCollection._base // users: %6, %10
%4 = struct_element_addr %1 : $*Int, #Int.value // user: %5
%5 = load %4 : $*Builtin.Word // users: %35, %79, %85, %85, %88, %91, %115
%6 = struct_element_addr %3 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._base // user: %7
%7 = struct_element_addr %6 : $*Array<Int>, #Array._buffer // user: %8
%8 = struct_element_addr %7 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // users: %9, %121
%9 = load %8 : $*Optional<Builtin.NativeObject> // users: %29, %65
%10 = struct_element_addr %3 : $*MapCollectionView<Array<Int>, Bool>, #MapCollectionView._transform // users: %11, %122
%11 = load %10 : $*@callee_owned (@out Bool, @in Int) -> () // users: %118, %119
%12 = alloc_stack $Int // users: %117, %119, %120
%13 = integer_literal $Builtin.Int1, -1 // users: %22, %27, %31, %42, %63, %82, %86, %92, %95, %101
%14 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %16, %18, %25, %37, %59, %61, %94
%15 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %16
%16 = apply %14<Builtin.NativeObject?>(%15) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %20
%17 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %18
%18 = apply %14<_ContiguousArrayStorage<Int>?>(%17) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %20, %26
%19 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %20, %26, %62
%20 = apply %19(%16, %18) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %22
%21 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %22, %27, %31, %63, %82, %86, %92
%22 = apply %21(%20, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %23
cond_fail %22 : $Builtin.Int1 // id: %23
%24 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %25
%25 = apply %14<HeapBuffer<_ArrayBody, Int>>(%24) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %26
%26 = apply %19(%18, %25) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %27
%27 = apply %21(%26, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %28
cond_fail %27 : $Builtin.Int1 // id: %28
%29 = unchecked_ref_bit_cast %9 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %30
%30 = enum_is_tag $Builtin.Int1, %29 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %31
%31 = apply %21(%30, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %32
cond_fail %31 : $Builtin.Int1 // id: %32
%33 = integer_literal $Builtin.Word, 0 // user: %35
%34 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %35
%35 = apply %34(%5, %33) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %81
%36 = metatype $@thick HeapObject.Type // user: %37
%37 = apply %14<HeapObject>(%36) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %42
%38 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %40, %100
%39 = metatype $@thick _ArrayBody.Type // users: %40, %94
%40 = apply %38<_ArrayBody>(%39) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %42, %51
%41 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %42, %88, %95, %101
%42 = apply %41(%37, %40, %13) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %43, %44
%43 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 0 // user: %49
%44 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 1 // user: %45
cond_fail %44 : $Builtin.Int1 // id: %45
%46 = integer_literal $Builtin.Word, 1 // users: %49, %51, %88, %105, %107
%47 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %49, %51, %105, %107
%48 = integer_literal $Builtin.Int1, 0 // users: %49, %51, %71, %88, %105, %107, %111
%49 = apply %47(%43, %46, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %50
%50 = tuple_extract %49 : $(Builtin.Word, Builtin.Int1), 0 // user: %57
%51 = apply %47(%40, %46, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %52
%52 = tuple_extract %51 : $(Builtin.Word, Builtin.Int1), 0 // user: %55
%53 = integer_literal $Builtin.Word, -1 // users: %55, %109
%54 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %55, %109
%55 = apply %54(%52, %53) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %57
%56 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %57, %110
%57 = apply %56(%50, %55) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %71, %95
%58 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %59
%59 = apply %14<HeapBufferStorage<_ArrayBody, Int>?>(%58) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %62
%60 = metatype $@thick Builtin.NativeObject.Type // user: %61
%61 = apply %14<Builtin.NativeObject>(%60) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %62
%62 = apply %19(%59, %61) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %63
%63 = apply %21(%62, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %64
cond_fail %63 : $Builtin.Int1 // id: %64
%65 = unchecked_ref_bit_cast %9 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %66
%66 = ref_to_raw_pointer %65 : $Builtin.NativeObject to $Builtin.RawPointer // users: %73, %113
%67 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %69
%68 = metatype $@thick Int8.Type // user: %69
%69 = apply %67<Int8>(%68) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %71, %111
%70 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %71, %111
%71 = apply %70(%57, %69, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %72
%72 = tuple_extract %71 : $(Builtin.Word, Builtin.Int1), 0 // user: %73
%73 = index_raw_pointer %66 : $Builtin.RawPointer, %72 : $Builtin.Word // user: %74
%74 = pointer_to_address %73 : $Builtin.RawPointer to $*_ArrayBody // user: %75
%75 = struct_element_addr %74 : $*_ArrayBody, #_ArrayBody.count // user: %76
%76 = struct_element_addr %75 : $*Int, #Int.value // user: %77
%77 = load %76 : $*Builtin.Word // user: %79
%78 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %79
%79 = apply %78(%5, %77) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %81
%80 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %81
%81 = apply %80(%35, %79) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %82
%82 = apply %21(%81, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %83
cond_fail %82 : $Builtin.Int1 // id: %83
%84 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %85
%85 = apply %84(%5, %5) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %86
%86 = apply %21(%85, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %87
cond_fail %86 : $Builtin.Int1 // id: %87
%88 = apply %41(%5, %46, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %89
%89 = tuple_extract %88 : $(Builtin.Word, Builtin.Int1), 0 // user: %91
%90 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %91
%91 = apply %90(%89, %5) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %92
%92 = apply %21(%91, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %93
cond_fail %92 : $Builtin.Int1 // id: %93
%94 = apply %14<_ArrayBody>(%39) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %95
%95 = apply %41(%57, %94, %13) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %96, %97
%96 = tuple_extract %95 : $(Builtin.Word, Builtin.Int1), 0 // user: %101
%97 = tuple_extract %95 : $(Builtin.Word, Builtin.Int1), 1 // user: %98
cond_fail %97 : $Builtin.Int1 // id: %98
%99 = metatype $@thick Int.Type // user: %100
%100 = apply %38<Int>(%99) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %101, %107
%101 = apply %41(%96, %100, %13) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %102, %103
%102 = tuple_extract %101 : $(Builtin.Word, Builtin.Int1), 0 // user: %105
%103 = tuple_extract %101 : $(Builtin.Word, Builtin.Int1), 1 // user: %104
cond_fail %103 : $Builtin.Int1 // id: %104
%105 = apply %47(%102, %46, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %106
%106 = tuple_extract %105 : $(Builtin.Word, Builtin.Int1), 0 // user: %110
%107 = apply %47(%100, %46, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %108
%108 = tuple_extract %107 : $(Builtin.Word, Builtin.Int1), 0 // user: %109
%109 = apply %54(%108, %53) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %110
%110 = apply %56(%106, %109) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %111
%111 = apply %70(%110, %69, %48) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %112
%112 = tuple_extract %111 : $(Builtin.Word, Builtin.Int1), 0 // user: %113
%113 = index_raw_pointer %66 : $Builtin.RawPointer, %112 : $Builtin.Word // user: %114
%114 = pointer_to_address %113 : $Builtin.RawPointer to $*Int // user: %115
%115 = index_addr %114 : $*Int, %5 : $Builtin.Word // user: %116
%116 = load %115 : $*Int // user: %117
store %116 to %12#1 : $*Int // id: %117
strong_retain %11 : $@callee_owned (@out Bool, @in Int) -> () // id: %118
%119 = apply %11(%0, %12#1) : $@callee_owned (@out Bool, @in Int) -> ()
dealloc_stack %12#0 : $*@local_storage Int // id: %120
%121 = load %8 : $*Optional<Builtin.NativeObject> // user: %123
%122 = load %10 : $*@callee_owned (@out Bool, @in Int) -> () // user: %124
release_value %121 : $Optional<Builtin.NativeObject> // id: %123
strong_release %122 : $@callee_owned (@out Bool, @in Int) -> () // id: %124
%125 = tuple () // user: %126
return %125 : $() // id: %126
}
// specialization <Swift.Int> of protocol witness for Swift.SequenceType.generate <A : Swift.SequenceType>(inout Swift.SequenceType.Self)() -> Swift.SequenceType.Self.Generator in conformance Swift.Array : Swift.SequenceType
sil shared specialization <Swift.Int> of protocol witness for Swift.SequenceType.generate <A : Swift.SequenceType>(inout Swift.SequenceType.Self)() -> Swift.SequenceType.Self.Generator in conformance Swift.Array : Swift.SequenceType : $@cc(witness_method) @thin (@out IndexingGenerator<Array<Int>>, @inout Array<Int>) -> () {
bb0(%0 : $*IndexingGenerator<Array<Int>>, %1 : $*Array<Int>):
%2 = load %1 : $*Array<Int> // users: %3, %7
%3 = struct_extract %2 : $Array<Int>, #Array._buffer // user: %4
%4 = struct_extract %3 : $_ArrayBuffer<Int>, #_ArrayBuffer.storage // user: %10
%5 = integer_literal $Builtin.Word, 0 // user: %6
%6 = struct $Int (%5 : $Builtin.Word) // user: %7
%7 = struct $IndexingGenerator<Array<Int>> (%2 : $Array<Int>, %6 : $Int) // user: %8
store %7 to %0 : $*IndexingGenerator<Array<Int>> // id: %8
%9 = tuple () // user: %11
retain_value %4 : $Optional<Builtin.NativeObject> // id: %10
return %9 : $() // id: %11
}
// specialization <Swift.Int> of Swift.Array.generate <A>(Swift.Array<A>)() -> Swift.IndexingGenerator<Swift.Array<A>>
sil shared specialization <Swift.Int> of Swift.Array.generate <A>([A])() -> Swift.IndexingGenerator<[A]> : $@cc(method) @thin (@owned Array<Int>) -> @owned IndexingGenerator<Array<Int>> {
bb0(%0 : $Array<Int>):
%1 = integer_literal $Builtin.Word, 0 // user: %2
%2 = struct $Int (%1 : $Builtin.Word) // user: %3
%3 = struct $IndexingGenerator<Array<Int>> (%0 : $Array<Int>, %2 : $Int) // user: %4
return %3 : $IndexingGenerator<Array<Int>> // id: %4
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift._CollectionType, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.IndexingGenerator.init <A : Swift._CollectionType>(Swift.IndexingGenerator<A>.Type)(A) -> Swift.IndexingGenerator<A>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift._CollectionType, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.IndexingGenerator.init <A : Swift._CollectionType>(Swift.IndexingGenerator<A>.Type)(A) -> Swift.IndexingGenerator<A> : $@thin (@out IndexingGenerator<Array<Int>>, @in Array<Int>, @thin IndexingGenerator<Array<Int>>.Type) -> () {
bb0(%0 : $*IndexingGenerator<Array<Int>>, %1 : $*Array<Int>, %2 : $@thin IndexingGenerator<Array<Int>>.Type):
%3 = load %1 : $*Array<Int> // user: %6
%4 = integer_literal $Builtin.Word, 0 // user: %5
%5 = struct $Int (%4 : $Builtin.Word) // user: %6
%6 = struct $IndexingGenerator<Array<Int>> (%3 : $Array<Int>, %5 : $Int) // user: %7
store %6 to %0 : $*IndexingGenerator<Array<Int>> // id: %7
%8 = tuple () // user: %9
return %8 : $() // id: %9
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift._CollectionType, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of protocol witness for Swift.GeneratorType.next <A : Swift.GeneratorType>(inout Swift.GeneratorType.Self)() -> Swift.Optional<Swift.GeneratorType.Self.Element> in conformance Swift.IndexingGenerator : Swift.GeneratorType
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift._CollectionType, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of protocol witness for Swift.GeneratorType.next <A : Swift.GeneratorType>(inout Swift.GeneratorType.Self)() -> Swift.GeneratorType.Self.Element? in conformance Swift.IndexingGenerator : Swift.GeneratorType : $@cc(witness_method) @thin (@out Optional<Int>, @inout IndexingGenerator<Array<Int>>) -> () {
bb0(%0 : $*Optional<Int>, %1 : $*IndexingGenerator<Array<Int>>):
%2 = struct_element_addr %1 : $*IndexingGenerator<Array<Int>>, #IndexingGenerator._position // users: %3, %89
%3 = struct_element_addr %2 : $*Int, #Int.value // users: %4, %82
%4 = load %3 : $*Builtin.Word // users: %71, %74
%5 = struct_element_addr %1 : $*IndexingGenerator<Array<Int>>, #IndexingGenerator._elements // user: %6
%6 = struct_element_addr %5 : $*Array<Int>, #Array._buffer // user: %7
%7 = struct_element_addr %6 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // users: %8, %90
%8 = load %7 : $*Optional<Builtin.NativeObject> // users: %20, %26, %58
%9 = integer_literal $Builtin.Int1, -1 // users: %18, %24, %35, %56, %93, %103, %122, %141, %145, %149, %152, %158
%10 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %12, %14, %22, %30, %52, %54, %99, %118, %120, %151
%11 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %12
%12 = apply %10<Builtin.NativeObject?>(%11) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %16
%13 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %14
%14 = apply %10<_ContiguousArrayStorage<Int>?>(%13) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %16, %23
%15 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %16, %23, %55, %71, %74, %121
%16 = apply %15(%12, %14) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %18
%17 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %18, %24, %56, %93, %122, %141, %145, %149
%18 = apply %17(%16, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %19
cond_fail %18 : $Builtin.Int1 // id: %19
%20 = unchecked_ref_bit_cast %8 : $Optional<Builtin.NativeObject> to $Optional<_ContiguousArrayStorage<Int>> // user: %75
%21 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %22
%22 = apply %10<HeapBuffer<_ArrayBody, Int>>(%21) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %23
%23 = apply %15(%14, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %24
%24 = apply %17(%23, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %25
cond_fail %24 : $Builtin.Int1 // id: %25
%26 = unchecked_ref_bit_cast %8 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %27
%27 = enum_is_tag $Builtin.Int1, %26 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %28
cond_br %27, bb1, bb2 // id: %28
bb1: // Preds: bb0
%29 = metatype $@thick HeapObject.Type // user: %30
%30 = apply %10<HeapObject>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %35
%31 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %33
%32 = metatype $@thick _ArrayBody.Type // user: %33
%33 = apply %31<_ArrayBody>(%32) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %35, %44
%34 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %35
%35 = apply %34(%30, %33, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %36, %37
%36 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 0 // user: %42
%37 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 1 // user: %38
cond_fail %37 : $Builtin.Int1 // id: %38
%39 = integer_literal $Builtin.Word, 1 // users: %42, %44
%40 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %42, %44
%41 = integer_literal $Builtin.Int1, 0 // users: %42, %44, %64
%42 = apply %40(%36, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %43
%43 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 0 // user: %50
%44 = apply %40(%33, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %45
%45 = tuple_extract %44 : $(Builtin.Word, Builtin.Int1), 0 // user: %48
%46 = integer_literal $Builtin.Word, -1 // user: %48
%47 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %48
%48 = apply %47(%45, %46) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %50
%49 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %50
%50 = apply %49(%43, %48) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %64
%51 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %52
%52 = apply %10<HeapBufferStorage<_ArrayBody, Int>?>(%51) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %55
%53 = metatype $@thick Builtin.NativeObject.Type // user: %54
%54 = apply %10<Builtin.NativeObject>(%53) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %55
%55 = apply %15(%52, %54) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %56
%56 = apply %17(%55, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %57
cond_fail %56 : $Builtin.Int1 // id: %57
%58 = unchecked_ref_bit_cast %8 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %59
%59 = ref_to_raw_pointer %58 : $Builtin.NativeObject to $Builtin.RawPointer // user: %66
%60 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %62
%61 = metatype $@thick Int8.Type // user: %62
%62 = apply %60<Int8>(%61) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %64
%63 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %64
%64 = apply %63(%50, %62, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %65
%65 = tuple_extract %64 : $(Builtin.Word, Builtin.Int1), 0 // user: %66
%66 = index_raw_pointer %59 : $Builtin.RawPointer, %65 : $Builtin.Word // user: %67
%67 = pointer_to_address %66 : $Builtin.RawPointer to $*_ArrayBody // user: %68
%68 = struct_element_addr %67 : $*_ArrayBody, #_ArrayBody.count // user: %69
%69 = struct_element_addr %68 : $*Int, #Int.value // user: %70
%70 = load %69 : $*Builtin.Word // user: %71
%71 = apply %15(%4, %70) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %72
cond_br %71, bb3, bb5 // id: %72
bb2: // Preds: bb0
%73 = integer_literal $Builtin.Word, 0 // user: %74
%74 = apply %15(%4, %73) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %76
retain_value %20 : $Optional<_ContiguousArrayStorage<Int>> // id: %75
cond_br %74, bb3, bb5 // id: %76
bb3: // Preds: bb1 bb2
%77 = enum $Optional<Int>, #Optional.None!enumelt // user: %78
store %77 to %0 : $*Optional<Int> // id: %78
br bb4 // id: %79
bb4: // Preds: bb3 bb5
%80 = tuple () // user: %81
return %80 : $() // id: %81
bb5: // Preds: bb1 bb2
%82 = load %3 : $*Builtin.Word // users: %86, %97, %138, %144, %144, %148, %172
%83 = integer_literal $Builtin.Word, 1 // users: %86, %108, %110, %162, %164
%84 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %86, %103, %152, %158
%85 = integer_literal $Builtin.Int1, 0 // users: %86, %108, %110, %130, %162, %164, %168
%86 = apply %84(%82, %83, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %87
%87 = tuple_extract %86 : $(Builtin.Word, Builtin.Int1), 0 // users: %88, %148
%88 = struct $Int (%87 : $Builtin.Word) // user: %89
store %88 to %2 : $*Int // id: %89
%90 = load %7 : $*Optional<Builtin.NativeObject> // users: %91, %124
%91 = unchecked_ref_bit_cast %90 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %92
%92 = enum_is_tag $Builtin.Int1, %91 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %93
%93 = apply %17(%92, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %94
cond_fail %93 : $Builtin.Int1 // id: %94
%95 = integer_literal $Builtin.Word, 0 // user: %97
%96 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %97
%97 = apply %96(%82, %95) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %140
%98 = metatype $@thick HeapObject.Type // user: %99
%99 = apply %10<HeapObject>(%98) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %103
%100 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %102, %157
%101 = metatype $@thick _ArrayBody.Type // users: %102, %151
%102 = apply %100<_ArrayBody>(%101) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %103, %110
%103 = apply %84(%99, %102, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %104, %105
%104 = tuple_extract %103 : $(Builtin.Word, Builtin.Int1), 0 // user: %108
%105 = tuple_extract %103 : $(Builtin.Word, Builtin.Int1), 1 // user: %106
cond_fail %105 : $Builtin.Int1 // id: %106
%107 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %108, %110, %162, %164
%108 = apply %107(%104, %83, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %109
%109 = tuple_extract %108 : $(Builtin.Word, Builtin.Int1), 0 // user: %116
%110 = apply %107(%102, %83, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %111
%111 = tuple_extract %110 : $(Builtin.Word, Builtin.Int1), 0 // user: %114
%112 = integer_literal $Builtin.Word, -1 // users: %114, %166
%113 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %114, %166
%114 = apply %113(%111, %112) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %116
%115 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %116, %167
%116 = apply %115(%109, %114) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %130, %152
%117 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %118
%118 = apply %10<HeapBufferStorage<_ArrayBody, Int>?>(%117) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %121
%119 = metatype $@thick Builtin.NativeObject.Type // user: %120
%120 = apply %10<Builtin.NativeObject>(%119) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %121
%121 = apply %15(%118, %120) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %122
%122 = apply %17(%121, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %123
cond_fail %122 : $Builtin.Int1 // id: %123
%124 = unchecked_ref_bit_cast %90 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %125
%125 = ref_to_raw_pointer %124 : $Builtin.NativeObject to $Builtin.RawPointer // users: %132, %170
%126 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %128
%127 = metatype $@thick Int8.Type // user: %128
%128 = apply %126<Int8>(%127) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %130, %168
%129 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %130, %168
%130 = apply %129(%116, %128, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %131
%131 = tuple_extract %130 : $(Builtin.Word, Builtin.Int1), 0 // user: %132
%132 = index_raw_pointer %125 : $Builtin.RawPointer, %131 : $Builtin.Word // user: %133
%133 = pointer_to_address %132 : $Builtin.RawPointer to $*_ArrayBody // user: %134
%134 = struct_element_addr %133 : $*_ArrayBody, #_ArrayBody.count // user: %135
%135 = struct_element_addr %134 : $*Int, #Int.value // user: %136
%136 = load %135 : $*Builtin.Word // user: %138
%137 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %138
%138 = apply %137(%82, %136) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %140
%139 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %140
%140 = apply %139(%97, %138) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %141
%141 = apply %17(%140, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %142
cond_fail %141 : $Builtin.Int1 // id: %142
%143 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %144
%144 = apply %143(%82, %82) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %145
%145 = apply %17(%144, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %146
cond_fail %145 : $Builtin.Int1 // id: %146
%147 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %148
%148 = apply %147(%87, %82) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %149
%149 = apply %17(%148, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %150
cond_fail %149 : $Builtin.Int1 // id: %150
%151 = apply %10<_ArrayBody>(%101) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %152
%152 = apply %84(%116, %151, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %153, %154
%153 = tuple_extract %152 : $(Builtin.Word, Builtin.Int1), 0 // user: %158
%154 = tuple_extract %152 : $(Builtin.Word, Builtin.Int1), 1 // user: %155
cond_fail %154 : $Builtin.Int1 // id: %155
%156 = metatype $@thick Int.Type // user: %157
%157 = apply %100<Int>(%156) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %158, %164
%158 = apply %84(%153, %157, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %159, %160
%159 = tuple_extract %158 : $(Builtin.Word, Builtin.Int1), 0 // user: %162
%160 = tuple_extract %158 : $(Builtin.Word, Builtin.Int1), 1 // user: %161
cond_fail %160 : $Builtin.Int1 // id: %161
%162 = apply %107(%159, %83, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %163
%163 = tuple_extract %162 : $(Builtin.Word, Builtin.Int1), 0 // user: %167
%164 = apply %107(%157, %83, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %165
%165 = tuple_extract %164 : $(Builtin.Word, Builtin.Int1), 0 // user: %166
%166 = apply %113(%165, %112) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %167
%167 = apply %115(%163, %166) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %168
%168 = apply %129(%167, %128, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %169
%169 = tuple_extract %168 : $(Builtin.Word, Builtin.Int1), 0 // user: %170
%170 = index_raw_pointer %125 : $Builtin.RawPointer, %169 : $Builtin.Word // user: %171
%171 = pointer_to_address %170 : $Builtin.RawPointer to $*Int // user: %172
%172 = index_addr %171 : $*Int, %82 : $Builtin.Word // user: %173
%173 = load %172 : $*Int // user: %174
%174 = enum $Optional<Int>, #Optional.Some!enumelt.1, %173 : $Int // user: %175
store %174 to %0 : $*Optional<Int> // id: %175
br bb4 // id: %176
}
// specialization <Swift.Array<Swift.Int> with Swift.Array<Swift.Int> : Swift._CollectionType, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.IndexingGenerator.next <A : Swift._CollectionType>(inout Swift.IndexingGenerator<A>)() -> Swift.Optional<A._Element>
sil shared specialization <[Swift.Int] with [Swift.Int] : Swift._CollectionType, Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int, Swift.Int> of Swift.IndexingGenerator.next <A : Swift._CollectionType>(inout Swift.IndexingGenerator<A>)() -> A._Element? : $@cc(method) @thin (@out Optional<Int>, @inout IndexingGenerator<Array<Int>>) -> () {
bb0(%0 : $*Optional<Int>, %1 : $*IndexingGenerator<Array<Int>>):
%2 = struct_element_addr %1 : $*IndexingGenerator<Array<Int>>, #IndexingGenerator._position // users: %3, %89
%3 = struct_element_addr %2 : $*Int, #Int.value // users: %4, %82
%4 = load %3 : $*Builtin.Word // users: %71, %74
%5 = struct_element_addr %1 : $*IndexingGenerator<Array<Int>>, #IndexingGenerator._elements // user: %6
%6 = struct_element_addr %5 : $*Array<Int>, #Array._buffer // user: %7
%7 = struct_element_addr %6 : $*_ArrayBuffer<Int>, #_ArrayBuffer.storage // users: %8, %90
%8 = load %7 : $*Optional<Builtin.NativeObject> // users: %20, %26, %58
%9 = integer_literal $Builtin.Int1, -1 // users: %18, %24, %35, %56, %93, %103, %122, %141, %145, %149, %152, %158
%10 = builtin_function_ref "sizeof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %12, %14, %22, %30, %52, %54, %99, %118, %120, %151
%11 = metatype $@thick Optional<Builtin.NativeObject>.Type // user: %12
%12 = apply %10<Builtin.NativeObject?>(%11) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %16
%13 = metatype $@thick Optional<_ContiguousArrayStorage<Int>>.Type // user: %14
%14 = apply %10<_ContiguousArrayStorage<Int>?>(%13) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %16, %23
%15 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %16, %23, %55, %71, %74, %121
%16 = apply %15(%12, %14) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %18
%17 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %18, %24, %56, %93, %122, %141, %145, %149
%18 = apply %17(%16, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %19
cond_fail %18 : $Builtin.Int1 // id: %19
%20 = unchecked_ref_bit_cast %8 : $Optional<Builtin.NativeObject> to $Optional<_ContiguousArrayStorage<Int>> // user: %75
%21 = metatype $@thick HeapBuffer<_ArrayBody, Int>.Type // user: %22
%22 = apply %10<HeapBuffer<_ArrayBody, Int>>(%21) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %23
%23 = apply %15(%14, %22) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %24
%24 = apply %17(%23, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %25
cond_fail %24 : $Builtin.Int1 // id: %25
%26 = unchecked_ref_bit_cast %8 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %27
%27 = enum_is_tag $Builtin.Int1, %26 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %28
cond_br %27, bb1, bb2 // id: %28
bb1: // Preds: bb0
%29 = metatype $@thick HeapObject.Type // user: %30
%30 = apply %10<HeapObject>(%29) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %35
%31 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %33
%32 = metatype $@thick _ArrayBody.Type // user: %33
%33 = apply %31<_ArrayBody>(%32) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %35, %44
%34 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %35
%35 = apply %34(%30, %33, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %36, %37
%36 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 0 // user: %42
%37 = tuple_extract %35 : $(Builtin.Word, Builtin.Int1), 1 // user: %38
cond_fail %37 : $Builtin.Int1 // id: %38
%39 = integer_literal $Builtin.Word, 1 // users: %42, %44
%40 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %42, %44
%41 = integer_literal $Builtin.Int1, 0 // users: %42, %44, %64
%42 = apply %40(%36, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %43
%43 = tuple_extract %42 : $(Builtin.Word, Builtin.Int1), 0 // user: %50
%44 = apply %40(%33, %39, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %45
%45 = tuple_extract %44 : $(Builtin.Word, Builtin.Int1), 0 // user: %48
%46 = integer_literal $Builtin.Word, -1 // user: %48
%47 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %48
%48 = apply %47(%45, %46) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %50
%49 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %50
%50 = apply %49(%43, %48) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %64
%51 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %52
%52 = apply %10<HeapBufferStorage<_ArrayBody, Int>?>(%51) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %55
%53 = metatype $@thick Builtin.NativeObject.Type // user: %54
%54 = apply %10<Builtin.NativeObject>(%53) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %55
%55 = apply %15(%52, %54) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %56
%56 = apply %17(%55, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %57
cond_fail %56 : $Builtin.Int1 // id: %57
%58 = unchecked_ref_bit_cast %8 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %59
%59 = ref_to_raw_pointer %58 : $Builtin.NativeObject to $Builtin.RawPointer // user: %66
%60 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %62
%61 = metatype $@thick Int8.Type // user: %62
%62 = apply %60<Int8>(%61) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %64
%63 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %64
%64 = apply %63(%50, %62, %41) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %65
%65 = tuple_extract %64 : $(Builtin.Word, Builtin.Int1), 0 // user: %66
%66 = index_raw_pointer %59 : $Builtin.RawPointer, %65 : $Builtin.Word // user: %67
%67 = pointer_to_address %66 : $Builtin.RawPointer to $*_ArrayBody // user: %68
%68 = struct_element_addr %67 : $*_ArrayBody, #_ArrayBody.count // user: %69
%69 = struct_element_addr %68 : $*Int, #Int.value // user: %70
%70 = load %69 : $*Builtin.Word // user: %71
%71 = apply %15(%4, %70) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %72
cond_br %71, bb3, bb5 // id: %72
bb2: // Preds: bb0
%73 = integer_literal $Builtin.Word, 0 // user: %74
%74 = apply %15(%4, %73) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %76
retain_value %20 : $Optional<_ContiguousArrayStorage<Int>> // id: %75
cond_br %74, bb3, bb5 // id: %76
bb3: // Preds: bb1 bb2
%77 = enum $Optional<Int>, #Optional.None!enumelt // user: %78
store %77 to %0 : $*Optional<Int> // id: %78
br bb4 // id: %79
bb4: // Preds: bb3 bb5
%80 = tuple () // user: %81
return %80 : $() // id: %81
bb5: // Preds: bb1 bb2
%82 = load %3 : $*Builtin.Word // users: %86, %97, %138, %144, %144, %148, %172
%83 = integer_literal $Builtin.Word, 1 // users: %86, %108, %110, %162, %164
%84 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %86, %103, %152, %158
%85 = integer_literal $Builtin.Int1, 0 // users: %86, %108, %110, %130, %162, %164, %168
%86 = apply %84(%82, %83, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %87
%87 = tuple_extract %86 : $(Builtin.Word, Builtin.Int1), 0 // users: %88, %148
%88 = struct $Int (%87 : $Builtin.Word) // user: %89
store %88 to %2 : $*Int // id: %89
%90 = load %7 : $*Optional<Builtin.NativeObject> // users: %91, %124
%91 = unchecked_ref_bit_cast %90 : $Optional<Builtin.NativeObject> to $Optional<HeapBufferStorage<_ArrayBody, Int>> // user: %92
%92 = enum_is_tag $Builtin.Int1, %91 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %93
%93 = apply %17(%92, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %94
cond_fail %93 : $Builtin.Int1 // id: %94
%95 = integer_literal $Builtin.Word, 0 // user: %97
%96 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %97
%97 = apply %96(%82, %95) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %140
%98 = metatype $@thick HeapObject.Type // user: %99
%99 = apply %10<HeapObject>(%98) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %103
%100 = builtin_function_ref "alignof" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %102, %157
%101 = metatype $@thick _ArrayBody.Type // users: %102, %151
%102 = apply %100<_ArrayBody>(%101) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %103, %110
%103 = apply %84(%99, %102, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %104, %105
%104 = tuple_extract %103 : $(Builtin.Word, Builtin.Int1), 0 // user: %108
%105 = tuple_extract %103 : $(Builtin.Word, Builtin.Int1), 1 // user: %106
cond_fail %105 : $Builtin.Int1 // id: %106
%107 = builtin_function_ref "ssub_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %108, %110, %162, %164
%108 = apply %107(%104, %83, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %109
%109 = tuple_extract %108 : $(Builtin.Word, Builtin.Int1), 0 // user: %116
%110 = apply %107(%102, %83, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %111
%111 = tuple_extract %110 : $(Builtin.Word, Builtin.Int1), 0 // user: %114
%112 = integer_literal $Builtin.Word, -1 // users: %114, %166
%113 = builtin_function_ref "xor_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %114, %166
%114 = apply %113(%111, %112) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %116
%115 = builtin_function_ref "and_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %116, %167
%116 = apply %115(%109, %114) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %130, %152
%117 = metatype $@thick Optional<HeapBufferStorage<_ArrayBody, Int>>.Type // user: %118
%118 = apply %10<HeapBufferStorage<_ArrayBody, Int>?>(%117) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %121
%119 = metatype $@thick Builtin.NativeObject.Type // user: %120
%120 = apply %10<Builtin.NativeObject>(%119) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %121
%121 = apply %15(%118, %120) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %122
%122 = apply %17(%121, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %123
cond_fail %122 : $Builtin.Int1 // id: %123
%124 = unchecked_ref_bit_cast %90 : $Optional<Builtin.NativeObject> to $Builtin.NativeObject // user: %125
%125 = ref_to_raw_pointer %124 : $Builtin.NativeObject to $Builtin.RawPointer // users: %132, %170
%126 = builtin_function_ref "strideof_nonzero" : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %128
%127 = metatype $@thick Int8.Type // user: %128
%128 = apply %126<Int8>(%127) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %130, %168
%129 = builtin_function_ref "smul_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %130, %168
%130 = apply %129(%116, %128, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %131
%131 = tuple_extract %130 : $(Builtin.Word, Builtin.Int1), 0 // user: %132
%132 = index_raw_pointer %125 : $Builtin.RawPointer, %131 : $Builtin.Word // user: %133
%133 = pointer_to_address %132 : $Builtin.RawPointer to $*_ArrayBody // user: %134
%134 = struct_element_addr %133 : $*_ArrayBody, #_ArrayBody.count // user: %135
%135 = struct_element_addr %134 : $*Int, #Int.value // user: %136
%136 = load %135 : $*Builtin.Word // user: %138
%137 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %138
%138 = apply %137(%82, %136) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %140
%139 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %140
%140 = apply %139(%97, %138) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %141
%141 = apply %17(%140, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %142
cond_fail %141 : $Builtin.Int1 // id: %142
%143 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %144
%144 = apply %143(%82, %82) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %145
%145 = apply %17(%144, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %146
cond_fail %145 : $Builtin.Int1 // id: %146
%147 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %148
%148 = apply %147(%87, %82) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %149
%149 = apply %17(%148, %9) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %150
cond_fail %149 : $Builtin.Int1 // id: %150
%151 = apply %10<_ArrayBody>(%101) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // user: %152
%152 = apply %84(%116, %151, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %153, %154
%153 = tuple_extract %152 : $(Builtin.Word, Builtin.Int1), 0 // user: %158
%154 = tuple_extract %152 : $(Builtin.Word, Builtin.Int1), 1 // user: %155
cond_fail %154 : $Builtin.Int1 // id: %155
%156 = metatype $@thick Int.Type // user: %157
%157 = apply %100<Int>(%156) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Builtin.Word // users: %158, %164
%158 = apply %84(%153, %157, %9) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // users: %159, %160
%159 = tuple_extract %158 : $(Builtin.Word, Builtin.Int1), 0 // user: %162
%160 = tuple_extract %158 : $(Builtin.Word, Builtin.Int1), 1 // user: %161
cond_fail %160 : $Builtin.Int1 // id: %161
%162 = apply %107(%159, %83, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %163
%163 = tuple_extract %162 : $(Builtin.Word, Builtin.Int1), 0 // user: %167
%164 = apply %107(%157, %83, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %165
%165 = tuple_extract %164 : $(Builtin.Word, Builtin.Int1), 0 // user: %166
%166 = apply %113(%165, %112) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %167
%167 = apply %115(%163, %166) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %168
%168 = apply %129(%167, %128, %85) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %169
%169 = tuple_extract %168 : $(Builtin.Word, Builtin.Int1), 0 // user: %170
%170 = index_raw_pointer %125 : $Builtin.RawPointer, %169 : $Builtin.Word // user: %171
%171 = pointer_to_address %170 : $Builtin.RawPointer to $*Int // user: %172
%172 = index_addr %171 : $*Int, %82 : $Builtin.Word // user: %173
%173 = load %172 : $*Int // user: %174
%174 = enum $Optional<Int>, #Optional.Some!enumelt.1, %173 : $Int // user: %175
store %174 to %0 : $*Optional<Int> // id: %175
br bb4 // id: %176
}
// protocol witness for Swift._CollectionType.startIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.Array : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.startIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.Array : Swift._CollectionType : $@cc(witness_method) @thin <T> (@out Array<T>.Index, @inout Array<T>) -> () {
bb0(%0 : $*Int, %1 : $*Array<T>):
%2 = load %1 : $*Array<T> // users: %3, %7
%3 = struct_extract %2 : $Array<T>, #Array._buffer // user: %4
%4 = struct_extract %3 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %6
// function_ref Swift.Array.startIndex.getter : Swift.Int
%5 = function_ref Swift.Array.startIndex.getter : Swift.Int : $@cc(method) @thin <τ_0_0> (@owned Array<τ_0_0>) -> Int // user: %7
retain_value %4 : $Optional<Builtin.NativeObject> // id: %6
%7 = apply %5<T>(%2) : $@cc(method) @thin <τ_0_0> (@owned Array<τ_0_0>) -> Int // user: %8
store %7 to %0 : $*Int // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// protocol witness for Swift._CollectionType.endIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.Array : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.endIndex.getter : Swift._CollectionType.Self.Index in conformance Swift.Array : Swift._CollectionType : $@cc(witness_method) @thin <T> (@out Array<T>.Index, @inout Array<T>) -> () {
bb0(%0 : $*Int, %1 : $*Array<T>):
%2 = load %1 : $*Array<T> // users: %3, %7
%3 = struct_extract %2 : $Array<T>, #Array._buffer // user: %4
%4 = struct_extract %3 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %6
// function_ref Swift.Array.endIndex.getter : Swift.Int
%5 = function_ref Swift.Array.endIndex.getter : Swift.Int : $@cc(method) @thin <τ_0_0> (@owned Array<τ_0_0>) -> Int // user: %7
retain_value %4 : $Optional<Builtin.NativeObject> // id: %6
%7 = apply %5<T>(%2) : $@cc(method) @thin <τ_0_0> (@owned Array<τ_0_0>) -> Int // user: %8
store %7 to %0 : $*Int // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
// protocol witness for Swift._CollectionType.subscript.getter (Swift._CollectionType.Self.Index) -> Swift._CollectionType.Self._Element in conformance Swift.Array : Swift._CollectionType
sil public_external protocol witness for Swift._CollectionType.subscript.getter (Swift._CollectionType.Self.Index) -> Swift._CollectionType.Self._Element in conformance Swift.Array : Swift._CollectionType : $@cc(witness_method) @thin <T> (@out Array<T>._Element, @in Array<T>.Index, @inout Array<T>) -> () {
bb0(%0 : $*T, %1 : $*Int, %2 : $*Array<T>):
%3 = load %2 : $*Array<T> // users: %4, %9
%4 = struct_extract %3 : $Array<T>, #Array._buffer // user: %5
%5 = struct_extract %4 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %8
%6 = load %1 : $*Int // user: %9
// function_ref Swift.Array.subscript.getter (Swift.Int) -> A
%7 = function_ref Swift.Array.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, @owned Array<τ_0_0>) -> () // user: %9
retain_value %5 : $Optional<Builtin.NativeObject> // id: %8
%9 = apply %7<T>(%0, %6, %3) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, @owned Array<τ_0_0>) -> () // user: %10
return %9 : $() // id: %10
}
// specialization <Swift.UnsafeMutablePointer<Swift.Int> with Swift.UnsafeMutablePointer<Swift.Int> : Swift._Incrementable> of Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A
sil shared [transparent] specialization <Swift.UnsafeMutablePointer<Swift.Int> with Swift.UnsafeMutablePointer<Swift.Int> : Swift._Incrementable> of Swift.++ postfix <A : Swift._Incrementable>(inout A) -> A : $@thin (@out UnsafeMutablePointer<Int>, @inout UnsafeMutablePointer<Int>) -> () {
bb0(%0 : $*UnsafeMutablePointer<Int>, %1 : $*UnsafeMutablePointer<Int>):
%2 = load %1 : $*UnsafeMutablePointer<Int> // user: %9
%3 = alloc_stack $UnsafeMutablePointer<Int> // users: %5, %6, %8
// function_ref protocol witness for Swift._Incrementable.successor <A : Swift._Incrementable>(inout Swift._Incrementable.Self)() -> Swift._Incrementable.Self in conformance Swift.UnsafeMutablePointer : Swift._Incrementable
%4 = function_ref protocol witness for Swift._Incrementable.successor <A : Swift._Incrementable>(inout Swift._Incrementable.Self)() -> Swift._Incrementable.Self in conformance Swift.UnsafeMutablePointer : Swift._Incrementable : $@cc(witness_method) @thin <τ_0_0> (@out UnsafeMutablePointer<τ_0_0>, @inout UnsafeMutablePointer<τ_0_0>) -> () // user: %5
%5 = apply %4<Int>(%3#1, %1) : $@cc(witness_method) @thin <τ_0_0> (@out UnsafeMutablePointer<τ_0_0>, @inout UnsafeMutablePointer<τ_0_0>) -> ()
%6 = load %3#1 : $*UnsafeMutablePointer<Int> // user: %7
store %6 to %1 : $*UnsafeMutablePointer<Int> // id: %7
dealloc_stack %3#0 : $*@local_storage UnsafeMutablePointer<Int> // id: %8
store %2 to %0 : $*UnsafeMutablePointer<Int> // id: %9
%10 = tuple () // user: %11
return %10 : $() // id: %11
}
// specialization <Swift.Int> of Swift.Optional.Some <A>(Swift.Optional<A>.Type)(A) -> Swift.Optional<A>
sil shared [transparent] specialization <Swift.Int> of Swift.Optional.Some <A>(A?.Type)(A) -> A? : $@thin (@out Optional<Int>, @in Int, @thin Optional<Int>.Type) -> () {
bb0(%0 : $*Optional<Int>, %1 : $*Int, %2 : $@thin Optional<Int>.Type):
%3 = load %1 : $*Int // user: %4
%4 = enum $Optional<Int>, #Optional.Some!enumelt.1, %3 : $Int // user: %5
store %4 to %0 : $*Optional<Int> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// specialization <Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>> of Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
sil shared specialization <Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>> of Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin (@in Optional<HeapBufferStorage<_ArrayBody, Int>>, _OptionalNilComparisonType) -> Bool {
bb0(%0 : $*Optional<HeapBufferStorage<_ArrayBody, Int>>, %1 : $_OptionalNilComparisonType):
%2 = load %0 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> // users: %3, %5
%3 = enum_is_tag $Builtin.Int1, %2 : $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.Some!enumelt.1 // user: %4
%4 = struct $Bool (%3 : $Builtin.Int1) // user: %6
release_value %2 : $Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %5
return %4 : $Bool // id: %6
}
// specialization <Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>> of Swift.Optional.None <A>(Swift.Optional<A>.Type) -> Swift.Optional<A>
sil shared [transparent] specialization <Swift.HeapBufferStorage<Swift._ArrayBody, Swift.Int>> of Swift.Optional.None <A>(A?.Type) -> A? : $@thin (@out Optional<HeapBufferStorage<_ArrayBody, Int>>, @thin Optional<HeapBufferStorage<_ArrayBody, Int>>.Type) -> () {
bb0(%0 : $*Optional<HeapBufferStorage<_ArrayBody, Int>>, %1 : $@thin Optional<HeapBufferStorage<_ArrayBody, Int>>.Type):
%2 = enum $Optional<HeapBufferStorage<_ArrayBody, Int>>, #Optional.None!enumelt // user: %3
store %2 to %0 : $*Optional<HeapBufferStorage<_ArrayBody, Int>> // id: %3
%4 = tuple () // user: %5
return %4 : $() // id: %5
}
// protocol witness for Swift._SignedIntegerType.toIntMax <A : Swift._SignedIntegerType>(inout Swift._SignedIntegerType.Self)() -> Swift.Int64 in conformance Swift.Int : Swift._SignedIntegerType
sil public_external protocol witness for Swift._SignedIntegerType.toIntMax <A : Swift._SignedIntegerType>(inout Swift._SignedIntegerType.Self)() -> Swift.Int64 in conformance Swift.Int : Swift._SignedIntegerType : $@cc(witness_method) @thin (@inout Int) -> Int64 {
bb0(%0 : $*Int):
%1 = struct_element_addr %0 : $*Int, #Int.value // user: %2
%2 = load %1 : $*Builtin.Word // user: %4
%3 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // user: %4
%4 = apply %3(%2) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %5
%5 = struct $Int64 (%4 : $Builtin.Int64) // user: %6
return %5 : $Int64 // id: %6
}
// protocol witness for Swift._SignedIntegerType.init <A : Swift._SignedIntegerType>(Swift._SignedIntegerType.Self.Type)(Swift.Int64) -> Swift._SignedIntegerType.Self in conformance Swift.Int : Swift._SignedIntegerType
sil public_external protocol witness for Swift._SignedIntegerType.init <A : Swift._SignedIntegerType>(Swift._SignedIntegerType.Self.Type)(Swift.Int64) -> Swift._SignedIntegerType.Self in conformance Swift.Int : Swift._SignedIntegerType : $@cc(witness_method) @thin (@out Int, Int64, @thick Int.Type) -> () {
bb0(%0 : $*Int, %1 : $Int64, %2 : $@thick Int.Type):
%3 = struct_extract %1 : $Int64, #Int64.value // user: %5
%4 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %5
%5 = apply %4(%3) : $@thin (Builtin.Int64) -> Builtin.Word // user: %6
%6 = struct $Int (%5 : $Builtin.Word) // user: %7
store %6 to %0 : $*Int // id: %7
%8 = tuple () // user: %9
return %8 : $() // id: %9
}
// Swift.UnsafeBufferPointer.startIndex.getter : Swift.Int
sil public_external Swift.UnsafeBufferPointer.startIndex.getter : Swift.Int : $@cc(method) @thin <T> (UnsafeBufferPointer<T>) -> Int {
bb0(%0 : $UnsafeBufferPointer<T>):
%1 = integer_literal $Builtin.Word, 0 // user: %2
%2 = struct $Int (%1 : $Builtin.Word) // user: %3
return %2 : $Int // id: %3
}
// protocol witness for Swift.CollectionType.subscript.getter (Swift.CollectionType.Self.Index) -> Swift.CollectionType.Self.Generator.Element in conformance Swift.UnsafeBufferPointer : Swift.CollectionType
sil public_external protocol witness for Swift.CollectionType.subscript.getter (Swift.CollectionType.Self.Index) -> Swift.CollectionType.Self.Generator.Element in conformance Swift.UnsafeBufferPointer : Swift.CollectionType : $@cc(witness_method) @thin <T> (@out UnsafeBufferPointer<T>.Generator.Element, @in UnsafeBufferPointer<T>.Index, @inout UnsafeBufferPointer<T>) -> () {
bb0(%0 : $*T, %1 : $*Int, %2 : $*UnsafeBufferPointer<T>):
%3 = load %2 : $*UnsafeBufferPointer<T> // user: %6
%4 = load %1 : $*Int // user: %6
// function_ref Swift.UnsafeBufferPointer.subscript.getter (Swift.Int) -> A
%5 = function_ref Swift.UnsafeBufferPointer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, UnsafeBufferPointer<τ_0_0>) -> () // user: %6
%6 = apply %5<T>(%0, %4, %3) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, UnsafeBufferPointer<τ_0_0>) -> () // user: %7
return %6 : $() // id: %7
}
// protocol witness for Swift.CollectionType.~> infix <A : Swift.CollectionType>(Swift.CollectionType.Self.Type)(Swift.CollectionType.Self, (Swift._CountElements, ())) -> Swift.CollectionType.Self.Index.Distance in conformance Swift.UnsafeBufferPointer : Swift.CollectionType
sil public_external protocol witness for Swift.CollectionType.~> infix <A : Swift.CollectionType>(Swift.CollectionType.Self.Type)(Swift.CollectionType.Self, (Swift._CountElements, ())) -> Swift.CollectionType.Self.Index.Distance in conformance Swift.UnsafeBufferPointer : Swift.CollectionType : $@cc(witness_method) @thin <T> (@out UnsafeBufferPointer<T>.Index.Distance, @in UnsafeBufferPointer<T>, _CountElements, @thick UnsafeBufferPointer<T>.Type) -> () {
bb0(%0 : $*Int, %1 : $*UnsafeBufferPointer<T>, %2 : $_CountElements, %3 : $@thick UnsafeBufferPointer<T>.Type):
%4 = load %1 : $*UnsafeBufferPointer<T> // user: %6
%5 = alloc_stack $UnsafeBufferPointer<T> // users: %6, %9, %14
store %4 to %5#1 : $*UnsafeBufferPointer<T> // id: %6
%7 = alloc_stack $Int // users: %9, %10, %13
// function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance
%8 = function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0, _CountElements) -> () // user: %9
%9 = apply %8<UnsafeBufferPointer<T>, Int, Int, Int, Int, T>(%7#1, %5#1, %2) : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0, _CountElements) -> ()
%10 = load %7#1 : $*Int // user: %11
store %10 to %0 : $*Int // id: %11
%12 = tuple () // user: %15
dealloc_stack %7#0 : $*@local_storage Int // id: %13
dealloc_stack %5#0 : $*@local_storage UnsafeBufferPointer<T> // id: %14
return %12 : $() // id: %15
}
// Swift.UnsafeBufferPointer.subscript.getter (Swift.Int) -> A
sil public_external Swift.UnsafeBufferPointer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <T> (@out T, Int, UnsafeBufferPointer<T>) -> () {
bb0(%0 : $*T, %1 : $Int, %2 : $UnsafeBufferPointer<T>):
%3 = struct_extract %2 : $UnsafeBufferPointer<T>, #UnsafeBufferPointer._position // user: %5
// function_ref Swift.UnsafePointer.subscript.getter (Swift.Int) -> A
%4 = function_ref Swift.UnsafePointer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, UnsafePointer<τ_0_0>) -> () // user: %5
%5 = apply [transparent] %4<T>(%0, %1, %3) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, UnsafePointer<τ_0_0>) -> ()
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// Swift.UnsafeBufferPointer.endIndex.getter : Swift.Int
sil public_external Swift.UnsafeBufferPointer.endIndex.getter : Swift.Int : $@cc(method) @thin <T> (UnsafeBufferPointer<T>) -> Int {
bb0(%0 : $UnsafeBufferPointer<T>):
// function_ref Swift.- infix <A>(Swift.UnsafePointer<A>, Swift.UnsafePointer<A>) -> Swift.Int
%1 = function_ref Swift.- infix <A>(Swift.UnsafePointer<A>, Swift.UnsafePointer<A>) -> Swift.Int : $@thin <τ_0_0> (UnsafePointer<τ_0_0>, UnsafePointer<τ_0_0>) -> Int // user: %4
%2 = struct_extract %0 : $UnsafeBufferPointer<T>, #UnsafeBufferPointer._end // user: %4
%3 = struct_extract %0 : $UnsafeBufferPointer<T>, #UnsafeBufferPointer._position // user: %4
%4 = apply [transparent] %1<T>(%2, %3) : $@thin <τ_0_0> (UnsafePointer<τ_0_0>, UnsafePointer<τ_0_0>) -> Int // user: %5
return %4 : $Int // id: %5
}
// Swift.UnsafePointer.subscript.getter (Swift.Int) -> A
sil public_external [transparent] Swift.UnsafePointer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <T> (@out T, Int, UnsafePointer<T>) -> () {
bb0(%0 : $*T, %1 : $Int, %2 : $UnsafePointer<T>):
// function_ref Swift.+ infix <A>(Swift.UnsafePointer<A>, Swift.Int) -> Swift.UnsafePointer<A>
%3 = function_ref Swift.+ infix <A>(Swift.UnsafePointer<A>, Swift.Int) -> Swift.UnsafePointer<A> : $@thin <τ_0_0> (UnsafePointer<τ_0_0>, Int) -> UnsafePointer<τ_0_0> // user: %4
%4 = apply [transparent] %3<T>(%2, %1) : $@thin <τ_0_0> (UnsafePointer<τ_0_0>, Int) -> UnsafePointer<τ_0_0> // user: %6
// function_ref Swift.UnsafePointer.memory.getter : A
%5 = function_ref Swift.UnsafePointer.memory.getter : A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafePointer<τ_0_0>) -> () // user: %6
%6 = apply [transparent] %5<T>(%0, %4) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, UnsafePointer<τ_0_0>) -> ()
%7 = tuple () // user: %8
return %7 : $() // id: %8
}
// Swift.- infix <A>(Swift.UnsafePointer<A>, Swift.UnsafePointer<A>) -> Swift.Int
sil public_external [transparent] Swift.- infix <A>(Swift.UnsafePointer<A>, Swift.UnsafePointer<A>) -> Swift.Int : $@thin <T> (UnsafePointer<T>, UnsafePointer<T>) -> Int {
bb0(%0 : $UnsafePointer<T>, %1 : $UnsafePointer<T>):
%2 = builtin_function_ref "sub_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %8
%3 = builtin_function_ref "ptrtoint_Word" : $@thin (Builtin.RawPointer) -> Builtin.Word // users: %5, %7
%4 = struct_extract %0 : $UnsafePointer<T>, #UnsafePointer.value // user: %5
%5 = apply %3(%4) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %8
%6 = struct_extract %1 : $UnsafePointer<T>, #UnsafePointer.value // user: %7
%7 = apply %3(%6) : $@thin (Builtin.RawPointer) -> Builtin.Word // user: %8
%8 = apply %2(%5, %7) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // users: %18, %25
// function_ref Swift.strideof <A>(A.Type) -> Swift.Int
%9 = function_ref Swift.strideof <A>(A.Type) -> Swift.Int : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %11
%10 = metatype $@thick T.Type // user: %11
%11 = apply [transparent] %9<T>(%10) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Int // user: %14
%12 = integer_literal $Builtin.Word, 0 // user: %15
%13 = builtin_function_ref "cmp_eq_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %15, %18, %20
%14 = struct_extract %11 : $Int, #Int.value // users: %15, %20, %25
%15 = apply %13(%14, %12) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %16
cond_fail %15 : $Builtin.Int1 // id: %16
%17 = integer_literal $Builtin.Word, -9223372036854775808 // user: %18
%18 = apply %13(%8, %17) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %22
%19 = integer_literal $Builtin.Word, -1 // user: %20
%20 = apply %13(%14, %19) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %22
%21 = builtin_function_ref "and_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %22
%22 = apply %21(%18, %20) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %23
cond_fail %22 : $Builtin.Int1 // id: %23
%24 = builtin_function_ref "sdiv_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %25
%25 = apply %24(%8, %14) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Word // user: %26
%26 = struct $Int (%25 : $Builtin.Word) // user: %27
return %26 : $Int // id: %27
}
// Swift.UnsafePointer.memory.getter : A
sil public_external [transparent] Swift.UnsafePointer.memory.getter : A : $@cc(method) @thin <T> (@out T, UnsafePointer<T>) -> () {
bb0(%0 : $*T, %1 : $UnsafePointer<T>):
%2 = struct_extract %1 : $UnsafePointer<T>, #UnsafePointer.value // user: %3
%3 = pointer_to_address %2 : $Builtin.RawPointer to $*T // user: %4
copy_addr %3 to [initialization] %0 : $*T // id: %4
%5 = tuple () // user: %6
return %5 : $() // id: %6
}
// protocol witness for Swift.ForwardIndexType.~> infix <A : Swift.ForwardIndexType>(Swift.ForwardIndexType.Self.Type)(Swift.ForwardIndexType.Self, (Swift._Distance, Swift.ForwardIndexType.Self)) -> Swift.ForwardIndexType.Self.Distance in conformance Swift.Int : Swift.ForwardIndexType
sil public_external protocol witness for Swift.ForwardIndexType.~> infix <A : Swift.ForwardIndexType>(Swift.ForwardIndexType.Self.Type)(Swift.ForwardIndexType.Self, (Swift._Distance, Swift.ForwardIndexType.Self)) -> Swift.ForwardIndexType.Self.Distance in conformance Swift.Int : Swift.ForwardIndexType : $@cc(witness_method) @thin (@out Int, @in Int, _Distance, @in Int, @thick Int.Type) -> () {
bb0(%0 : $*Int, %1 : $*Int, %2 : $_Distance, %3 : $*Int, %4 : $@thick Int.Type):
%5 = struct_element_addr %1 : $*Int, #Int.value // user: %6
%6 = load %5 : $*Builtin.Word // user: %11
%7 = struct_element_addr %3 : $*Int, #Int.value // user: %8
%8 = load %7 : $*Builtin.Word // user: %10
%9 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // users: %10, %11
%10 = apply %9(%8) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %14
%11 = apply %9(%6) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %14
%12 = builtin_function_ref "ssub_with_overflow_Int64" : $@thin (Builtin.Int64, Builtin.Int64, Builtin.Int1) -> (Builtin.Int64, Builtin.Int1) // user: %14
%13 = integer_literal $Builtin.Int1, 0 // user: %14
%14 = apply %12(%10, %11, %13) : $@thin (Builtin.Int64, Builtin.Int64, Builtin.Int1) -> (Builtin.Int64, Builtin.Int1) // user: %15
%15 = tuple_extract %14 : $(Builtin.Int64, Builtin.Int1), 0 // user: %17
%16 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %17
%17 = apply %16(%15) : $@thin (Builtin.Int64) -> Builtin.Word // user: %18
%18 = struct $Int (%17 : $Builtin.Word) // user: %19
store %18 to %0 : $*Int // id: %19
%20 = tuple () // user: %21
return %20 : $() // id: %21
}
// protocol witness for Swift.ForwardIndexType.~> infix <A : Swift.ForwardIndexType>(Swift.ForwardIndexType.Self.Type)(Swift.ForwardIndexType.Self, (Swift._Advance, Swift.ForwardIndexType.Self.Distance)) -> Swift.ForwardIndexType.Self in conformance Swift.Int : Swift.ForwardIndexType
sil public_external protocol witness for Swift.ForwardIndexType.~> infix <A : Swift.ForwardIndexType>(Swift.ForwardIndexType.Self.Type)(Swift.ForwardIndexType.Self, (Swift._Advance, Swift.ForwardIndexType.Self.Distance)) -> Swift.ForwardIndexType.Self in conformance Swift.Int : Swift.ForwardIndexType : $@cc(witness_method) @thin (@out Int, @in Int, _Advance, @in Int, @thick Int.Type) -> () {
bb0(%0 : $*Int, %1 : $*Int, %2 : $_Advance, %3 : $*Int, %4 : $@thick Int.Type):
%5 = struct_element_addr %1 : $*Int, #Int.value // user: %6
%6 = load %5 : $*Builtin.Word // user: %10
%7 = struct_element_addr %3 : $*Int, #Int.value // user: %8
%8 = load %7 : $*Builtin.Word // user: %11
%9 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // users: %10, %11
%10 = apply %9(%6) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %14
%11 = apply %9(%8) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %14
%12 = builtin_function_ref "sadd_with_overflow_Int64" : $@thin (Builtin.Int64, Builtin.Int64, Builtin.Int1) -> (Builtin.Int64, Builtin.Int1) // user: %14
%13 = integer_literal $Builtin.Int1, 0 // user: %14
%14 = apply %12(%10, %11, %13) : $@thin (Builtin.Int64, Builtin.Int64, Builtin.Int1) -> (Builtin.Int64, Builtin.Int1) // user: %15
%15 = tuple_extract %14 : $(Builtin.Int64, Builtin.Int1), 0 // user: %17
%16 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // user: %17
%17 = apply %16(%15) : $@thin (Builtin.Int64) -> Builtin.Word // user: %18
%18 = struct $Int (%17 : $Builtin.Word) // user: %19
store %18 to %0 : $*Int // id: %19
%20 = tuple () // user: %21
return %20 : $() // id: %21
}
// protocol witness for Swift.ForwardIndexType.~> infix <A : Swift.ForwardIndexType>(Swift.ForwardIndexType.Self.Type)(Swift.ForwardIndexType.Self, (Swift._Advance, (Swift.ForwardIndexType.Self.Distance, Swift.ForwardIndexType.Self))) -> Swift.ForwardIndexType.Self in conformance Swift.Int : Swift.ForwardIndexType
sil public_external protocol witness for Swift.ForwardIndexType.~> infix <A : Swift.ForwardIndexType>(Swift.ForwardIndexType.Self.Type)(Swift.ForwardIndexType.Self, (Swift._Advance, (Swift.ForwardIndexType.Self.Distance, Swift.ForwardIndexType.Self))) -> Swift.ForwardIndexType.Self in conformance Swift.Int : Swift.ForwardIndexType : $@cc(witness_method) @thin (@out Int, @in Int, _Advance, @in Int, @in Int, @thick Int.Type) -> () {
bb0(%0 : $*Int, %1 : $*Int, %2 : $_Advance, %3 : $*Int, %4 : $*Int, %5 : $@thick Int.Type):
%6 = struct_element_addr %1 : $*Int, #Int.value // user: %7
%7 = load %6 : $*Builtin.Word // user: %14
%8 = struct_element_addr %3 : $*Int, #Int.value // user: %9
%9 = load %8 : $*Builtin.Word // users: %23, %31, %33, %45
%10 = struct_element_addr %4 : $*Int, #Int.value // user: %11
%11 = load %10 : $*Builtin.Word // users: %13, %39, %47
%12 = builtin_function_ref "zextOrBitCast_Word_Int64" : $@thin (Builtin.Word) -> Builtin.Int64 // users: %13, %14, %33
%13 = apply %12(%11) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %17
%14 = apply %12(%7) : $@thin (Builtin.Word) -> Builtin.Int64 // users: %17, %35
%15 = builtin_function_ref "ssub_with_overflow_Int64" : $@thin (Builtin.Int64, Builtin.Int64, Builtin.Int1) -> (Builtin.Int64, Builtin.Int1) // user: %17
%16 = integer_literal $Builtin.Int1, 0 // users: %17, %35
%17 = apply %15(%13, %14, %16) : $@thin (Builtin.Int64, Builtin.Int64, Builtin.Int1) -> (Builtin.Int64, Builtin.Int1) // user: %18
%18 = tuple_extract %17 : $(Builtin.Int64, Builtin.Int1), 0 // user: %20
%19 = builtin_function_ref "truncOrBitCast_Int64_Word" : $@thin (Builtin.Int64) -> Builtin.Word // users: %20, %37
%20 = apply %19(%18) : $@thin (Builtin.Int64) -> Builtin.Word // users: %25, %28, %31, %45
%21 = integer_literal $Builtin.Word, 0 // users: %23, %25, %28
%22 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // users: %23, %25, %45
%23 = apply %22(%9, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %24
cond_br %23, bb1, bb2 // id: %24
bb1: // Preds: bb0
%25 = apply %22(%20, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %26
cond_br %25, bb3, bb4 // id: %26
bb2: // Preds: bb0
%27 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %28
%28 = apply %27(%20, %21) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %29
cond_br %28, bb7, bb4 // id: %29
bb3: // Preds: bb1
%30 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %31
%31 = apply %30(%20, %9) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %32
cond_br %31, bb5, bb4 // id: %32
bb4: // Preds: bb1 bb2 bb3 bb7
%33 = apply %12(%9) : $@thin (Builtin.Word) -> Builtin.Int64 // user: %35
%34 = builtin_function_ref "sadd_with_overflow_Int64" : $@thin (Builtin.Int64, Builtin.Int64, Builtin.Int1) -> (Builtin.Int64, Builtin.Int1) // user: %35
%35 = apply %34(%14, %33, %16) : $@thin (Builtin.Int64, Builtin.Int64, Builtin.Int1) -> (Builtin.Int64, Builtin.Int1) // user: %36
%36 = tuple_extract %35 : $(Builtin.Int64, Builtin.Int1), 0 // user: %37
%37 = apply %19(%36) : $@thin (Builtin.Int64) -> Builtin.Word // user: %38
br bb6(%37 : $Builtin.Word) // id: %38
bb5: // Preds: bb3
br bb6(%11 : $Builtin.Word) // id: %39
bb6(%40 : $Builtin.Word): // Preds: bb4 bb5 bb8
%41 = struct $Int (%40 : $Builtin.Word) // user: %42
store %41 to %0 : $*Int // id: %42
%43 = tuple () // user: %44
return %43 : $() // id: %44
bb7: // Preds: bb2
%45 = apply %22(%20, %9) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %46
cond_br %45, bb8, bb4 // id: %46
bb8: // Preds: bb7
br bb6(%11 : $Builtin.Word) // id: %47
}
// Swift.MapCollectionView.startIndex.getter : A.Index
sil public_external Swift.MapCollectionView.startIndex.getter : A.Index : $@cc(method) @thin <Base, T where Base : CollectionType, Base.Generator : GeneratorType, Base.Index : ForwardIndexType, Base.Index.Distance : _SignedIntegerType, Base.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Base.Index, @in MapCollectionView<Base, T>) -> () {
bb0(%0 : $*Base.Index, %1 : $*MapCollectionView<Base, T>):
%2 = struct_element_addr %1 : $*MapCollectionView<Base, T>, #MapCollectionView._base // user: %4
%3 = witness_method $Base, #_CollectionType.startIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %4
%4 = apply %3<Base, Base.Index, Base.Index.Distance, Base.Index.Distance.IntegerLiteralType, Base.Index._DisabledRangeIndex, Base._Element>(%0, %2) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
destroy_addr %1 : $*MapCollectionView<Base, T> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// Swift.MapCollectionView.endIndex.getter : A.Index
sil public_external Swift.MapCollectionView.endIndex.getter : A.Index : $@cc(method) @thin <Base, T where Base : CollectionType, Base.Generator : GeneratorType, Base.Index : ForwardIndexType, Base.Index.Distance : _SignedIntegerType, Base.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Base.Index, @in MapCollectionView<Base, T>) -> () {
bb0(%0 : $*Base.Index, %1 : $*MapCollectionView<Base, T>):
%2 = struct_element_addr %1 : $*MapCollectionView<Base, T>, #MapCollectionView._base // user: %4
%3 = witness_method $Base, #_CollectionType.endIndex!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> () // user: %4
%4 = apply %3<Base, Base.Index, Base.Index.Distance, Base.Index.Distance.IntegerLiteralType, Base.Index._DisabledRangeIndex, Base._Element>(%0, %2) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index, @inout τ_0_0) -> ()
destroy_addr %1 : $*MapCollectionView<Base, T> // id: %5
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// Swift.MapCollectionView.subscript.getter (A.Index) -> B
sil public_external Swift.MapCollectionView.subscript.getter (A.Index) -> B : $@cc(method) @thin <Base, T where Base : CollectionType, Base.Generator : GeneratorType, Base.Index : ForwardIndexType, Base.Index.Distance : _SignedIntegerType, Base.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out T, @in Base.Index, @in MapCollectionView<Base, T>) -> () {
bb0(%0 : $*T, %1 : $*Base.Index, %2 : $*MapCollectionView<Base, T>):
%3 = struct_element_addr %2 : $*MapCollectionView<Base, T>, #MapCollectionView._transform // user: %4
%4 = load %3 : $*@callee_owned (@out T, @in Base.Generator.Element) -> () // users: %10, %12
%5 = alloc_stack $Base.Generator.Element // users: %11, %12, %14
%6 = struct_element_addr %2 : $*MapCollectionView<Base, T>, #MapCollectionView._base // user: %11
%7 = alloc_stack $Base.Index // users: %8, %11, %13
copy_addr %1 to [initialization] %7#1 : $*Base.Index // id: %8
%9 = witness_method $Base, #CollectionType.subscript!getter.1 : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @inout τ_0_0) -> () // user: %11
strong_retain %4 : $@callee_owned (@out T, @in Base.Generator.Element) -> () // id: %10
%11 = apply %9<Base, Base.Generator, Base.Generator.Element, Base.Index, Base.Index.Distance, Base.Index.Distance.IntegerLiteralType, Base.Index._DisabledRangeIndex, Base._Element>(%5#1, %7#1, %6) : $@cc(witness_method) @thin <τ_0_0 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Generator.Element, @in τ_0_0.Index, @inout τ_0_0) -> ()
%12 = apply %4(%0, %5#1) : $@callee_owned (@out T, @in Base.Generator.Element) -> ()
dealloc_stack %7#0 : $*@local_storage Base.Index // id: %13
dealloc_stack %5#0 : $*@local_storage Base.Generator.Element // id: %14
destroy_addr %2 : $*MapCollectionView<Base, T> // id: %15
destroy_addr %1 : $*Base.Index // id: %16
%17 = tuple () // user: %18
return %17 : $() // id: %18
}
// protocol witness for Swift.CollectionType.subscript.getter (Swift.CollectionType.Self.Index) -> Swift.CollectionType.Self.Generator.Element in conformance Swift.MapCollectionView : Swift.CollectionType
sil public_external protocol witness for Swift.CollectionType.subscript.getter (Swift.CollectionType.Self.Index) -> Swift.CollectionType.Self.Generator.Element in conformance Swift.MapCollectionView : Swift.CollectionType : $@cc(witness_method) @thin <Base, T where Base : CollectionType, Base.Generator : GeneratorType, Base.Index : ForwardIndexType, Base.Index.Distance : _SignedIntegerType, Base.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out MapCollectionView<Base, T>.Generator.Element, @in MapCollectionView<Base, T>.Index, @inout MapCollectionView<Base, T>) -> () {
bb0(%0 : $*T, %1 : $*Base.Index, %2 : $*MapCollectionView<Base, T>):
%3 = alloc_stack $MapCollectionView<Base, T> // users: %4, %6, %7
copy_addr %2 to [initialization] %3#1 : $*MapCollectionView<Base, T> // id: %4
// function_ref Swift.MapCollectionView.subscript.getter (A.Index) -> B
%5 = function_ref Swift.MapCollectionView.subscript.getter (A.Index) -> B : $@cc(method) @thin <τ_0_0, τ_0_1 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_1, @in τ_0_0.Index, @in MapCollectionView<τ_0_0, τ_0_1>) -> () // user: %6
%6 = apply %5<Base, T, Base.Generator, Base.Generator.Element, Base.Index, Base.Index.Distance, Base.Index.Distance.IntegerLiteralType, Base.Index._DisabledRangeIndex, Base._Element>(%0, %1, %3#1) : $@cc(method) @thin <τ_0_0, τ_0_1 where τ_0_0 : CollectionType, τ_0_0.Generator : GeneratorType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_1, @in τ_0_0.Index, @in MapCollectionView<τ_0_0, τ_0_1>) -> () // user: %8
dealloc_stack %3#0 : $*@local_storage MapCollectionView<Base, T> // id: %7
return %6 : $() // id: %8
}
// protocol witness for Swift.CollectionType.~> infix <A : Swift.CollectionType>(Swift.CollectionType.Self.Type)(Swift.CollectionType.Self, (Swift._CountElements, ())) -> Swift.CollectionType.Self.Index.Distance in conformance Swift.MapCollectionView : Swift.CollectionType
sil public_external protocol witness for Swift.CollectionType.~> infix <A : Swift.CollectionType>(Swift.CollectionType.Self.Type)(Swift.CollectionType.Self, (Swift._CountElements, ())) -> Swift.CollectionType.Self.Index.Distance in conformance Swift.MapCollectionView : Swift.CollectionType : $@cc(witness_method) @thin <Base, T where Base : CollectionType, Base.Generator : GeneratorType, Base.Index : ForwardIndexType, Base.Index.Distance : _SignedIntegerType, Base.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out MapCollectionView<Base, T>.Index.Distance, @in MapCollectionView<Base, T>, _CountElements, @thick MapCollectionView<Base, T>.Type) -> () {
bb0(%0 : $*Base.Index.Distance, %1 : $*MapCollectionView<Base, T>, %2 : $_CountElements, %3 : $@thick MapCollectionView<Base, T>.Type):
// function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance
%4 = function_ref Swift.~> infix <A : Swift._CollectionType>(A, (Swift._CountElements, ())) -> A.Index.Distance : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0, _CountElements) -> () // user: %5
%5 = apply %4<MapCollectionView<Base, T>, Base.Index, Base.Index.Distance, Base.Index.Distance.IntegerLiteralType, Base.Index._DisabledRangeIndex, T>(%0, %1, %2) : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out τ_0_0.Index.Distance, @in τ_0_0, _CountElements) -> () // user: %6
return %5 : $() // id: %6
}
// Swift.Array.startIndex.getter : Swift.Int
sil public_external Swift.Array.startIndex.getter : Swift.Int : $@cc(method) @thin <T> (@owned Array<T>) -> Int {
bb0(%0 : $Array<T>):
%1 = integer_literal $Builtin.Word, 0 // user: %2
%2 = struct $Int (%1 : $Builtin.Word) // user: %6
%3 = struct_extract %0 : $Array<T>, #Array._buffer // user: %4
%4 = struct_extract %3 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %5
release_value %4 : $Optional<Builtin.NativeObject> // id: %5
return %2 : $Int // id: %6
}
// Swift.Array.endIndex.getter : Swift.Int
sil public_external Swift.Array.endIndex.getter : Swift.Int : $@cc(method) @thin <T> (@owned Array<T>) -> Int {
bb0(%0 : $Array<T>):
// function_ref Swift.Array._getCount <A>(Swift.Array<A>)() -> Swift.Int
%1 = function_ref Swift.Array._getCount <A>([A])() -> Swift.Int : $@cc(method) @thin <τ_0_0> (@owned Array<τ_0_0>) -> Int // user: %2
%2 = apply %1<T>(%0) : $@cc(method) @thin <τ_0_0> (@owned Array<τ_0_0>) -> Int // user: %3
return %2 : $Int // id: %3
}
// Swift.Array.subscript.getter (Swift.Int) -> A
sil public_external Swift.Array.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <T> (@out T, Int, @owned Array<T>) -> () {
bb0(%0 : $*T, %1 : $Int, %2 : $Array<T>):
// function_ref Swift.Array._checkSubscript <A>(Swift.Array<A>)(Swift.Int) -> ()
%3 = function_ref Swift.Array._checkSubscript <A>([A])(Swift.Int) -> () : $@cc(method) @thin <τ_0_0> (Int, @owned Array<τ_0_0>) -> () // user: %7
%4 = struct_extract %2 : $Array<T>, #Array._buffer // user: %5
%5 = struct_extract %4 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %6
retain_value %5 : $Optional<Builtin.NativeObject> // id: %6
%7 = apply %3<T>(%1, %2) : $@cc(method) @thin <τ_0_0> (Int, @owned Array<τ_0_0>) -> ()
// function_ref Swift.Array._getElement <A>(Swift.Array<A>)(Swift.Int) -> A
%8 = function_ref Swift.Array._getElement <A>([A])(Swift.Int) -> A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, @owned Array<τ_0_0>) -> () // user: %9
%9 = apply %8<T>(%0, %1, %2) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, @owned Array<τ_0_0>) -> ()
%10 = tuple () // user: %11
return %10 : $() // id: %11
}
// Swift.Array._checkSubscript <A>(Swift.Array<A>)(Swift.Int) -> ()
sil public_external [semantics "array.check_subscript"] Swift.Array._checkSubscript <A>([A])(Swift.Int) -> () : $@cc(method) @thin <T> (Int, @owned Array<T>) -> () {
bb0(%0 : $Int, %1 : $Array<T>):
%2 = struct_extract %1 : $Array<T>, #Array._buffer // user: %5
%3 = integer_literal $Builtin.Int1, -1 // user: %8
// function_ref Swift._ArrayBuffer._isValidSubscript <A>(Swift._ArrayBuffer<A>)(Swift.Int) -> Swift.Bool
%4 = function_ref Swift._ArrayBuffer._isValidSubscript <A>(Swift._ArrayBuffer<A>)(Swift.Int) -> Swift.Bool : $@cc(method) @thin <τ_0_0> (Int, @owned _ArrayBuffer<τ_0_0>) -> Bool // user: %5
%5 = apply %4<T>(%0, %2) : $@cc(method) @thin <τ_0_0> (Int, @owned _ArrayBuffer<τ_0_0>) -> Bool // user: %7
%6 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %8
%7 = struct_extract %5 : $Bool, #Bool.value // user: %8
%8 = apply %6(%7, %3) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %9
cond_fail %8 : $Builtin.Int1 // id: %9
%10 = tuple () // user: %11
return %10 : $() // id: %11
}
// Swift.Array._getElement <A>(Swift.Array<A>)(Swift.Int) -> A
sil public_external [semantics "array.get_element"] Swift.Array._getElement <A>([A])(Swift.Int) -> A : $@cc(method) @thin <T> (@out T, Int, @owned Array<T>) -> () {
bb0(%0 : $*T, %1 : $Int, %2 : $Array<T>):
%3 = struct_extract %2 : $Array<T>, #Array._buffer // user: %5
// function_ref Swift._ArrayBuffer.subscript.getter (Swift.Int) -> A
%4 = function_ref Swift._ArrayBuffer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, @owned _ArrayBuffer<τ_0_0>) -> () // user: %5
%5 = apply %4<T>(%0, %1, %3) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, @owned _ArrayBuffer<τ_0_0>) -> ()
%6 = tuple () // user: %7
return %6 : $() // id: %7
}
// Swift._ArrayBuffer._isValidSubscript <A>(Swift._ArrayBuffer<A>)(Swift.Int) -> Swift.Bool
sil public_external Swift._ArrayBuffer._isValidSubscript <A>(Swift._ArrayBuffer<A>)(Swift.Int) -> Swift.Bool : $@cc(method) @thin <T> (Int, @owned _ArrayBuffer<T>) -> Bool {
bb0(%0 : $Int, %1 : $_ArrayBuffer<T>):
%2 = struct_extract %1 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // users: %4, %13, %25, %30, %33, %46
// function_ref Swift._ArrayBuffer._isNative.getter : Swift.Bool
%3 = function_ref Swift._ArrayBuffer._isNative.getter : Swift.Bool : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> Bool // user: %5
retain_value %2 : $Optional<Builtin.NativeObject> // id: %4
%5 = apply %3<T>(%1) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> Bool // user: %6
%6 = struct_extract %5 : $Bool, #Bool.value // user: %9
%7 = integer_literal $Builtin.Int1, -1 // user: %9
%8 = builtin_function_ref "int_expect_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %9
%9 = apply %8(%6, %7) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %10
cond_br %9, bb1, bb2 // id: %10
bb1: // Preds: bb0
// function_ref Swift._ContiguousArrayBuffer._isValidSubscript <A>(Swift._ContiguousArrayBuffer<A>)(Swift.Int) -> Swift.Bool
%11 = function_ref Swift._ContiguousArrayBuffer._isValidSubscript <A>(Swift._ContiguousArrayBuffer<A>)(Swift.Int) -> Swift.Bool : $@cc(method) @thin <τ_0_0> (Int, @owned _ContiguousArrayBuffer<τ_0_0>) -> Bool // user: %15
// function_ref Swift._ArrayBuffer._native.getter : Swift._ContiguousArrayBuffer<A>
%12 = function_ref Swift._ArrayBuffer._native.getter : Swift._ContiguousArrayBuffer<A> : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %14
retain_value %2 : $Optional<Builtin.NativeObject> // id: %13
%14 = apply %12<T>(%1) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %15
%15 = apply %11<T>(%0, %14) : $@cc(method) @thin <τ_0_0> (Int, @owned _ContiguousArrayBuffer<τ_0_0>) -> Bool // user: %16
br bb3(%15 : $Bool) // id: %16
bb2: // Preds: bb0
%17 = alloc_stack $Bool // users: %23, %26, %47
%18 = integer_literal $Builtin.Word, 0 // user: %21
%19 = builtin_function_ref "cmp_sge_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %21
%20 = struct_extract %0 : $Int, #Int.value // users: %21, %37
%21 = apply %19(%20, %18) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %22
%22 = struct $Bool (%21 : $Builtin.Int1) // user: %23
store %22 to %17#1 : $*Bool // id: %23
// function_ref protocol witness for Swift.BooleanType.boolValue.getter : Swift.Bool in conformance Swift.Bool : Swift.BooleanType
%24 = function_ref protocol witness for Swift.BooleanType.boolValue.getter : Swift.Bool in conformance Swift.Bool : Swift.BooleanType : $@cc(witness_method) @thin (@inout Bool) -> Bool // user: %26
retain_value %2 : $Optional<Builtin.NativeObject> // id: %25
%26 = apply %24(%17#1) : $@cc(witness_method) @thin (@inout Bool) -> Bool // user: %27
%27 = struct_extract %26 : $Bool, #Bool.value // user: %28
cond_br %27, bb4, bb5 // id: %28
bb3(%29 : $Bool): // Preds: bb1 bb6
release_value %2 : $Optional<Builtin.NativeObject> // id: %30
return %29 : $Bool // id: %31
bb4: // Preds: bb2
// function_ref Swift._ArrayBuffer.count.getter : Swift.Int
%32 = function_ref Swift._ArrayBuffer.count.getter : Swift.Int : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> Int // user: %34
retain_value %2 : $Optional<Builtin.NativeObject> // id: %33
%34 = apply %32<T>(%1) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> Int // user: %36
%35 = builtin_function_ref "cmp_slt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %37
%36 = struct_extract %34 : $Int, #Int.value // user: %37
%37 = apply %35(%20, %36) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %38
%38 = struct $Bool (%37 : $Builtin.Int1) // user: %40
// function_ref Swift.Bool.boolValue.getter : Swift.Bool
%39 = function_ref Swift.Bool.boolValue.getter : Swift.Bool : $@cc(method) @thin (Bool) -> Bool // user: %40
%40 = apply %39(%38) : $@cc(method) @thin (Bool) -> Bool // user: %41
br bb6(%40 : $Bool) // id: %41
bb5: // Preds: bb2
%42 = integer_literal $Builtin.Int1, 0 // user: %43
%43 = struct $Bool (%42 : $Builtin.Int1) // user: %44
br bb6(%43 : $Bool) // id: %44
bb6(%45 : $Bool): // Preds: bb4 bb5
release_value %2 : $Optional<Builtin.NativeObject> // id: %46
dealloc_stack %17#0 : $*@local_storage Bool // id: %47
br bb3(%45 : $Bool) // id: %48
}
// Swift._ArrayBuffer.subscript.getter (Swift.Int) -> A
sil public_external Swift._ArrayBuffer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <T> (@out T, Int, @owned _ArrayBuffer<T>) -> () {
bb0(%0 : $*T, %1 : $Int, %2 : $_ArrayBuffer<T>):
// function_ref Swift._ArrayBuffer._typeCheck <A>(Swift._ArrayBuffer<A>)(Swift.Range<Swift.Int>) -> ()
%3 = function_ref Swift._ArrayBuffer._typeCheck <A>(Swift._ArrayBuffer<A>)(Swift.Range<Swift.Int>) -> () : $@cc(method) @thin <τ_0_0> (Range<Int>, @owned _ArrayBuffer<τ_0_0>) -> () // user: %24
%4 = struct_extract %2 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // users: %23, %26, %33, %41, %44
%5 = struct_extract %1 : $Int, #Int.value // users: %9, %9, %15, %18
%6 = integer_literal $Builtin.Int1, 0 // user: %15
%7 = integer_literal $Builtin.Int1, -1 // users: %11, %19, %30, %58
%8 = builtin_function_ref "cmp_sle_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %9
%9 = apply %8(%5, %5) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %11
%10 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %11, %19
%11 = apply %10(%9, %7) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %12
cond_fail %11 : $Builtin.Int1 // id: %12
%13 = integer_literal $Builtin.Word, 1 // user: %15
%14 = builtin_function_ref "sadd_with_overflow_Word" : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %15
%15 = apply %14(%5, %13, %6) : $@thin (Builtin.Word, Builtin.Word, Builtin.Int1) -> (Builtin.Word, Builtin.Int1) // user: %16
%16 = tuple_extract %15 : $(Builtin.Word, Builtin.Int1), 0 // users: %18, %21
%17 = builtin_function_ref "cmp_sgt_Word" : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %18
%18 = apply %17(%16, %5) : $@thin (Builtin.Word, Builtin.Word) -> Builtin.Int1 // user: %19
%19 = apply %10(%18, %7) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %20
cond_fail %19 : $Builtin.Int1 // id: %20
%21 = struct $Int (%16 : $Builtin.Word) // user: %22
%22 = struct $Range<Int> (%1 : $Int, %21 : $Int) // user: %24
retain_value %4 : $Optional<Builtin.NativeObject> // id: %23
%24 = apply %3<T>(%22, %2) : $@cc(method) @thin <τ_0_0> (Range<Int>, @owned _ArrayBuffer<τ_0_0>) -> ()
// function_ref Swift._ArrayBuffer._isNative.getter : Swift.Bool
%25 = function_ref Swift._ArrayBuffer._isNative.getter : Swift.Bool : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> Bool // user: %27
retain_value %4 : $Optional<Builtin.NativeObject> // id: %26
%27 = apply %25<T>(%2) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> Bool // user: %28
%28 = struct_extract %27 : $Bool, #Bool.value // user: %30
%29 = builtin_function_ref "int_expect_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %30
%30 = apply %29(%28, %7) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %31
cond_br %30, bb1, bb2 // id: %31
bb1: // Preds: bb0
// function_ref Swift._ArrayBuffer._native.getter : Swift._ContiguousArrayBuffer<A>
%32 = function_ref Swift._ArrayBuffer._native.getter : Swift._ContiguousArrayBuffer<A> : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %34
retain_value %4 : $Optional<Builtin.NativeObject> // id: %33
%34 = apply %32<T>(%2) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %36
// function_ref Swift._ContiguousArrayBuffer.subscript.getter (Swift.Int) -> A
%35 = function_ref Swift._ContiguousArrayBuffer.subscript.getter (Swift.Int) -> A : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, @owned _ContiguousArrayBuffer<τ_0_0>) -> () // user: %36
%36 = apply %35<T>(%0, %1, %34) : $@cc(method) @thin <τ_0_0> (@out τ_0_0, Int, @owned _ContiguousArrayBuffer<τ_0_0>) -> ()
br bb3 // id: %37
bb2: // Preds: bb0
// function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B
%38 = function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> () // user: %54
%39 = alloc_stack $AnyObject // users: %52, %54, %56
// function_ref Swift._ArrayBuffer._nonNative.getter : Swift.Optional<Swift._SwiftNSArrayRequiredOverridesType>
%40 = function_ref Swift._ArrayBuffer._nonNative.getter : Swift._SwiftNSArrayRequiredOverridesType? : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned Optional<_SwiftNSArrayRequiredOverridesType> // user: %42
retain_value %4 : $Optional<Builtin.NativeObject> // id: %41
%42 = apply %40<T>(%2) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned Optional<_SwiftNSArrayRequiredOverridesType> // users: %43, %47
switch_enum %42 : $Optional<_SwiftNSArrayRequiredOverridesType>, case #Optional.Some!enumelt.1: bb4, case #Optional.None!enumelt: bb5 // id: %43
bb3: // Preds: bb1 bb4
release_value %4 : $Optional<Builtin.NativeObject> // id: %44
%45 = tuple () // user: %46
return %45 : $() // id: %46
bb4: // Preds: bb2
%47 = unchecked_enum_data %42 : $Optional<_SwiftNSArrayRequiredOverridesType>, #Optional.Some!enumelt.1 // users: %48, %49, %55
%48 = project_existential_ref %47 : $_SwiftNSArrayRequiredOverridesType to $@sil_self _SwiftNSArrayRequiredOverridesType // user: %50
%49 = protocol_method [volatile] %47 : $_SwiftNSArrayRequiredOverridesType, #_SwiftNSArrayRequiredOverridesType.objectAtIndex!1.foreign : <`Self` : _SwiftNSArrayRequiredOverridesType> Self -> (Int) -> AnyObject, $@cc(objc_method) @thin (Int, @sil_self _SwiftNSArrayRequiredOverridesType) -> @autoreleased AnyObject // user: %50
%50 = apply %49(%1, %48) : $@cc(objc_method) @thin (Int, @sil_self _SwiftNSArrayRequiredOverridesType) -> @autoreleased AnyObject // users: %51, %52
strong_retain_autoreleased %50 : $AnyObject // id: %51
store %50 to %39#1 : $*AnyObject // id: %52
%53 = metatype $@thick T.Type // user: %54
%54 = apply [transparent] %38<AnyObject, T>(%0, %39#1, %53) : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> ()
strong_release %47 : $_SwiftNSArrayRequiredOverridesType // id: %55
dealloc_stack %39#0 : $*@local_storage AnyObject // id: %56
br bb3 // id: %57
bb5: // Preds: bb2
cond_fail %7 : $Builtin.Int1 // id: %58
unreachable // id: %59
}
// Swift._ArrayBuffer._typeCheck <A>(Swift._ArrayBuffer<A>)(Swift.Range<Swift.Int>) -> ()
sil public_external Swift._ArrayBuffer._typeCheck <A>(Swift._ArrayBuffer<A>)(Swift.Range<Swift.Int>) -> () : $@cc(method) @thin <T> (Range<Int>, @owned _ArrayBuffer<T>) -> () {
bb0(%0 : $Range<Int>, %1 : $_ArrayBuffer<T>):
%2 = alloc_stack $IndexingGenerator<_SliceBuffer<T>> // users: %27, %52, %56, %79, %97
%3 = alloc_stack $T // users: %26, %69, %73, %94
%4 = alloc_stack $RangeGenerator<Int> // users: %25, %108, %115
// function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool
%5 = function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %7
%6 = metatype $@thick T.Type // user: %7
%7 = apply %5<T>(%6) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %8
%8 = struct_extract %7 : $Bool, #Bool.value // user: %9
cond_br %8, bb1, bb2 // id: %9
bb1: // Preds: bb0
%10 = struct_extract %1 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // users: %12, %31, %47, %101
// function_ref Swift._ArrayBuffer.indirect.getter : Swift._IndirectArrayBuffer
%11 = function_ref Swift._ArrayBuffer.indirect.getter : Swift._IndirectArrayBuffer : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _IndirectArrayBuffer // user: %13
retain_value %10 : $Optional<Builtin.NativeObject> // id: %12
%13 = apply %11<T>(%1) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _IndirectArrayBuffer // users: %14, %20
%14 = ref_element_addr %13 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.needsElementTypeCheck // user: %15
%15 = struct_element_addr %14 : $*Bool, #Bool.value // user: %16
%16 = load %15 : $*Builtin.Int1 // user: %19
%17 = integer_literal $Builtin.Int1, 0 // users: %19, %86, %144
%18 = builtin_function_ref "int_expect_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // users: %19, %41
%19 = apply %18(%16, %17) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %21
strong_release %13 : $_IndirectArrayBuffer // id: %20
cond_br %19, bb3, bb2 // id: %21
bb2: // Preds: bb0 bb1 bb5 bb7 bb16
%22 = struct_extract %1 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %23
release_value %22 : $Optional<Builtin.NativeObject> // id: %23
%24 = tuple () // user: %28
dealloc_stack %4#0 : $*@local_storage RangeGenerator<Int> // id: %25
dealloc_stack %3#0 : $*@local_storage T // id: %26
dealloc_stack %2#0 : $*@local_storage IndexingGenerator<_SliceBuffer<T>> // id: %27
return %24 : $() // id: %28
bb3: // Preds: bb1
%29 = alloc_stack $Bool // users: %33, %36, %43
// function_ref Swift._ArrayBuffer._isNative.getter : Swift.Bool
%30 = function_ref Swift._ArrayBuffer._isNative.getter : Swift.Bool : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> Bool // user: %32
retain_value %10 : $Optional<Builtin.NativeObject> // id: %31
%32 = apply %30<T>(%1) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> Bool // user: %33
store %32 to %29#1 : $*Bool // id: %33
%34 = alloc_stack $Bool // users: %37, %39, %42
// function_ref protocol witness for Swift.BooleanType.boolValue.getter : Swift.Bool in conformance Swift.Bool : Swift.BooleanType
%35 = function_ref protocol witness for Swift.BooleanType.boolValue.getter : Swift.Bool in conformance Swift.Bool : Swift.BooleanType : $@cc(witness_method) @thin (@inout Bool) -> Bool // users: %36, %39
%36 = apply %35(%29#1) : $@cc(witness_method) @thin (@inout Bool) -> Bool // user: %37
store %36 to %34#1 : $*Bool // id: %37
%38 = integer_literal $Builtin.Int1, -1 // users: %41, %85, %92, %112, %140, %143, %149
%39 = apply %35(%34#1) : $@cc(witness_method) @thin (@inout Bool) -> Bool // user: %40
%40 = struct_extract %39 : $Bool, #Bool.value // user: %41
%41 = apply %18(%40, %38) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %44
dealloc_stack %34#0 : $*@local_storage Bool // id: %42
dealloc_stack %29#0 : $*@local_storage Bool // id: %43
cond_br %41, bb4, bb5 // id: %44
bb4: // Preds: bb3
// function_ref Swift._SliceBuffer.generate <A>(Swift._SliceBuffer<A>)() -> Swift.IndexingGenerator<Swift._SliceBuffer<A>>
%45 = function_ref Swift._SliceBuffer.generate <A>(Swift._SliceBuffer<A>)() -> Swift.IndexingGenerator<Swift._SliceBuffer<A>> : $@cc(method) @thin <τ_0_0> (@owned _SliceBuffer<τ_0_0>) -> @owned IndexingGenerator<_SliceBuffer<τ_0_0>> // user: %51
// function_ref Swift._ArrayBuffer._native.getter : Swift._ContiguousArrayBuffer<A>
%46 = function_ref Swift._ArrayBuffer._native.getter : Swift._ContiguousArrayBuffer<A> : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %48
retain_value %10 : $Optional<Builtin.NativeObject> // id: %47
%48 = apply %46<T>(%1) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %50
// function_ref Swift._ContiguousArrayBuffer.subscript.getter (Swift.Range<Swift.Int>) -> Swift._SliceBuffer<A>
%49 = function_ref Swift._ContiguousArrayBuffer.subscript.getter (Swift.Range<Swift.Int>) -> Swift._SliceBuffer<A> : $@cc(method) @thin <τ_0_0> (Range<Int>, @owned _ContiguousArrayBuffer<τ_0_0>) -> @owned _SliceBuffer<τ_0_0> // user: %50
%50 = apply %49<T>(%0, %48) : $@cc(method) @thin <τ_0_0> (Range<Int>, @owned _ContiguousArrayBuffer<τ_0_0>) -> @owned _SliceBuffer<τ_0_0> // user: %51
%51 = apply %45<T>(%50) : $@cc(method) @thin <τ_0_0> (@owned _SliceBuffer<τ_0_0>) -> @owned IndexingGenerator<_SliceBuffer<τ_0_0>> // user: %52
store %51 to %2#1 : $*IndexingGenerator<_SliceBuffer<T>> // id: %52
%53 = alloc_stack $Optional<T> // users: %56, %57, %68, %78, %97, %98
// function_ref Swift.IndexingGenerator.next <A : Swift._CollectionType>(inout Swift.IndexingGenerator<A>)() -> Swift.Optional<A._Element>
%54 = function_ref Swift.IndexingGenerator.next <A : Swift._CollectionType>(inout Swift.IndexingGenerator<A>)() -> A._Element? : $@cc(method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_0._Element>, @inout IndexingGenerator<τ_0_0>) -> () // users: %56, %97
// function_ref Swift._doesOptionalHaveValue <A>(inout Swift.Optional<A>) -> Builtin.Int1
%55 = function_ref Swift._doesOptionalHaveValue <A>(inout A?) -> Builtin.Int1 : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // users: %57, %98
%56 = apply %54<_SliceBuffer<T>, Int, Int, Int, Int, T>(%53#1, %2#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_0._Element>, @inout IndexingGenerator<τ_0_0>) -> ()
%57 = apply [transparent] %55<T>(%53#1) : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // user: %58
cond_br %57, bb6, bb7 // id: %58
bb5: // Preds: bb3
%59 = alloc_stack $Range<Int> // users: %60, %62, %64
store %0 to %59#1 : $*Range<Int> // id: %60
// function_ref specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.Range.isEmpty.getter : Swift.Bool
%61 = function_ref specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.Range.isEmpty.getter : Swift.Bool : $@cc(method) @thin (@in Range<Int>) -> Bool // user: %62
%62 = apply %61(%59#1) : $@cc(method) @thin (@in Range<Int>) -> Bool // user: %63
%63 = struct_extract %62 : $Bool, #Bool.value // user: %65
dealloc_stack %59#0 : $*@local_storage Range<Int> // id: %64
cond_br %63, bb2, bb11 // id: %65
bb6: // Preds: bb4 bb10
%66 = alloc_stack $T // users: %68, %69, %95, %96
// function_ref Swift._getOptionalValue <A>(Swift.Optional<A>) -> A
%67 = function_ref Swift._getOptionalValue <A>(A?) -> A : $@thin <τ_0_0> (@out τ_0_0, @in Optional<τ_0_0>) -> () // user: %68
%68 = apply [transparent] %67<T>(%66#1, %53#1) : $@thin <τ_0_0> (@out τ_0_0, @in Optional<τ_0_0>) -> ()
copy_addr %66#1 to [initialization] %3#1 : $*T // id: %69
%70 = alloc_stack $AnyObject // users: %75, %77, %90
// function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B
%71 = function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> () // user: %75
%72 = alloc_stack $T // users: %73, %75, %89
copy_addr %3#1 to [initialization] %72#1 : $*T // id: %73
%74 = metatype $@thick AnyObject.Protocol // user: %75
%75 = apply [transparent] %71<T, AnyObject>(%70#1, %72#1, %74) : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> ()
%76 = alloc_stack $T // users: %77, %84, %88
checked_cast_addr_br take_always AnyObject in %70#1 : $*AnyObject to T in %76#1 : $*T, bb8, bb9 // id: %77
bb7: // Preds: bb4 bb10
dealloc_stack %53#0 : $*@local_storage Optional<T> // id: %78
%79 = struct_element_addr %2#1 : $*IndexingGenerator<_SliceBuffer<T>>, #IndexingGenerator._elements // user: %80
%80 = struct_element_addr %79 : $*_SliceBuffer<T>, #_SliceBuffer.owner // user: %81
%81 = load %80 : $*Optional<AnyObject> // user: %82
release_value %81 : $Optional<AnyObject> // id: %82
br bb2 // id: %83
bb8: // Preds: bb6
destroy_addr %76#1 : $*T // id: %84
br bb10(%38 : $Builtin.Int1) // id: %85
bb9: // Preds: bb6
br bb10(%17 : $Builtin.Int1) // id: %86
bb10(%87 : $Builtin.Int1): // Preds: bb8 bb9
dealloc_stack %76#0 : $*@local_storage T // id: %88
dealloc_stack %72#0 : $*@local_storage T // id: %89
dealloc_stack %70#0 : $*@local_storage AnyObject // id: %90
%91 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %92
%92 = apply %91(%87, %38) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %93
cond_fail %92 : $Builtin.Int1 // id: %93
destroy_addr %3#1 : $*T // id: %94
destroy_addr %66#1 : $*T // id: %95
dealloc_stack %66#0 : $*@local_storage T // id: %96
%97 = apply %54<_SliceBuffer<T>, Int, Int, Int, Int, T>(%53#1, %2#1) : $@cc(method) @thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out Optional<τ_0_0._Element>, @inout IndexingGenerator<τ_0_0>) -> ()
%98 = apply [transparent] %55<T>(%53#1) : $@thin <τ_0_0> (@inout Optional<τ_0_0>) -> Builtin.Int1 // user: %99
cond_br %98, bb6, bb7 // id: %99
bb11: // Preds: bb5
// function_ref Swift._ArrayBuffer._nonNative.getter : Swift.Optional<Swift._SwiftNSArrayRequiredOverridesType>
%100 = function_ref Swift._ArrayBuffer._nonNative.getter : Swift._SwiftNSArrayRequiredOverridesType? : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned Optional<_SwiftNSArrayRequiredOverridesType> // user: %102
retain_value %10 : $Optional<Builtin.NativeObject> // id: %101
%102 = apply %100<T>(%1) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned Optional<_SwiftNSArrayRequiredOverridesType> // users: %103, %104
switch_enum %102 : $Optional<_SwiftNSArrayRequiredOverridesType>, case #Optional.Some!enumelt.1: bb12, case #Optional.None!enumelt: bb13 // id: %103
bb12: // Preds: bb11
%104 = unchecked_enum_data %102 : $Optional<_SwiftNSArrayRequiredOverridesType>, #Optional.Some!enumelt.1 // users: %128, %132, %133, %134, %151
%105 = alloc_stack $Range<Int> // users: %106, %108, %109
store %0 to %105#1 : $*Range<Int> // id: %106
// function_ref specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.Range.generate <A : Swift.ForwardIndexType>(Swift.Range<A>)() -> Swift.RangeGenerator<A>
%107 = function_ref specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.Range.generate <A : Swift.ForwardIndexType>(Swift.Range<A>)() -> Swift.RangeGenerator<A> : $@cc(method) @thin (@out RangeGenerator<Int>, @in Range<Int>) -> () // user: %108
%108 = apply %107(%4#1, %105#1) : $@cc(method) @thin (@out RangeGenerator<Int>, @in Range<Int>) -> ()
dealloc_stack %105#0 : $*@local_storage Range<Int> // id: %109
%110 = alloc_stack $Optional<Int> // users: %115, %116, %124, %127
br bb14 // id: %111
bb13: // Preds: bb11
cond_fail %38 : $Builtin.Int1 // id: %112
unreachable // id: %113
bb14: // Preds: bb12 bb21
// function_ref specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.RangeGenerator.next <A : Swift.ForwardIndexType>(inout Swift.RangeGenerator<A>)() -> Swift.Optional<A>
%114 = function_ref specialization <Swift.Int with Swift.Int : Swift.ForwardIndexType, Swift.Int with Swift.Int : Swift._SignedIntegerType, Swift.Int with Swift.Int : Swift._BuiltinIntegerLiteralConvertible, Swift.Int> of Swift.RangeGenerator.next <A : Swift.ForwardIndexType>(inout Swift.RangeGenerator<A>)() -> A? : $@cc(method) @thin (@out Optional<Int>, @inout RangeGenerator<Int>) -> () // user: %115
%115 = apply %114(%110#1, %4#1) : $@cc(method) @thin (@out Optional<Int>, @inout RangeGenerator<Int>) -> ()
%116 = load %110#1 : $*Optional<Int> // users: %118, %124, %126, %130
%117 = alloc_stack $Optional<Int> // users: %118, %121, %123
store %116 to %117#1 : $*Optional<Int> // id: %118
%119 = struct $_OptionalNilComparisonType () // user: %121
// function_ref specialization <Swift.Int> of Swift.!= infix <A>(Swift.Optional<A>, Swift._OptionalNilComparisonType) -> Swift.Bool
%120 = function_ref specialization <Swift.Int> of Swift.!= infix <A>(A?, Swift._OptionalNilComparisonType) -> Swift.Bool : $@thin (@in Optional<Int>, _OptionalNilComparisonType) -> Bool // user: %121
%121 = apply %120(%117#1, %119) : $@thin (@in Optional<Int>, _OptionalNilComparisonType) -> Bool // user: %122
%122 = struct_extract %121 : $Bool, #Bool.value // user: %125
dealloc_stack %117#0 : $*@local_storage Optional<Int> // id: %123
store %116 to %110#1 : $*Optional<Int> // id: %124
cond_br %122, bb15, bb16 // id: %125
bb15: // Preds: bb14
switch_enum %116 : $Optional<Int>, case #Optional.Some!enumelt.1: bb17, case #Optional.None!enumelt: bb18 // id: %126
bb16: // Preds: bb14
dealloc_stack %110#0 : $*@local_storage Optional<Int> // id: %127
strong_release %104 : $_SwiftNSArrayRequiredOverridesType // id: %128
br bb2 // id: %129
bb17: // Preds: bb15
%130 = unchecked_enum_data %116 : $Optional<Int>, #Optional.Some!enumelt.1 // user: %135
%131 = alloc_stack $AnyObject // users: %137, %139, %147
%132 = project_existential_ref %104 : $_SwiftNSArrayRequiredOverridesType to $@sil_self _SwiftNSArrayRequiredOverridesType // user: %135
%133 = protocol_method [volatile] %104 : $_SwiftNSArrayRequiredOverridesType, #_SwiftNSArrayRequiredOverridesType.objectAtIndex!1.foreign : <`Self` : _SwiftNSArrayRequiredOverridesType> Self -> (Int) -> AnyObject, $@cc(objc_method) @thin (Int, @sil_self _SwiftNSArrayRequiredOverridesType) -> @autoreleased AnyObject // user: %135
strong_retain %104 : $_SwiftNSArrayRequiredOverridesType // id: %134
%135 = apply %133(%130, %132) : $@cc(objc_method) @thin (Int, @sil_self _SwiftNSArrayRequiredOverridesType) -> @autoreleased AnyObject // users: %136, %137
strong_retain_autoreleased %135 : $AnyObject // id: %136
store %135 to %131#1 : $*AnyObject // id: %137
%138 = alloc_stack $T // users: %139, %142, %146
checked_cast_addr_br take_always AnyObject in %131#1 : $*AnyObject to T in %138#1 : $*T, bb19, bb20 // id: %139
bb18: // Preds: bb15
cond_fail %38 : $Builtin.Int1 // id: %140
unreachable // id: %141
bb19: // Preds: bb17
destroy_addr %138#1 : $*T // id: %142
br bb21(%38 : $Builtin.Int1) // id: %143
bb20: // Preds: bb17
br bb21(%17 : $Builtin.Int1) // id: %144
bb21(%145 : $Builtin.Int1): // Preds: bb19 bb20
dealloc_stack %138#0 : $*@local_storage T // id: %146
dealloc_stack %131#0 : $*@local_storage AnyObject // id: %147
%148 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %149
%149 = apply %148(%145, %38) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %150
cond_fail %149 : $Builtin.Int1 // id: %150
strong_release %104 : $_SwiftNSArrayRequiredOverridesType // id: %151
br bb14 // id: %152
}
// Swift._ArrayBuffer._isNative.getter : Swift.Bool
sil public_external Swift._ArrayBuffer._isNative.getter : Swift.Bool : $@cc(method) @thin <T> (@owned _ArrayBuffer<T>) -> Bool {
bb0(%0 : $_ArrayBuffer<T>):
// function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool
%1 = function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %3
%2 = metatype $@thick T.Type // user: %3
%3 = apply %1<T>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %4
%4 = struct_extract %3 : $Bool, #Bool.value // user: %5
cond_br %4, bb1, bb2 // id: %5
bb1: // Preds: bb0
%6 = struct_extract %0 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %8
// function_ref Swift._ArrayBuffer.indirect.getter : Swift._IndirectArrayBuffer
%7 = function_ref Swift._ArrayBuffer.indirect.getter : Swift._IndirectArrayBuffer : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _IndirectArrayBuffer // user: %9
retain_value %6 : $Optional<Builtin.NativeObject> // id: %8
%9 = apply %7<T>(%0) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _IndirectArrayBuffer // users: %10, %16
%10 = ref_element_addr %9 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isCocoa // user: %11
%11 = struct_element_addr %10 : $*Bool, #Bool.value // user: %12
%12 = load %11 : $*Builtin.Int1 // user: %15
%13 = integer_literal $Builtin.Int1, -1 // user: %15
%14 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %15
%15 = apply %14(%12, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
strong_release %9 : $_IndirectArrayBuffer // id: %16
br bb3(%15 : $Builtin.Int1) // id: %17
bb2: // Preds: bb0
%18 = integer_literal $Builtin.Int1, -1 // user: %19
br bb3(%18 : $Builtin.Int1) // id: %19
bb3(%20 : $Builtin.Int1): // Preds: bb1 bb2
%21 = struct $Bool (%20 : $Builtin.Int1) // user: %24
%22 = struct_extract %0 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %23
release_value %22 : $Optional<Builtin.NativeObject> // id: %23
return %21 : $Bool // id: %24
}
// Swift._ArrayBuffer._native.getter : Swift._ContiguousArrayBuffer<A>
sil public_external Swift._ArrayBuffer._native.getter : Swift._ContiguousArrayBuffer<A> : $@cc(method) @thin <T> (@owned _ArrayBuffer<T>) -> @owned _ContiguousArrayBuffer<T> {
bb0(%0 : $_ArrayBuffer<T>):
// function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool
%1 = function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %3
%2 = metatype $@thick T.Type // users: %3, %40
%3 = apply %1<T>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %4
%4 = struct_extract %3 : $Bool, #Bool.value // user: %5
cond_br %4, bb1, bb2 // id: %5
bb1: // Preds: bb0
%6 = struct_extract %0 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %8
// function_ref Swift._ArrayBuffer.indirect.getter : Swift._IndirectArrayBuffer
%7 = function_ref Swift._ArrayBuffer.indirect.getter : Swift._IndirectArrayBuffer : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _IndirectArrayBuffer // user: %9
retain_value %6 : $Optional<Builtin.NativeObject> // id: %8
%9 = apply %7<T>(%0) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _IndirectArrayBuffer // users: %10, %39, %40, %47
%10 = ref_element_addr %9 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isCocoa // user: %11
%11 = struct_element_addr %10 : $*Bool, #Bool.value // user: %12
%12 = load %11 : $*Builtin.Int1 // user: %15
%13 = integer_literal $Builtin.Int1, -1 // users: %15, %17
%14 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %15
%15 = apply %14(%12, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
%16 = builtin_function_ref "int_expect_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
%17 = apply %16(%15, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %18
cond_br %17, bb4, bb5 // id: %18
bb2: // Preds: bb0
// function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(Swift.Optional<Swift._ContiguousArrayStorage<A>>) -> Swift._ContiguousArrayBuffer<A>
%19 = function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)(Swift._ContiguousArrayStorage<A>?) -> Swift._ContiguousArrayBuffer<A> : $@thin <τ_0_0> (@owned Optional<_ContiguousArrayStorage<τ_0_0>>, @thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %30
%20 = metatype $@thin _ContiguousArrayBuffer<T>.Type // user: %30
// function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B
%21 = function_ref Swift.unsafeBitCast <A, B>(A, B.Type) -> B : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> () // user: %28
%22 = alloc_stack $Optional<Builtin.NativeObject> // users: %24, %28, %32
%23 = struct_extract %0 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // users: %24, %27
store %23 to %22#1 : $*Optional<Builtin.NativeObject> // id: %24
%25 = metatype $@thick Optional<_ContiguousArrayStorage<T>>.Type // user: %28
%26 = alloc_stack $Optional<_ContiguousArrayStorage<T>> // users: %28, %29, %31
retain_value %23 : $Optional<Builtin.NativeObject> // id: %27
%28 = apply [transparent] %21<Builtin.NativeObject?, _ContiguousArrayStorage<T>?>(%26#1, %22#1, %25) : $@thin <τ_0_0, τ_0_1> (@out τ_0_1, @in τ_0_0, @thick τ_0_1.Type) -> ()
%29 = load %26#1 : $*Optional<_ContiguousArrayStorage<T>> // user: %30
%30 = apply %19<T>(%29, %20) : $@thin <τ_0_0> (@owned Optional<_ContiguousArrayStorage<τ_0_0>>, @thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %33
dealloc_stack %26#0 : $*@local_storage Optional<_ContiguousArrayStorage<T>> // id: %31
dealloc_stack %22#0 : $*@local_storage Optional<Builtin.NativeObject> // id: %32
br bb3(%30 : $_ContiguousArrayBuffer<T>) // id: %33
bb3(%34 : $_ContiguousArrayBuffer<T>): // Preds: bb2 bb6
%35 = struct_extract %0 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %36
release_value %35 : $Optional<Builtin.NativeObject> // id: %36
return %34 : $_ContiguousArrayBuffer<T> // id: %37
bb4: // Preds: bb1
// function_ref Swift._IndirectArrayBuffer.getNativeBufferOf (Swift._IndirectArrayBuffer)<A>(A.Type) -> Swift._ContiguousArrayBuffer<A>
%38 = function_ref Swift._IndirectArrayBuffer.getNativeBufferOf (Swift._IndirectArrayBuffer)<A>(A.Type) -> Swift._ContiguousArrayBuffer<A> : $@cc(method) @thin <τ_0_0> (@thick τ_0_0.Type, @owned _IndirectArrayBuffer) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %40
strong_retain %9 : $_IndirectArrayBuffer // id: %39
%40 = apply %38<T>(%2, %9) : $@cc(method) @thin <τ_0_0> (@thick τ_0_0.Type, @owned _IndirectArrayBuffer) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %41
br bb6(%40 : $_ContiguousArrayBuffer<T>) // id: %41
bb5: // Preds: bb1
// function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)() -> Swift._ContiguousArrayBuffer<A>
%42 = function_ref Swift._ContiguousArrayBuffer.init <A>(Swift._ContiguousArrayBuffer<A>.Type)() -> Swift._ContiguousArrayBuffer<A> : $@thin <τ_0_0> (@thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %44
%43 = metatype $@thin _ContiguousArrayBuffer<T>.Type // user: %44
%44 = apply %42<T>(%43) : $@thin <τ_0_0> (@thin _ContiguousArrayBuffer<τ_0_0>.Type) -> @owned _ContiguousArrayBuffer<τ_0_0> // user: %45
br bb6(%44 : $_ContiguousArrayBuffer<T>) // id: %45
bb6(%46 : $_ContiguousArrayBuffer<T>): // Preds: bb4 bb5
strong_release %9 : $_IndirectArrayBuffer // id: %47
br bb3(%46 : $_ContiguousArrayBuffer<T>) // id: %48
}
// Swift._ArrayBuffer._nonNative.getter : Swift.Optional<Swift._SwiftNSArrayRequiredOverridesType>
sil public_external Swift._ArrayBuffer._nonNative.getter : Swift._SwiftNSArrayRequiredOverridesType? : $@cc(method) @thin <T> (@owned _ArrayBuffer<T>) -> @owned Optional<_SwiftNSArrayRequiredOverridesType> {
bb0(%0 : $_ArrayBuffer<T>):
// function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool
%1 = function_ref Swift._isClassOrObjCExistential <A>(A.Type) -> Swift.Bool : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %3
%2 = metatype $@thick T.Type // user: %3
%3 = apply %1<T>(%2) : $@thin <τ_0_0> (@thick τ_0_0.Type) -> Bool // user: %4
%4 = struct_extract %3 : $Bool, #Bool.value // user: %5
cond_br %4, bb1, bb2 // id: %5
bb1: // Preds: bb0
%6 = struct_extract %0 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %8
// function_ref Swift._ArrayBuffer.indirect.getter : Swift._IndirectArrayBuffer
%7 = function_ref Swift._ArrayBuffer.indirect.getter : Swift._IndirectArrayBuffer : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _IndirectArrayBuffer // user: %9
retain_value %6 : $Optional<Builtin.NativeObject> // id: %8
%9 = apply %7<T>(%0) : $@cc(method) @thin <τ_0_0> (@owned _ArrayBuffer<τ_0_0>) -> @owned _IndirectArrayBuffer // users: %10, %28, %29, %33
%10 = ref_element_addr %9 : $_IndirectArrayBuffer, #_IndirectArrayBuffer.isCocoa // user: %11
%11 = struct_element_addr %10 : $*Bool, #Bool.value // user: %12
%12 = load %11 : $*Builtin.Int1 // user: %15
%13 = integer_literal $Builtin.Int1, -1 // users: %15, %17
%14 = builtin_function_ref "xor_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %15
%15 = apply %14(%12, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
%16 = builtin_function_ref "int_expect_Int1" : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %17
%17 = apply %16(%15, %13) : $@thin (Builtin.Int1, Builtin.Int1) -> Builtin.Int1 // user: %18
cond_br %17, bb4, bb5 // id: %18
bb2: // Preds: bb0
%19 = enum $Optional<_SwiftNSArrayRequiredOverridesType>, #Optional.None!enumelt // user: %20
br bb3(%19 : $Optional<_SwiftNSArrayRequiredOverridesType>) // id: %20
bb3(%21 : $Optional<_SwiftNSArrayRequiredOverridesType>): // Preds: bb2 bb6
%22 = struct_extract %0 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // user: %23
release_value %22 : $Optional<Builtin.NativeObject> // id: %23
return %21 : $Optional<_SwiftNSArrayRequiredOverridesType> // id: %24
bb4: // Preds: bb1
%25 = enum $Optional<_SwiftNSArrayRequiredOverridesType>, #Optional.None!enumelt // user: %26
br bb6(%25 : $Optional<_SwiftNSArrayRequiredOverridesType>) // id: %26
bb5: // Preds: bb1
// function_ref Swift._IndirectArrayBuffer.getCocoa (Swift._IndirectArrayBuffer)() -> Swift._SwiftNSArrayRequiredOverridesType
%27 = function_ref Swift._IndirectArrayBuffer.getCocoa (Swift._IndirectArrayBuffer)() -> Swift._SwiftNSArrayRequiredOverridesType : $@cc(method) @thin (@owned _IndirectArrayBuffer) -> @owned _SwiftNSArrayRequiredOverridesType // user: %29
strong_retain %9 : $_IndirectArrayBuffer // id: %28
%29 = apply %27(%9) : $@cc(method) @thin (@owned _IndirectArrayBuffer) -> @owned _SwiftNSArrayRequiredOverridesType // user: %30
%30 = enum $Optional<_SwiftNSArrayRequiredOverridesType>, #Optional.Some!enumelt.1, %29 : $_SwiftNSArrayRequiredOverridesType // user: %31
br bb6(%30 : $Optional<_SwiftNSArrayRequiredOverridesType>) // id: %31
bb6(%32 : $Optional<_SwiftNSArrayRequiredOverridesType>): // Preds: bb4 bb5
strong_release %9 : $_IndirectArrayBuffer // id: %33
br bb3(%32 : $Optional<_SwiftNSArrayRequiredOverridesType>) // id: %34
}
// Swift._ArrayBuffer.indirect.getter : Swift._IndirectArrayBuffer
sil public_external Swift._ArrayBuffer.indirect.getter : Swift._IndirectArrayBuffer : $@cc(method) @thin <T> (@owned _ArrayBuffer<T>) -> @owned _IndirectArrayBuffer {
bb0(%0 : $_ArrayBuffer<T>):
%1 = struct_extract %0 : $_ArrayBuffer<T>, #_ArrayBuffer.storage // users: %2, %3
switch_enum %1 : $Optional<Builtin.NativeObject>, case #Optional.Some!enumelt.1: bb1, case #Optional.None!enumelt: bb2 // id: %2
bb1: // Preds: bb0
%3 = unchecked_enum_data %1 : $Optional<Builtin.NativeObject>, #Optional.Some!enumelt.1 // user: %4
%4 = unchecked_ref_cast %3 : $Builtin.NativeObject to $_IndirectArrayBuffer // user: %5
return %4 : $_IndirectArrayBuffer // id: %5
bb2: // Preds: bb0
%6 = integer_literal $Builtin.Int1, -1 // user: %7
cond_fail %6 : $Builtin.Int1 // id: %7
unreachable // id: %8
}
// protocol witness for Swift.BooleanType.boolValue.getter : Swift.Bool in conformance Swift.Bool : Swift.BooleanType
sil public_external protocol witness for Swift.BooleanType.boolValue.getter : Swift.Bool in conformance Swift.Bool : Swift.BooleanType : $@cc(witness_method) @thin (@inout Bool) -> Bool {
bb0(%0 : $*Bool):
%1 = load %0 : $*Bool // user: %2
return %1 : $Bool // id: %2
}
// Swift._SliceBuffer.generate <A>(Swift._SliceBuffer<A>)() -> Swift.IndexingGenerator<Swift._SliceBuffer<A>>
sil public_external Swift._SliceBuffer.generate <A>(Swift._SliceBuffer<A>)() -> Swift.IndexingGenerator<Swift._SliceBuffer<A>> : $@cc(method) @thin <T> (@owned _SliceBuffer<T>) -> @owned IndexingGenerator<_SliceBuffer<T>> {
bb0(%0 : $_SliceBuffer<T>):
// function_ref Swift.IndexingGenerator.init <A : Swift._CollectionType>(Swift.IndexingGenerator<A>.Type)(A) -> Swift.IndexingGenerator<A>
%1 = function_ref Swift.IndexingGenerator.init <A : Swift._CollectionType>(Swift.IndexingGenerator<A>.Type)(A) -> Swift.IndexingGenerator<A> : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out IndexingGenerator<τ_0_0>, @in τ_0_0, @thin IndexingGenerator<τ_0_0>.Type) -> () // user: %6
%2 = metatype $@thin IndexingGenerator<_SliceBuffer<T>>.Type // user: %6
%3 = alloc_stack $_SliceBuffer<T> // users: %4, %6, %9
store %0 to %3#1 : $*_SliceBuffer<T> // id: %4
%5 = alloc_stack $IndexingGenerator<_SliceBuffer<T>> // users: %6, %7, %8
%6 = apply %1<_SliceBuffer<T>, Int, Int, Int, Int, T>(%5#1, %3#1, %2) : $@thin <τ_0_0 where τ_0_0 : _CollectionType, τ_0_0.Index : ForwardIndexType, τ_0_0.Index.Distance : _SignedIntegerType, τ_0_0.Index.Distance.IntegerLiteralType : _BuiltinIntegerLiteralConvertible> (@out IndexingGenerator<τ_0_0>, @in τ_0_0, @thin IndexingGenerator<τ_0_0>.Type) -> ()
%7 = load %5#1 : $*IndexingGenerator<_SliceBuffer<T>> // user: %10
dealloc_stack %5#0 : $*@local_storage IndexingGenerator<_SliceBuffer<T>> // id: %8
dealloc_stack %3#0 : $*@local_storage _SliceBuffer<T> // id: %9
return %7 : $IndexingGenerator<_SliceBuffer<T>> // id: %10
}
// Swift._ContiguousArrayBuffer.subscript.getter (Swift.Range<Swift.Int>) -> Swift._SliceBuffer<A>
sil public_external Swift._ContiguousArrayBuffer.subscript.getter (Swift.Range<Swift.Int>) -> Swift._SliceBuffer<A> : $@cc(method) @thin <T> (Range<Int>, @owned _ContiguousArrayBuffer<T>) -> @owned _SliceBuffer<T> {
bb0(%0 : $Range<Int>, %1 : $_ContiguousArrayBuffer<T>):
// function_ref Swift._SliceBuffer.init <A>(Swift._SliceBuffer<A>.Type)(owner : Swift.Optional<Swift.AnyObject>, start : Swift.UnsafeMutablePointer<A>, count : Swift.Int, hasNativeBuffer : Swift.Bool) -> Swift._SliceBuffer<A>
View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment