Last active
August 29, 2015 14:13
-
-
Save nacho4d/94fdb72d8a3fee0c09e5 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
$ 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} |
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
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