Skip to content

Instantly share code, notes, and snippets.

@davidbarsky
Created December 16, 2015 21:17
Show Gist options
  • Save davidbarsky/32e8d83e8ce178279c8c to your computer and use it in GitHub Desktop.
Save davidbarsky/32e8d83e8ce178279c8c to your computer and use it in GitHub Desktop.
; ModuleID = '-'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.11"
%Sa = type <{ %VSs12_ArrayBuffer }>
%VSs12_ArrayBuffer = type <{ %VSs14_BridgeStorage }>
%VSs14_BridgeStorage = type <{ %swift.bridge* }>
%swift.bridge = type opaque
%VSs5Int32 = type <{ i32 }>
%VSs20UnsafeMutablePointer = type <{ i8* }>
%VSC23_SwiftEmptyArrayStorage = type <{ %VSC10HeapObject, %VSC22_SwiftArrayBodyStorage }>
%VSC10HeapObject = type <{ %VSs14COpaquePointer, %VSC14StrongRefCount, %VSC12WeakRefCount }>
%VSs14COpaquePointer = type <{ i8* }>
%VSC14StrongRefCount = type <{ %VSs6UInt32 }>
%VSs6UInt32 = type <{ i32 }>
%VSC12WeakRefCount = type <{ %VSs6UInt32 }>
%VSC22_SwiftArrayBodyStorage = type <{ %Si, %Su }>
%Si = type <{ i64 }>
%Su = type <{ i64 }>
%swift.type = type { i64 }
%swift.type_pattern = type opaque
%VSs17IndexingGenerator = type <{ %Sa, %Si }>
%Sq.19 = type <{ [8 x i8], [1 x i8] }>
%VSs17IndexingGenerator.16 = type <{}>
%swift.opaque = type opaque
%Sq = type <{}>
%VSs17IndexingGenerator.18 = type <{}>
%"protocol<>" = type { [24 x i8], %swift.type* }
@_Tv8contents7numbersGSaSi_ = global %Sa zeroinitializer, align 8
@_TZvOSs7Process5_argcVSs5Int32 = external global %VSs5Int32, align 4
@globalinit_33_1BDF70FFC18749BAB495A73B459ED2F0_token6 = external global i64, align 8
@_TZvOSs7Process11_unsafeArgvGVSs20UnsafeMutablePointerGS0_VSs4Int8__ = external global %VSs20UnsafeMutablePointer, align 8
@_swiftEmptyArrayStorage = external global %VSC23_SwiftEmptyArrayStorage, align 8
@_TMLGSaSi_ = linkonce_odr hidden global %swift.type* null, align 8
@_TMPdSa = external global %swift.type_pattern
@_TMdSi = external global %swift.type
@_TWPurGSaq__Ss14CollectionTypeSs = external global i8*
@_TWPSiSs16ForwardIndexTypeSs = external global i8*
@_TWPSiSs18_SignedIntegerTypeSs = external global i8*
@_TWPSiSs33_BuiltinIntegerLiteralConvertibleSs = external global i8*
@_TMLGVSs10ArraySliceSi_ = linkonce_odr hidden global %swift.type* null, align 8
@_TMPdVSs10ArraySlice = external global %swift.type_pattern
@_TWPurGVSs10ArraySliceq__Ss9IndexableSs = external global i8*
@_TWPurGVSs10ArraySliceq__Ss12SequenceTypeSs = external global i8*
@_TMLGVSs17IndexingGeneratorGVSs10ArraySliceSi__ = linkonce_odr hidden global %swift.type* null, align 8
@_TMPdVSs17IndexingGenerator = external global %swift.type_pattern
@_TWPuRq_Ss9Indexable_GVSs17IndexingGeneratorq__Ss13GeneratorTypeSs = external global i8*
@_TMLGVSs17IndexingGeneratorGSaSi__ = linkonce_odr hidden global %swift.type* null, align 8
@_TWPurGSaq__Ss9IndexableSs = external global i8*
@llvm.used = appending global [1 x i8*] [i8* bitcast (%Sa* @_Tv8contents7numbersGSaSi_ to i8*)], section "llvm.metadata", align 8
define i32 @main(i32, i8**) #0 {
entry:
%2 = alloca %VSs17IndexingGenerator, align 8
%3 = alloca %Sa, align 8
%4 = alloca %VSs17IndexingGenerator, align 8
%5 = alloca %Sq.19, align 8
%6 = bitcast i8** %1 to i8*
store i32 %0, i32* getelementptr inbounds (%VSs5Int32* @_TZvOSs7Process5_argcVSs5Int32, i32 0, i32 0), align 4
%7 = load i64* @globalinit_33_1BDF70FFC18749BAB495A73B459ED2F0_token6, align 8
%8 = icmp ne i64 %7, -1
br i1 %8, label %once_not_done, label %once_done
once_not_done: ; preds = %entry
call void @swift_once(i64* @globalinit_33_1BDF70FFC18749BAB495A73B459ED2F0_token6, i8* bitcast (void ()* @globalinit_33_1BDF70FFC18749BAB495A73B459ED2F0_func6 to i8*))
br label %once_done
once_done: ; preds = %once_not_done, %entry
store i8* %6, i8** getelementptr inbounds (%VSs20UnsafeMutablePointer* @_TZvOSs7Process11_unsafeArgvGVSs20UnsafeMutablePointerGS0_VSs4Int8__, i32 0, i32 0), align 8
%9 = call { %swift.bridge*, i8* } @_TTSg5Si___TFSs27_allocateUninitializedArrayurFBwTGSaq__Bp_(i64 10)
%10 = extractvalue { %swift.bridge*, i8* } %9, 0
%11 = extractvalue { %swift.bridge*, i8* } %9, 1
%12 = bitcast i8* %11 to %Si*
%.value = getelementptr inbounds %Si* %12, i32 0, i32 0
store i64 1, i64* %.value, align 8
%13 = getelementptr inbounds %Si* %12, i64 1
%.value1 = getelementptr inbounds %Si* %13, i32 0, i32 0
store i64 2, i64* %.value1, align 8
%14 = getelementptr inbounds %Si* %12, i64 2
%.value2 = getelementptr inbounds %Si* %14, i32 0, i32 0
store i64 3, i64* %.value2, align 8
%15 = getelementptr inbounds %Si* %12, i64 3
%.value3 = getelementptr inbounds %Si* %15, i32 0, i32 0
store i64 4, i64* %.value3, align 8
%16 = getelementptr inbounds %Si* %12, i64 4
%.value4 = getelementptr inbounds %Si* %16, i32 0, i32 0
store i64 5, i64* %.value4, align 8
%17 = getelementptr inbounds %Si* %12, i64 5
%.value5 = getelementptr inbounds %Si* %17, i32 0, i32 0
store i64 6, i64* %.value5, align 8
%18 = getelementptr inbounds %Si* %12, i64 6
%.value6 = getelementptr inbounds %Si* %18, i32 0, i32 0
store i64 7, i64* %.value6, align 8
%19 = getelementptr inbounds %Si* %12, i64 7
%.value7 = getelementptr inbounds %Si* %19, i32 0, i32 0
store i64 8, i64* %.value7, align 8
%20 = getelementptr inbounds %Si* %12, i64 8
%.value8 = getelementptr inbounds %Si* %20, i32 0, i32 0
store i64 9, i64* %.value8, align 8
%21 = getelementptr inbounds %Si* %12, i64 9
%.value9 = getelementptr inbounds %Si* %21, i32 0, i32 0
store i64 10, i64* %.value9, align 8
%22 = call %swift.bridge* @_TTSg5Si___TFSaCurfMGSaq__Ft12arrayLiteralGSaq___GSaq__(%swift.bridge* %10)
store %swift.bridge* %22, %swift.bridge** getelementptr inbounds (%Sa* @_Tv8contents7numbersGSaSi_, i32 0, i32 0, i32 0, i32 0), align 8
%23 = load %swift.bridge** getelementptr inbounds (%Sa* @_Tv8contents7numbersGSaSi_, i32 0, i32 0, i32 0, i32 0), align 8
%._buffer = getelementptr inbounds %Sa* %3, i32 0, i32 0
%._buffer._storage = getelementptr inbounds %VSs12_ArrayBuffer* %._buffer, i32 0, i32 0
%._buffer._storage.rawValue = getelementptr inbounds %VSs14_BridgeStorage* %._buffer._storage, i32 0, i32 0
store %swift.bridge* %23, %swift.bridge** %._buffer._storage.rawValue, align 8
%24 = call %swift.type* @_TMaGSaSi_() #3
%25 = call %swift.type* @_TMaGVSs10ArraySliceSi_() #3
%26 = call %swift.type* @_TMaGVSs17IndexingGeneratorGVSs10ArraySliceSi__() #3
%27 = bitcast %VSs17IndexingGenerator* %4 to %VSs17IndexingGenerator.16*
%28 = bitcast %Sa* %3 to %swift.opaque*
call void @_TFeRq_Ss14CollectionTypezqq_S_9GeneratorGVSs17IndexingGeneratorq__zqq_Ss9Indexable8_Elementqqq_S_9GeneratorSs13GeneratorType7Element_SsS_8generateuRq_S_zqq_S_9GeneratorGS0_q__zqq_S1_8_Elementqqq_S_9GeneratorS2_7Element_fq_FT_GS0_q__(%VSs17IndexingGenerator.16* noalias nocapture sret %27, %swift.type* %24, i8** @_TWPurGSaq__Ss14CollectionTypeSs, %swift.type* @_TMdSi, i8** @_TWPSiSs16ForwardIndexTypeSs, %swift.type* @_TMdSi, i8** @_TWPSiSs18_SignedIntegerTypeSs, %swift.type* @_TMdSi, i8** @_TWPSiSs33_BuiltinIntegerLiteralConvertibleSs, %swift.type* @_TMdSi, %swift.type* %25, i8** @_TWPurGVSs10ArraySliceq__Ss9IndexableSs, i8** @_TWPurGVSs10ArraySliceq__Ss12SequenceTypeSs, %swift.type* %26, i8** @_TWPuRq_Ss9Indexable_GVSs17IndexingGeneratorq__Ss13GeneratorTypeSs, %swift.type* @_TMdSi, %swift.type* @_TMdSi, i8** @_TWPSiSs16ForwardIndexTypeSs, %swift.type* @_TMdSi, i8** @_TWPSiSs18_SignedIntegerTypeSs, %swift.type* @_TMdSi, i8** @_TWPSiSs33_BuiltinIntegerLiteralConvertibleSs, %swift.type* @_TMdSi, %swift.type* %25, %swift.type* @_TMdSi, %swift.type* @_TMdSi, %swift.opaque* noalias nocapture %28)
%._elements = getelementptr inbounds %VSs17IndexingGenerator* %4, i32 0, i32 0
%._elements._buffer = getelementptr inbounds %Sa* %._elements, i32 0, i32 0
%._elements._buffer._storage = getelementptr inbounds %VSs12_ArrayBuffer* %._elements._buffer, i32 0, i32 0
%._elements._buffer._storage.rawValue = getelementptr inbounds %VSs14_BridgeStorage* %._elements._buffer._storage, i32 0, i32 0
%29 = load %swift.bridge** %._elements._buffer._storage.rawValue, align 8
%._position = getelementptr inbounds %VSs17IndexingGenerator* %4, i32 0, i32 1
%._position.value = getelementptr inbounds %Si* %._position, i32 0, i32 0
%30 = load i64* %._position.value, align 8
%._elements10 = getelementptr inbounds %VSs17IndexingGenerator* %2, i32 0, i32 0
%._elements10._buffer = getelementptr inbounds %Sa* %._elements10, i32 0, i32 0
%._elements10._buffer._storage = getelementptr inbounds %VSs12_ArrayBuffer* %._elements10._buffer, i32 0, i32 0
%._elements10._buffer._storage.rawValue = getelementptr inbounds %VSs14_BridgeStorage* %._elements10._buffer._storage, i32 0, i32 0
store %swift.bridge* %29, %swift.bridge** %._elements10._buffer._storage.rawValue, align 8
%._position11 = getelementptr inbounds %VSs17IndexingGenerator* %2, i32 0, i32 1
%._position11.value = getelementptr inbounds %Si* %._position11, i32 0, i32 0
store i64 %30, i64* %._position11.value, align 8
br label %31
; <label>:31 ; preds = %49, %48, %once_done
%32 = call %swift.type* @_TMaGVSs17IndexingGeneratorGSaSi__() #3
%33 = bitcast %Sq.19* %5 to %Sq*
%34 = bitcast %VSs17IndexingGenerator* %2 to %VSs17IndexingGenerator.18*
call void @_TFVSs17IndexingGenerator4nextuRq_Ss9Indexable_fRGS_q__FT_GSqqq_S0_8_Element_(%Sq* noalias nocapture sret %33, %swift.type* %32, %VSs17IndexingGenerator.18* nocapture %34)
%35 = bitcast %Sq.19* %5 to i64*
%36 = load i64* %35, align 8
%37 = getelementptr inbounds %Sq.19* %5, i32 0, i32 1
%38 = bitcast [1 x i8]* %37 to i1*
%39 = load i1* %38, align 8
%40 = xor i1 %39, true
br i1 %40, label %41, label %64
; <label>:41 ; preds = %31
%42 = icmp eq i64 %36, -9223372036854775808
br i1 %42, label %43, label %44
; <label>:43 ; preds = %41
br label %44
; <label>:44 ; preds = %43, %41
%45 = srem i64 %36, 2
br label %46
; <label>:46 ; preds = %44
%47 = icmp eq i64 %45, 0
br i1 %47, label %49, label %48
; <label>:48 ; preds = %46
br label %31
; <label>:49 ; preds = %46
%50 = call { %swift.bridge*, i8* } @_TTSg5P____TFSs27_allocateUninitializedArrayurFBwTGSaq__Bp_(i64 1)
%51 = extractvalue { %swift.bridge*, i8* } %50, 0
%52 = extractvalue { %swift.bridge*, i8* } %50, 1
%53 = bitcast i8* %52 to %"protocol<>"*
%54 = getelementptr inbounds %"protocol<>"* %53, i32 0, i32 1
store %swift.type* @_TMdSi, %swift.type** %54, align 8
%55 = getelementptr inbounds %"protocol<>"* %53, i32 0, i32 0
%object = bitcast [24 x i8]* %55 to %Si*
%object.value = getelementptr inbounds %Si* %object, i32 0, i32 0
store i64 %36, i64* %object.value, align 8
%56 = call { i8*, i64, i64 } @_TIFSs5printFTGSaP__9separatorSS10terminatorSS_T_A0_()
%57 = extractvalue { i8*, i64, i64 } %56, 0
%58 = extractvalue { i8*, i64, i64 } %56, 1
%59 = extractvalue { i8*, i64, i64 } %56, 2
%60 = call { i8*, i64, i64 } @_TIFSs5printFTGSaP__9separatorSS10terminatorSS_T_A1_()
%61 = extractvalue { i8*, i64, i64 } %60, 0
%62 = extractvalue { i8*, i64, i64 } %60, 1
%63 = extractvalue { i8*, i64, i64 } %60, 2
call void @_TFSs5printFTGSaP__9separatorSS10terminatorSS_T_(%swift.bridge* %51, i8* %57, i64 %58, i64 %59, i8* %61, i64 %62, i64 %63)
br label %31
; <label>:64 ; preds = %31
%._elements12 = getelementptr inbounds %VSs17IndexingGenerator* %2, i32 0, i32 0
%._elements12._buffer = getelementptr inbounds %Sa* %._elements12, i32 0, i32 0
%._elements12._buffer._storage = getelementptr inbounds %VSs12_ArrayBuffer* %._elements12._buffer, i32 0, i32 0
%._elements12._buffer._storage.rawValue = getelementptr inbounds %VSs14_BridgeStorage* %._elements12._buffer._storage, i32 0, i32 0
%toDestroy = load %swift.bridge** %._elements12._buffer._storage.rawValue, align 8
call void @swift_bridgeObjectRelease(%swift.bridge* %toDestroy) #4
ret i32 0
}
declare void @globalinit_33_1BDF70FFC18749BAB495A73B459ED2F0_func6() #0
declare void @swift_once(i64*, i8*)
declare { %swift.bridge*, i8* } @_TTSg5Si___TFSs27_allocateUninitializedArrayurFBwTGSaq__Bp_(i64) #0
declare %swift.bridge* @_TTSg5Si___TFSaCurfMGSaq__Ft12arrayLiteralGSaq___GSaq__(%swift.bridge*) #0
declare void @_TFeRq_Ss14CollectionTypezqq_S_9GeneratorGVSs17IndexingGeneratorq__zqq_Ss9Indexable8_Elementqqq_S_9GeneratorSs13GeneratorType7Element_SsS_8generateuRq_S_zqq_S_9GeneratorGS0_q__zqq_S1_8_Elementqqq_S_9GeneratorS2_7Element_fq_FT_GS0_q__(%VSs17IndexingGenerator.16* noalias nocapture sret, %swift.type*, i8**, %swift.type*, i8**, %swift.type*, i8**, %swift.type*, i8**, %swift.type*, %swift.type*, i8**, i8**, %swift.type*, i8**, %swift.type*, %swift.type*, i8**, %swift.type*, i8**, %swift.type*, i8**, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.opaque* noalias nocapture) #0
; Function Attrs: nounwind readnone
define linkonce_odr hidden %swift.type* @_TMaGSaSi_() #1 {
entry:
%0 = load %swift.type** @_TMLGSaSi_, align 8
%1 = icmp eq %swift.type* %0, null
br i1 %1, label %cacheIsNull, label %cont
cacheIsNull: ; preds = %entry
%2 = call %swift.type* @swift_getGenericMetadata1(%swift.type_pattern* @_TMPdSa, i8* bitcast (%swift.type* @_TMdSi to i8*)) #3
store %swift.type* %2, %swift.type** @_TMLGSaSi_, align 8
br label %cont
cont: ; preds = %cacheIsNull, %entry
%3 = phi %swift.type* [ %0, %entry ], [ %2, %cacheIsNull ]
ret %swift.type* %3
}
declare %swift.type* @swift_getGenericMetadata1(%swift.type_pattern*, i8*)
declare %swift.type* @swift_getGenericMetadata2(%swift.type_pattern*, i8*, i8*)
declare %swift.type* @swift_getGenericMetadata3(%swift.type_pattern*, i8*, i8*, i8*)
declare %swift.type* @swift_getGenericMetadata4(%swift.type_pattern*, i8*, i8*, i8*, i8*)
; Function Attrs: nounwind readnone
define linkonce_odr hidden %swift.type* @_TMaGVSs10ArraySliceSi_() #1 {
entry:
%0 = load %swift.type** @_TMLGVSs10ArraySliceSi_, align 8
%1 = icmp eq %swift.type* %0, null
br i1 %1, label %cacheIsNull, label %cont
cacheIsNull: ; preds = %entry
%2 = call %swift.type* @swift_getGenericMetadata1(%swift.type_pattern* @_TMPdVSs10ArraySlice, i8* bitcast (%swift.type* @_TMdSi to i8*)) #3
store %swift.type* %2, %swift.type** @_TMLGVSs10ArraySliceSi_, align 8
br label %cont
cont: ; preds = %cacheIsNull, %entry
%3 = phi %swift.type* [ %0, %entry ], [ %2, %cacheIsNull ]
ret %swift.type* %3
}
; Function Attrs: nounwind readnone
define linkonce_odr hidden %swift.type* @_TMaGVSs17IndexingGeneratorGVSs10ArraySliceSi__() #1 {
entry:
%generic.arguments = alloca { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }, align 8
%0 = load %swift.type** @_TMLGVSs17IndexingGeneratorGVSs10ArraySliceSi__, align 8
%1 = icmp eq %swift.type* %0, null
br i1 %1, label %cacheIsNull, label %cont
cacheIsNull: ; preds = %entry
%2 = call %swift.type* @_TMaGVSs10ArraySliceSi_() #3
%3 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 0
store %swift.type* %2, %swift.type** %3, align 8
%4 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 1
store %swift.type* @_TMdSi, %swift.type** %4, align 8
%5 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 2
store %swift.type* @_TMdSi, %swift.type** %5, align 8
%6 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 3
store %swift.type* @_TMdSi, %swift.type** %6, align 8
%7 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 4
store %swift.type* @_TMdSi, %swift.type** %7, align 8
%8 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 5
store %swift.type* @_TMdSi, %swift.type** %8, align 8
%9 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 6
store i8** @_TWPurGVSs10ArraySliceq__Ss9IndexableSs, i8*** %9, align 8
%10 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 7
store i8** @_TWPSiSs16ForwardIndexTypeSs, i8*** %10, align 8
%11 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 8
store i8** @_TWPSiSs18_SignedIntegerTypeSs, i8*** %11, align 8
%12 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 9
store i8** @_TWPSiSs33_BuiltinIntegerLiteralConvertibleSs, i8*** %12, align 8
%13 = bitcast { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments to i8*
%14 = call %swift.type* @swift_getGenericMetadata(%swift.type_pattern* @_TMPdVSs17IndexingGenerator, i8* %13) #5
store %swift.type* %14, %swift.type** @_TMLGVSs17IndexingGeneratorGVSs10ArraySliceSi__, align 8
br label %cont
cont: ; preds = %cacheIsNull, %entry
%15 = phi %swift.type* [ %0, %entry ], [ %14, %cacheIsNull ]
ret %swift.type* %15
}
declare %swift.type* @swift_getGenericMetadata(%swift.type_pattern*, i8*)
declare void @_TFVSs17IndexingGenerator4nextuRq_Ss9Indexable_fRGS_q__FT_GSqqq_S0_8_Element_(%Sq* noalias nocapture sret, %swift.type*, %VSs17IndexingGenerator.18* nocapture) #0
; Function Attrs: nounwind readnone
define linkonce_odr hidden %swift.type* @_TMaGVSs17IndexingGeneratorGSaSi__() #1 {
entry:
%generic.arguments = alloca { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }, align 8
%0 = load %swift.type** @_TMLGVSs17IndexingGeneratorGSaSi__, align 8
%1 = icmp eq %swift.type* %0, null
br i1 %1, label %cacheIsNull, label %cont
cacheIsNull: ; preds = %entry
%2 = call %swift.type* @_TMaGSaSi_() #3
%3 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 0
store %swift.type* %2, %swift.type** %3, align 8
%4 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 1
store %swift.type* @_TMdSi, %swift.type** %4, align 8
%5 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 2
store %swift.type* @_TMdSi, %swift.type** %5, align 8
%6 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 3
store %swift.type* @_TMdSi, %swift.type** %6, align 8
%7 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 4
store %swift.type* @_TMdSi, %swift.type** %7, align 8
%8 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 5
store %swift.type* @_TMdSi, %swift.type** %8, align 8
%9 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 6
store i8** @_TWPurGSaq__Ss9IndexableSs, i8*** %9, align 8
%10 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 7
store i8** @_TWPSiSs16ForwardIndexTypeSs, i8*** %10, align 8
%11 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 8
store i8** @_TWPSiSs18_SignedIntegerTypeSs, i8*** %11, align 8
%12 = getelementptr inbounds { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments, i32 0, i32 9
store i8** @_TWPSiSs33_BuiltinIntegerLiteralConvertibleSs, i8*** %12, align 8
%13 = bitcast { %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, %swift.type*, i8**, i8**, i8**, i8** }* %generic.arguments to i8*
%14 = call %swift.type* @swift_getGenericMetadata(%swift.type_pattern* @_TMPdVSs17IndexingGenerator, i8* %13) #5
store %swift.type* %14, %swift.type** @_TMLGVSs17IndexingGeneratorGSaSi__, align 8
br label %cont
cont: ; preds = %cacheIsNull, %entry
%15 = phi %swift.type* [ %0, %entry ], [ %14, %cacheIsNull ]
ret %swift.type* %15
}
declare void @swift_bridgeObjectRelease(%swift.bridge*)
; Function Attrs: noinline
declare void @_TFSs5printFTGSaP__9separatorSS10terminatorSS_T_(%swift.bridge*, i8*, i64, i64, i8*, i64, i64) #2
declare { %swift.bridge*, i8* } @_TTSg5P____TFSs27_allocateUninitializedArrayurFBwTGSaq__Bp_(i64) #0
; Function Attrs: noinline
declare { i8*, i64, i64 } @_TIFSs5printFTGSaP__9separatorSS10terminatorSS_T_A0_() #2
; Function Attrs: noinline
declare { i8*, i64, i64 } @_TIFSs5printFTGSaP__9separatorSS10terminatorSS_T_A1_() #2
attributes #0 = { "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "target-cpu"="core2" "target-features"="+ssse3,+cx16,+sse,+sse2,+sse3" }
attributes #1 = { nounwind readnone "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "target-cpu"="core2" "target-features"="+ssse3,+cx16,+sse,+sse2,+sse3" }
attributes #2 = { noinline "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "target-cpu"="core2" "target-features"="+ssse3,+cx16,+sse,+sse2,+sse3" }
attributes #3 = { nounwind readnone }
attributes #4 = { nounwind }
attributes #5 = { nounwind readonly }
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !10, !11}
!0 = !{i32 2, !"Dwarf Version", i32 3}
!1 = !{i32 1, !"Debug Info Version", i32 700000003}
!2 = !{i32 1, !"Objective-C Version", i32 2}
!3 = !{i32 1, !"Objective-C Image Info Version", i32 0}
!4 = !{i32 1, !"Objective-C Image Info Section", !"__DATA, __objc_imageinfo, regular, no_dead_strip"}
!5 = !{i32 4, !"Objective-C Garbage Collection", i32 768}
!6 = !{i32 6, !"Linker Options", !7}
!7 = !{!8, !9}
!8 = !{!"-lswiftCore"}
!9 = !{!"-lobjc"}
!10 = !{i32 1, !"PIC Level", i32 2}
!11 = !{i32 1, !"Swift Version", i32 3}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment