Created
December 16, 2015 21:17
-
-
Save davidbarsky/32e8d83e8ce178279c8c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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