Skip to content

Instantly share code, notes, and snippets.

@nacho4d
Last active August 29, 2015 14:13
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 nacho4d/94fdb72d8a3fee0c09e5 to your computer and use it in GitHub Desktop.
Save nacho4d/94fdb72d8a3fee0c09e5 to your computer and use it in GitHub Desktop.
$ swiftc -emit-ir /Users/nacho4d/Desktop/function2/function2/main.swift -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
; ModuleID = '-'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-darwin14.0.0"
%0 = type opaque
%1 = type opaque
%Si = type <{ i64 }>
%CSo8NSObject = type opaque
%swift.type = type { i64 }
%objc_class = type { %objc_class*, %objc_class*, %swift.opaque*, %swift.opaque*, i64 }
%swift.opaque = type opaque
%swift.full_heapmetadata = type { void (%swift.refcounted*)*, i8**, %swift.type }
%swift.refcounted = type { %swift.type*, i32, i32 }
%swift.full_type = type { i8**, %swift.type }
%swift.protocol = type { i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i32, i32 }
%CSo8NSNumber = type opaque
%SS = type <{ %VSs11_StringCore }>
%VSs11_StringCore = type <{ %VSs14COpaquePointer, %Su, %Sq }>
%VSs14COpaquePointer = type <{ i8* }>
%Su = type <{ i64 }>
%Sq = type <{ [8 x i8] }>
%PSs11CVarArgType_ = type { [24 x i8], %swift.type*, i8** }
%CSo8NSString = type opaque
%objc_object = type opaque
@_Tv4main2a1Si = global %Si zeroinitializer, align 8
@_Tv4main3objCSo8NSObject = global %CSo8NSObject* null, align 8
@_Tv4main2a2Si = global %Si zeroinitializer, align 8
@"\01L_selector_data(description)" = internal constant [12 x i8] c"description\00", section "__TEXT,__objc_methname,cstring_literals", align 1
@"\01L_selector(description)" = internal global i8* getelementptr inbounds ([12 x i8]* @"\01L_selector_data(description)", i64 0, i64 0), section "__DATA,__objc_selrefs,literal_pointers,no_dead_strip", align 8
@"_swift_FORCE_LOAD_$_swiftFoundation" = external global i1
@"_swift_FORCE_LOAD_$_swiftFoundation_$_main" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftFoundation"
@"_swift_FORCE_LOAD_$_swiftDarwin" = external global i1
@"_swift_FORCE_LOAD_$_swiftDarwin_$_main" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftDarwin"
@"_swift_FORCE_LOAD_$_swiftDispatch" = external global i1
@"_swift_FORCE_LOAD_$_swiftDispatch_$_main" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftDispatch"
@"_swift_FORCE_LOAD_$_swiftObjectiveC" = external global i1
@"_swift_FORCE_LOAD_$_swiftObjectiveC_$_main" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftObjectiveC"
@"_swift_FORCE_LOAD_$_swiftCoreGraphics" = external global i1
@"_swift_FORCE_LOAD_$_swiftCoreGraphics_$_main" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftCoreGraphics"
@"_swift_FORCE_LOAD_$_swiftSecurity" = external global i1
@"_swift_FORCE_LOAD_$_swiftSecurity_$_main" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftSecurity"
@_TMLCSo8NSObject = linkonce_odr hidden global %swift.type* null, align 8
@"OBJC_CLASS_$_NSObject" = external global %objc_class
@0 = private unnamed_addr constant [4 x i8] c"a1:\00"
@1 = private unnamed_addr constant [5 x i8] c" a2:\00"
@metadata = internal constant %swift.full_heapmetadata { void (%swift.refcounted*)* @arraydestroy, i8** null, %swift.type { i64 65 } }
@_TMdSS = external global %swift.full_type
@metadata2 = internal constant %swift.full_heapmetadata { void (%swift.refcounted*)* @arraydestroy1, i8** null, %swift.type { i64 65 } }
@_TMLPSs11CVarArgType_ = linkonce_odr hidden global %swift.type* null, align 8
@_TMpSs11CVarArgType = external global %swift.protocol
@"\01L_selector_data(allocWithZone:)" = internal constant [15 x i8] c"allocWithZone:\00", section "__TEXT,__objc_methname,cstring_literals", align 1
@"\01L_selector(allocWithZone:)" = internal global i8* getelementptr inbounds ([15 x i8]* @"\01L_selector_data(allocWithZone:)", i64 0, i64 0), section "__DATA,__objc_selrefs,literal_pointers,no_dead_strip", align 8
@"\01L_selector_data(init)" = internal constant [5 x i8] c"init\00", section "__TEXT,__objc_methname,cstring_literals", align 1
@"\01L_selector(init)" = internal global i8* getelementptr inbounds ([5 x i8]* @"\01L_selector_data(init)", i64 0, i64 0), section "__DATA,__objc_selrefs,literal_pointers,no_dead_strip", align 8
@llvm.used = appending global [15 x i8*] [i8* bitcast (%Si* @_Tv4main2a1Si to i8*), i8* bitcast (%CSo8NSObject** @_Tv4main3objCSo8NSObject to i8*), i8* bitcast (%Si* @_Tv4main2a2Si to i8*), i8* bitcast (i64 ()* @_TIF4main4DoItFTSiSi1cSi_SiA1_ to i8*), i8* bitcast (i64 (i64, i64, i64)* @_TF4main4DoItFTSiSi1cSi_Si to i8*), i8* bitcast (i64 (i64, i64, %CSo8NSObject*)* @_TF4main4DoItFTSiSiCSo8NSObject_Si to i8*), i8* bitcast (i8** @"\01L_selector(description)" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftFoundation_$_main" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftDarwin_$_main" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftDispatch_$_main" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftObjectiveC_$_main" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftCoreGraphics_$_main" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftSecurity_$_main" to i8*), i8* bitcast (i8** @"\01L_selector(allocWithZone:)" to i8*), i8* bitcast (i8** @"\01L_selector(init)" to i8*)], section "llvm.metadata", align 8
define internal void @top_level_code() {
entry:
%0 = call %CSo8NSNumber* @_TFE10FoundationSi19_bridgeToObjectiveCfSiFT_CSo8NSNumber(i64 6)
%1 = bitcast %CSo8NSNumber* %0 to %CSo8NSObject*
%2 = call i64 @_TF4main4DoItFTSiSiCSo8NSObject_Si(i64 4, i64 5, %CSo8NSObject* %1)
store i64 %2, i64* getelementptr inbounds (%Si* @_Tv4main2a1Si, i32 0, i32 0), align 8
%3 = call %swift.type* @_TMaCSo8NSObject() #0
%4 = call %CSo8NSObject* @_TFCSo8NSObjectCfMS_FT_S_(%swift.type* %3)
store %CSo8NSObject* %4, %CSo8NSObject** @_Tv4main3objCSo8NSObject, align 8
%5 = load %CSo8NSObject** @_Tv4main3objCSo8NSObject, align 8
%6 = call %CSo8NSObject* bitcast (%objc_object* (%objc_object*)* @objc_retain to %CSo8NSObject* (%CSo8NSObject*)*)(%CSo8NSObject* %5) #2
%7 = call i64 @_TF4main4DoItFTSiSiCSo8NSObject_Si(i64 4, i64 5, %CSo8NSObject* %5)
store i64 %7, i64* getelementptr inbounds (%Si* @_Tv4main2a2Si, i32 0, i32 0), align 8
%8 = call { i8*, i64, i64 } @_TFSSCfMSSFT21_builtinStringLiteralBp8byteSizeBw7isASCIIBi1__SS(i8* getelementptr inbounds ([4 x i8]* @0, i64 0, i64 0), i64 3, i1 true)
%9 = extractvalue { i8*, i64, i64 } %8, 0
%10 = extractvalue { i8*, i64, i64 } %8, 1
%11 = extractvalue { i8*, i64, i64 } %8, 2
%12 = call { i8*, i64, i64 } @_TFSS37convertFromStringInterpolationSegmentfMSSFSSSS(i8* %9, i64 %10, i64 %11)
%13 = extractvalue { i8*, i64, i64 } %12, 0
%14 = extractvalue { i8*, i64, i64 } %12, 1
%15 = extractvalue { i8*, i64, i64 } %12, 2
%16 = load i64* getelementptr inbounds (%Si* @_Tv4main2a1Si, i32 0, i32 0), align 8
%17 = call { i8*, i64, i64 } @_TFSS37convertFromStringInterpolationSegmentfMSSFSiSS(i64 %16)
%18 = extractvalue { i8*, i64, i64 } %17, 0
%19 = extractvalue { i8*, i64, i64 } %17, 1
%20 = extractvalue { i8*, i64, i64 } %17, 2
%21 = call { i8*, i64, i64 } @_TFSSCfMSSFT21_builtinStringLiteralBp8byteSizeBw7isASCIIBi1__SS(i8* getelementptr inbounds ([5 x i8]* @1, i64 0, i64 0), i64 4, i1 true)
%22 = extractvalue { i8*, i64, i64 } %21, 0
%23 = extractvalue { i8*, i64, i64 } %21, 1
%24 = extractvalue { i8*, i64, i64 } %21, 2
%25 = call { i8*, i64, i64 } @_TFSS37convertFromStringInterpolationSegmentfMSSFSSSS(i8* %22, i64 %23, i64 %24)
%26 = extractvalue { i8*, i64, i64 } %25, 0
%27 = extractvalue { i8*, i64, i64 } %25, 1
%28 = extractvalue { i8*, i64, i64 } %25, 2
%29 = load i64* getelementptr inbounds (%Si* @_Tv4main2a2Si, i32 0, i32 0), align 8
%30 = call { i8*, i64, i64 } @_TFSS37convertFromStringInterpolationSegmentfMSSFSiSS(i64 %29)
%31 = extractvalue { i8*, i64, i64 } %30, 0
%32 = extractvalue { i8*, i64, i64 } %30, 1
%33 = extractvalue { i8*, i64, i64 } %30, 2
%34 = call noalias %swift.refcounted* @swift_allocObject(%swift.type* getelementptr inbounds (%swift.full_heapmetadata* @metadata, i32 0, i32 2), i64 120, i64 7) #2
%35 = getelementptr inbounds %swift.refcounted* %34, i32 1
%36 = bitcast %swift.refcounted* %35 to i64*
store i64 4, i64* %36, align 8
%37 = bitcast %swift.refcounted* %34 to i8*
%38 = getelementptr inbounds i8* %37, i64 24
%39 = bitcast i8* %38 to %SS*
%40 = bitcast %SS* %39 to i8*
call void @llvm.memset.p0i8.i64(i8* %40, i8 0, i64 96, i32 8, i1 false)
%._core = getelementptr inbounds %SS* %39, i32 0, i32 0
%._core._baseAddress = getelementptr inbounds %VSs11_StringCore* %._core, i32 0, i32 0
%._core._baseAddress.value = getelementptr inbounds %VSs14COpaquePointer* %._core._baseAddress, i32 0, i32 0
store i8* %13, i8** %._core._baseAddress.value, align 8
%._core._countAndFlags = getelementptr inbounds %VSs11_StringCore* %._core, i32 0, i32 1
%._core._countAndFlags.value = getelementptr inbounds %Su* %._core._countAndFlags, i32 0, i32 0
store i64 %14, i64* %._core._countAndFlags.value, align 8
%._core._owner = getelementptr inbounds %VSs11_StringCore* %._core, i32 0, i32 2
%41 = bitcast %Sq* %._core._owner to i64*
store i64 %15, i64* %41, align 8
%42 = getelementptr inbounds %SS* %39, i64 1
%._core1 = getelementptr inbounds %SS* %42, i32 0, i32 0
%._core1._baseAddress = getelementptr inbounds %VSs11_StringCore* %._core1, i32 0, i32 0
%._core1._baseAddress.value = getelementptr inbounds %VSs14COpaquePointer* %._core1._baseAddress, i32 0, i32 0
store i8* %18, i8** %._core1._baseAddress.value, align 8
%._core1._countAndFlags = getelementptr inbounds %VSs11_StringCore* %._core1, i32 0, i32 1
%._core1._countAndFlags.value = getelementptr inbounds %Su* %._core1._countAndFlags, i32 0, i32 0
store i64 %19, i64* %._core1._countAndFlags.value, align 8
%._core1._owner = getelementptr inbounds %VSs11_StringCore* %._core1, i32 0, i32 2
%43 = bitcast %Sq* %._core1._owner to i64*
store i64 %20, i64* %43, align 8
%44 = getelementptr inbounds %SS* %39, i64 2
%._core2 = getelementptr inbounds %SS* %44, i32 0, i32 0
%._core2._baseAddress = getelementptr inbounds %VSs11_StringCore* %._core2, i32 0, i32 0
%._core2._baseAddress.value = getelementptr inbounds %VSs14COpaquePointer* %._core2._baseAddress, i32 0, i32 0
store i8* %26, i8** %._core2._baseAddress.value, align 8
%._core2._countAndFlags = getelementptr inbounds %VSs11_StringCore* %._core2, i32 0, i32 1
%._core2._countAndFlags.value = getelementptr inbounds %Su* %._core2._countAndFlags, i32 0, i32 0
store i64 %27, i64* %._core2._countAndFlags.value, align 8
%._core2._owner = getelementptr inbounds %VSs11_StringCore* %._core2, i32 0, i32 2
%45 = bitcast %Sq* %._core2._owner to i64*
store i64 %28, i64* %45, align 8
%46 = getelementptr inbounds %SS* %39, i64 3
%._core3 = getelementptr inbounds %SS* %46, i32 0, i32 0
%._core3._baseAddress = getelementptr inbounds %VSs11_StringCore* %._core3, i32 0, i32 0
%._core3._baseAddress.value = getelementptr inbounds %VSs14COpaquePointer* %._core3._baseAddress, i32 0, i32 0
store i8* %31, i8** %._core3._baseAddress.value, align 8
%._core3._countAndFlags = getelementptr inbounds %VSs11_StringCore* %._core3, i32 0, i32 1
%._core3._countAndFlags.value = getelementptr inbounds %Su* %._core3._countAndFlags, i32 0, i32 0
store i64 %32, i64* %._core3._countAndFlags.value, align 8
%._core3._owner = getelementptr inbounds %VSs11_StringCore* %._core3, i32 0, i32 2
%47 = bitcast %Sq* %._core3._owner to i64*
store i64 %33, i64* %47, align 8
%48 = bitcast %SS* %39 to i8*
%49 = call i64 @_TFSa20convertFromHeapArrayU__fMGSaQ__FTBp5ownerBo5countBw_GSaQ__(i8* %48, %swift.refcounted* %34, i64 4, %swift.type* getelementptr inbounds (%swift.full_type* @_TMdSS, i32 0, i32 1))
%50 = call { i8*, i64, i64 } @_TFSS30convertFromStringInterpolationfMSSFtGSaSS__SS(i64 %49)
%51 = extractvalue { i8*, i64, i64 } %50, 0
%52 = extractvalue { i8*, i64, i64 } %50, 1
%53 = extractvalue { i8*, i64, i64 } %50, 2
%54 = call noalias %swift.refcounted* @swift_allocObject(%swift.type* getelementptr inbounds (%swift.full_heapmetadata* @metadata2, i32 0, i32 2), i64 24, i64 7) #2
%55 = getelementptr inbounds %swift.refcounted* %54, i32 1
%56 = bitcast %swift.refcounted* %55 to i64*
store i64 0, i64* %56, align 8
%57 = bitcast %swift.refcounted* %54 to i8*
%58 = getelementptr inbounds i8* %57, i64 24
%59 = bitcast i8* %58 to %PSs11CVarArgType_*
%60 = bitcast %PSs11CVarArgType_* %59 to i8*
call void @llvm.memset.p0i8.i64(i8* %60, i8 0, i64 0, i32 8, i1 false)
%61 = bitcast %PSs11CVarArgType_* %59 to i8*
%62 = call %swift.type* @_TMaPSs11CVarArgType_() #0
%63 = call i64 @_TFSa20convertFromHeapArrayU__fMGSaQ__FTBp5ownerBo5countBw_GSaQ__(i8* %61, %swift.refcounted* %54, i64 0, %swift.type* %62)
call void @_TF10Foundation5NSLogFtSSGSaPSs11CVarArgType___T_(i8* %51, i64 %52, i64 %53, i64 %63)
ret void
}
define i64 @_TIF4main4DoItFTSiSi1cSi_SiA1_() {
entry:
ret i64 0
}
define i64 @_TF4main4DoItFTSiSi1cSi_Si(i64, i64, i64) {
entry:
%3 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %0, i64 %1)
%4 = extractvalue { i64, i1 } %3, 0
%5 = extractvalue { i64, i1 } %3, 1
br i1 %5, label %11, label %6
; <label>:6 ; preds = %entry
%7 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %4, i64 %2)
%8 = extractvalue { i64, i1 } %7, 0
%9 = extractvalue { i64, i1 } %7, 1
br i1 %9, label %11, label %10
; <label>:10 ; preds = %6
ret i64 %8
; <label>:11 ; preds = %6, %entry
call void @llvm.trap()
unreachable
}
; Function Attrs: nounwind readnone
declare { i64, i1 } @llvm.sadd.with.overflow.i64(i64, i64) #0
; Function Attrs: noreturn nounwind
declare void @llvm.trap() #1
define i64 @_TF4main4DoItFTSiSiCSo8NSObject_Si(i64, i64, %CSo8NSObject*) {
entry:
%3 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %0, i64 %1)
%4 = extractvalue { i64, i1 } %3, 0
%5 = extractvalue { i64, i1 } %3, 1
br i1 %5, label %27, label %6
; <label>:6 ; preds = %entry
%7 = call %CSo8NSObject* bitcast (%objc_object* (%objc_object*)* @objc_retain to %CSo8NSObject* (%CSo8NSObject*)*)(%CSo8NSObject* %2) #2
%8 = load i8** @"\01L_selector(description)", align 8
%9 = bitcast %CSo8NSObject* %2 to %0*
%10 = call %1* bitcast (void ()* @objc_msgSend to %1* (%0*, i8*)*)(%0* %9, i8* %8)
%11 = bitcast %1* %10 to %CSo8NSString*
%12 = bitcast %CSo8NSString* %11 to i8*
%13 = call i8* @objc_retainAutoreleasedReturnValue(i8* %12) #2
%14 = bitcast i8* %13 to %CSo8NSString*
%15 = call { i8*, i64, i64 } @_TF10Foundation24_convertNSStringToStringFCSo8NSStringSS(%CSo8NSString* %14)
%16 = extractvalue { i8*, i64, i64 } %15, 0
%17 = extractvalue { i8*, i64, i64 } %15, 1
%18 = extractvalue { i8*, i64, i64 } %15, 2
%19 = call i8* @_TF10Foundationa20NSUTF8StringEncodingSu()
%20 = bitcast i8* %19 to %Su*
%.value = getelementptr inbounds %Su* %20, i32 0, i32 0
%21 = load i64* %.value, align 8
%22 = call i64 @_TFE10FoundationSS26lengthOfBytesUsingEncodingfSSFSuSi(i64 %21, i8* %16, i64 %17, i64 %18)
%23 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %4, i64 %22)
%24 = extractvalue { i64, i1 } %23, 0
%25 = extractvalue { i64, i1 } %23, 1
br i1 %25, label %27, label %26
; <label>:26 ; preds = %6
call void bitcast (void (%objc_object*)* @objc_release to void (%CSo8NSObject*)*)(%CSo8NSObject* %2) #2
call void bitcast (void (%objc_object*)* @objc_release to void (%CSo8NSObject*)*)(%CSo8NSObject* %2) #2
ret i64 %24
; <label>:27 ; preds = %6, %entry
call void @llvm.trap()
unreachable
}
; Function Attrs: nounwind readnone
declare { i64, i1 } @llvm.smul.with.overflow.i64(i64, i64) #0
declare i64 @_TFE10FoundationSS26lengthOfBytesUsingEncodingfSSFSuSi(i64, i8*, i64, i64)
declare %objc_object* @objc_retain(%objc_object*)
declare void @objc_msgSend()
declare i8* @objc_retainAutoreleasedReturnValue(i8*)
declare { i8*, i64, i64 } @_TF10Foundation24_convertNSStringToStringFCSo8NSStringSS(%CSo8NSString*)
declare i8* @_TF10Foundationa20NSUTF8StringEncodingSu()
declare void @objc_release(%objc_object*)
define i32 @main(i32 %argc, i8** %argv) {
entry:
%0 = call i8* @_TFSsa6C_ARGCVSs5Int32()
%1 = bitcast i8* %0 to i32*
store i32 %argc, i32* %1
%2 = call i8* @_TFSsa6C_ARGVGVSs20UnsafeMutablePointerGS_VSs4Int8__()
%3 = bitcast i8* %2 to i8***
store i8** %argv, i8*** %3
call void @top_level_code()
ret i32 0
}
declare i8* @_TFSsa6C_ARGCVSs5Int32()
declare i8* @_TFSsa6C_ARGVGVSs20UnsafeMutablePointerGS_VSs4Int8__()
declare %CSo8NSNumber* @_TFE10FoundationSi19_bridgeToObjectiveCfSiFT_CSo8NSNumber(i64)
define linkonce_odr hidden %CSo8NSObject* @_TFCSo8NSObjectCfMS_FT_S_(%swift.type*) {
entry:
%1 = getelementptr inbounds %swift.type* %0, i32 0, i32 0
%.kind = load i64* %1, align 8
%isObjCClassWrapper = icmp eq i64 %.kind, 14
br i1 %isObjCClassWrapper, label %isWrapper, label %metadataForClass.cont
isWrapper: ; preds = %entry
%2 = bitcast %swift.type* %0 to %swift.type**
%3 = getelementptr inbounds %swift.type** %2, i64 1
%4 = load %swift.type** %3, align 8
br label %metadataForClass.cont
metadataForClass.cont: ; preds = %isWrapper, %entry
%.class = phi %swift.type* [ %0, %entry ], [ %4, %isWrapper ]
%5 = bitcast %swift.type* %.class to %objc_class*
%6 = load i8** @"\01L_selector(allocWithZone:)", align 8
%7 = bitcast %objc_class* %5 to i8*
%8 = call %0* bitcast (void ()* @objc_msgSend to %0* (i8*, i8*, i8*)*)(i8* %7, i8* %6, i8* null)
%9 = bitcast %0* %8 to %CSo8NSObject*
%10 = call %CSo8NSObject* @_TTOFCSo8NSObjectcfMS_FT_S_(%CSo8NSObject* %9)
ret %CSo8NSObject* %10
}
; Function Attrs: nounwind readnone
define linkonce_odr hidden %swift.type* @_TMaCSo8NSObject() #0 {
entry:
%0 = load %swift.type** @_TMLCSo8NSObject, align 8
%1 = icmp eq %swift.type* %0, null
br i1 %1, label %cacheIsNull, label %cont
cacheIsNull: ; preds = %entry
%2 = call %objc_class* @swift_getInitializedObjCClass(%objc_class* @"OBJC_CLASS_$_NSObject")
%3 = call %swift.type* @swift_getObjCClassMetadata(%objc_class* %2) #0
store atomic %swift.type* %3, %swift.type** @_TMLCSo8NSObject release, align 8
br label %cont
cont: ; preds = %cacheIsNull, %entry
%4 = phi %swift.type* [ %0, %entry ], [ %3, %cacheIsNull ]
ret %swift.type* %4
}
declare %objc_class* @swift_getInitializedObjCClass(%objc_class*)
declare %swift.type* @swift_getObjCClassMetadata(%objc_class*)
declare void @_TF10Foundation5NSLogFtSSGSaPSs11CVarArgType___T_(i8*, i64, i64, i64)
declare { i8*, i64, i64 } @_TFSS30convertFromStringInterpolationfMSSFtGSaSS__SS(i64)
declare { i8*, i64, i64 } @_TFSS37convertFromStringInterpolationSegmentfMSSFSSSS(i8*, i64, i64)
declare { i8*, i64, i64 } @_TFSSCfMSSFT21_builtinStringLiteralBp8byteSizeBw7isASCIIBi1__SS(i8*, i64, i1)
declare { i8*, i64, i64 } @_TFSS37convertFromStringInterpolationSegmentfMSSFSiSS(i64)
define internal void @arraydestroy(%swift.refcounted*) {
entry:
%1 = getelementptr inbounds %swift.refcounted* %0, i32 1
%2 = bitcast %swift.refcounted* %1 to i64*
%length = load i64* %2, align 8
%3 = bitcast %swift.refcounted* %0 to i8*
%4 = getelementptr inbounds i8* %3, i64 24
%5 = bitcast i8* %4 to %SS*
%6 = getelementptr inbounds %SS* %5, i64 %length
%empty = icmp eq %SS* %5, %6
br i1 %empty, label %end, label %loop-body
loop-body: ; preds = %loop-body, %entry
%prev = phi %SS* [ %6, %entry ], [ %7, %loop-body ]
%7 = getelementptr inbounds %SS* %prev, i64 -1
%._core = getelementptr inbounds %SS* %7, i32 0, i32 0
%._core._owner = getelementptr inbounds %VSs11_StringCore* %._core, i32 0, i32 2
%8 = bitcast %Sq* %._core._owner to %objc_object**
%9 = load %objc_object** %8, align 8
call void bitcast (void (%swift.refcounted*)* @swift_unknownRelease to void (%objc_object*)*)(%objc_object* %9) #2
%done = icmp eq %SS* %7, %5
br i1 %done, label %end, label %loop-body
end: ; preds = %loop-body, %entry
%10 = mul i64 %length, 24
%11 = add i64 %10, 24
call void @swift_deallocObject(%swift.refcounted* %0, i64 %11, i64 7)
ret void
}
declare void @swift_unknownRelease(%swift.refcounted*)
declare void @swift_deallocObject(%swift.refcounted*, i64, i64)
declare %swift.refcounted* @swift_allocObject(%swift.type*, i64, i64)
; Function Attrs: nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) #2
declare i64 @_TFSa20convertFromHeapArrayU__fMGSaQ__FTBp5ownerBo5countBw_GSaQ__(i8*, %swift.refcounted*, i64, %swift.type*)
define internal void @arraydestroy1(%swift.refcounted*) {
entry:
%1 = getelementptr inbounds %swift.refcounted* %0, i32 1
%2 = bitcast %swift.refcounted* %1 to i64*
%length = load i64* %2, align 8
%3 = bitcast %swift.refcounted* %0 to i8*
%4 = getelementptr inbounds i8* %3, i64 24
%5 = bitcast i8* %4 to %PSs11CVarArgType_*
%6 = getelementptr inbounds %PSs11CVarArgType_* %5, i64 %length
%empty = icmp eq %PSs11CVarArgType_* %5, %6
br i1 %empty, label %end, label %loop-body
loop-body: ; preds = %loop-body, %entry
%prev = phi %PSs11CVarArgType_* [ %6, %entry ], [ %7, %loop-body ]
%7 = getelementptr inbounds %PSs11CVarArgType_* %prev, i64 -1
%8 = getelementptr inbounds %PSs11CVarArgType_* %7, i32 0, i32 1
%.metadata = load %swift.type** %8, align 8
%9 = getelementptr inbounds %PSs11CVarArgType_* %7, i32 0, i32 0
%10 = bitcast %swift.type* %.metadata to i8***
%11 = getelementptr inbounds i8*** %10, i64 -1
%12 = load i8*** %11, align 8
%13 = load i8** %12, align 8
%destroyBuffer = bitcast i8* %13 to void ([24 x i8]*, %swift.type*)*
call void %destroyBuffer([24 x i8]* %9, %swift.type* %.metadata) #2
%done = icmp eq %PSs11CVarArgType_* %7, %5
br i1 %done, label %end, label %loop-body
end: ; preds = %loop-body, %entry
%14 = mul i64 %length, 40
%15 = add i64 %14, 24
call void @swift_deallocObject(%swift.refcounted* %0, i64 %15, i64 7)
ret void
}
; Function Attrs: nounwind readnone
define linkonce_odr hidden %swift.type* @_TMaPSs11CVarArgType_() #0 {
entry:
%protocols = alloca [1 x %swift.protocol*], align 8
%0 = load %swift.type** @_TMLPSs11CVarArgType_, align 8
%1 = icmp eq %swift.type* %0, null
br i1 %1, label %cacheIsNull, label %cont
cacheIsNull: ; preds = %entry
%2 = bitcast [1 x %swift.protocol*]* %protocols to %swift.protocol**
%3 = getelementptr inbounds %swift.protocol** %2, i32 0
store %swift.protocol* @_TMpSs11CVarArgType, %swift.protocol** %3, align 8
%4 = call %swift.type* @swift_getExistentialTypeMetadata(i64 1, %swift.protocol** %2) #2
store atomic %swift.type* %4, %swift.type** @_TMLPSs11CVarArgType_ release, align 8
br label %cont
cont: ; preds = %cacheIsNull, %entry
%5 = phi %swift.type* [ %0, %entry ], [ %4, %cacheIsNull ]
ret %swift.type* %5
}
declare %swift.type* @swift_getExistentialTypeMetadata(i64, %swift.protocol**)
define linkonce_odr hidden %CSo8NSObject* @_TTOFCSo8NSObjectcfMS_FT_S_(%CSo8NSObject*) {
entry:
%1 = load i8** @"\01L_selector(init)", align 8
%2 = bitcast %CSo8NSObject* %0 to %0*
%3 = call %0* bitcast (void ()* @objc_msgSend to %0* (%0*, i8*)*)(%0* %2, i8* %1)
%4 = bitcast %0* %3 to %CSo8NSObject*
ret %CSo8NSObject* %4
}
attributes #0 = { nounwind readnone }
attributes #1 = { noreturn nounwind }
attributes #2 = { nounwind }
!llvm.module.flags = !{!0, !1, !2, !23, !24, !25, !26, !27}
!0 = metadata !{i32 2, metadata !"Dwarf Version", i32 3}
!1 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
!2 = metadata !{i32 6, metadata !"Linker Options", metadata !3}
!3 = metadata !{metadata !4, metadata !5, metadata !6, metadata !7, metadata !8, metadata !9, metadata !10, metadata !11, metadata !12, metadata !13, metadata !14, metadata !15, metadata !16, metadata !17, metadata !18, metadata !19, metadata !20, metadata !21, metadata !22}
!4 = metadata !{metadata !"-lswiftCore"}
!5 = metadata !{metadata !"-lswiftFoundation"}
!6 = metadata !{metadata !"-framework", metadata !"Foundation"}
!7 = metadata !{metadata !"-lswiftDarwin"}
!8 = metadata !{metadata !"-framework", metadata !"CoreFoundation"}
!9 = metadata !{metadata !"-lswiftDispatch"}
!10 = metadata !{metadata !"-lswiftObjectiveC"}
!11 = metadata !{metadata !"-framework", metadata !"ApplicationServices"}
!12 = metadata !{metadata !"-lswiftCoreGraphics"}
!13 = metadata !{metadata !"-framework", metadata !"CoreGraphics"}
!14 = metadata !{metadata !"-framework", metadata !"IOKit"}
!15 = metadata !{metadata !"-framework", metadata !"IOSurface"}
!16 = metadata !{metadata !"-framework", metadata !"ImageIO"}
!17 = metadata !{metadata !"-framework", metadata !"CoreServices"}
!18 = metadata !{metadata !"-lswiftSecurity"}
!19 = metadata !{metadata !"-framework", metadata !"Security"}
!20 = metadata !{metadata !"-framework", metadata !"CFNetwork"}
!21 = metadata !{metadata !"-framework", metadata !"DiskArbitration"}
!22 = metadata !{metadata !"-framework", metadata !"CoreText"}
!23 = metadata !{i32 1, metadata !"Objective-C Version", i32 2}
!24 = metadata !{i32 1, metadata !"Swift Version", i32 2}
!25 = metadata !{i32 1, metadata !"Objective-C Image Info Version", i32 0}
!26 = metadata !{i32 1, metadata !"Objective-C Image Info Section", metadata !"__DATA, __objc_imageinfo, regular, no_dead_strip"}
!27 = metadata !{i32 4, metadata !"Objective-C Garbage Collection", i32 512}
import Foundation
func DoIt(a: Int, b: Int, c :Int = 0) -> Int {
return a + b + c;
}
func DoIt(a: Int, b: Int, c :NSObject) -> Int {
return a * b * c.description.lengthOfBytesUsingEncoding(NSUTF8StringEncoding);
}
var a1 = DoIt(4, 5, 6);
var obj = NSObject();
var a2 = DoIt(4, 5, obj);
NSLog("a1:\(a1) a2:\(a2)");
// output:
// a1:20 a2:460
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment