ssa: set pointer directiface

This commit is contained in:
visualfc
2024-07-03 22:16:24 +08:00
parent 490a16a8df
commit bcb217c1da
19 changed files with 1098 additions and 386 deletions

View File

@@ -567,6 +567,7 @@ _llgo_6: ; preds = %_llgo_5, %_llgo_4
_llgo_7: ; preds = %_llgo_6
%72 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 26)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %72)
store ptr %72, ptr @_llgo_Pointer, align 8
br label %_llgo_8
@@ -918,6 +919,7 @@ _llgo_17: ; preds = %_llgo_16
store i64 1, ptr %291, align 4
%292 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %288, align 8
%293 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %285, %"github.com/goplus/llgo/internal/runtime.Slice" %292, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %293)
store ptr %293, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
br label %_llgo_18
@@ -1092,6 +1094,7 @@ _llgo_24: ; preds = %_llgo_100, %_llgo_2
_llgo_25: ; preds = %_llgo_23
%395 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %21)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %395)
store ptr %395, ptr @"*_llgo_github.com/goplus/llgo/internal/abi.Type", align 8
br label %_llgo_26
@@ -1123,6 +1126,7 @@ _llgo_27: ; preds = %_llgo_26
store i64 1, ptr %410, align 4
%411 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %407, align 8
%412 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %404, %"github.com/goplus/llgo/internal/runtime.Slice" %411, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %412)
store ptr %412, ptr @"_llgo_func$4-mqItKfDlL0CgVKnUxoresYgh6zW1WSlZYZSsVzLRo", align 8
br label %_llgo_28
@@ -1389,6 +1393,7 @@ _llgo_35: ; preds = %_llgo_33
store i64 1, ptr %572, align 4
%573 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %569, align 8
%574 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %566, %"github.com/goplus/llgo/internal/runtime.Slice" %573, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %574)
store ptr %574, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8
br label %_llgo_36
@@ -1776,6 +1781,7 @@ _llgo_51: ; preds = %_llgo_50
store i64 1, ptr %800, align 4
%801 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %797, align 8
%802 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %794, %"github.com/goplus/llgo/internal/runtime.Slice" %801, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %802)
store ptr %802, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
br label %_llgo_52
@@ -1860,6 +1866,7 @@ _llgo_53: ; preds = %_llgo_48
store i64 1, ptr %849, align 4
%850 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %846, align 8
%851 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %843, %"github.com/goplus/llgo/internal/runtime.Slice" %850, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %851)
store ptr %851, ptr @"_llgo_func$ntUE0UmVAWPS2O7GpCCGszSn-XnjHJntZZ2jYtwbFXI", align 8
br label %_llgo_54
@@ -2515,6 +2522,7 @@ _llgo_63: ; preds = %_llgo_61
store i64 1, ptr %1265, align 4
%1266 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %1262, align 8
%1267 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %1259, %"github.com/goplus/llgo/internal/runtime.Slice" %1266, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %1267)
store ptr %1267, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8
br label %_llgo_64
@@ -3092,6 +3100,7 @@ _llgo_79: ; preds = %_llgo_78
store i64 1, ptr %1618, align 4
%1619 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %1615, align 8
%1620 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %1612, %"github.com/goplus/llgo/internal/runtime.Slice" %1619, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %1620)
store ptr %1620, ptr @"_llgo_func$r0w3aCNVheLGqjxncuxitGhNtWJagb9gZLqOSrNI7dg", align 8
br label %_llgo_80
@@ -3154,6 +3163,7 @@ _llgo_80: ; preds = %_llgo_79, %_llgo_78
_llgo_81: ; preds = %_llgo_76
%1655 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %1535)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %1655)
store ptr %1655, ptr @"*_llgo_github.com/goplus/llgo/internal/abi.UncommonType", align 8
br label %_llgo_82
@@ -3185,6 +3195,7 @@ _llgo_83: ; preds = %_llgo_82
store i64 1, ptr %1670, align 4
%1671 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %1667, align 8
%1672 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %1664, %"github.com/goplus/llgo/internal/runtime.Slice" %1671, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %1672)
store ptr %1672, ptr @"_llgo_func$DbD4nZv_bjE4tH8hh-VfAjMXMpNfIsMlLJJJPKupp34", align 8
br label %_llgo_84
@@ -3262,6 +3273,7 @@ _llgo_84: ; preds = %_llgo_83, %_llgo_82
_llgo_85: ; preds = %_llgo_70
%1712 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %1292)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %1712)
store ptr %1712, ptr @"*_llgo_github.com/goplus/llgo/internal/abi.StructType", align 8
br label %_llgo_86
@@ -3293,6 +3305,7 @@ _llgo_87: ; preds = %_llgo_86
store i64 1, ptr %1727, align 4
%1728 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %1724, align 8
%1729 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %1721, %"github.com/goplus/llgo/internal/runtime.Slice" %1728, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %1729)
store ptr %1729, ptr @"_llgo_func$qiNnn6Cbm3GtDp4gDI4U_DRV3h8zlz91s9jrfOXC--U", align 8
br label %_llgo_88
@@ -3395,6 +3408,7 @@ _llgo_88: ; preds = %_llgo_87, %_llgo_86
_llgo_89: ; preds = %_llgo_62
%1784 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %876)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %1784)
store ptr %1784, ptr @"*_llgo_github.com/goplus/llgo/internal/abi.MapType", align 8
br label %_llgo_90
@@ -3426,6 +3440,7 @@ _llgo_91: ; preds = %_llgo_90
store i64 1, ptr %1799, align 4
%1800 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %1796, align 8
%1801 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %1793, %"github.com/goplus/llgo/internal/runtime.Slice" %1800, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %1801)
store ptr %1801, ptr @"_llgo_func$d-NlqnjcQnaMjsBQY7qh2SWQmHb0XIigoceXdiJ8YT4", align 8
br label %_llgo_92
@@ -3588,6 +3603,7 @@ _llgo_92: ; preds = %_llgo_91, %_llgo_90
_llgo_93: ; preds = %_llgo_42
%1896 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %599)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %1896)
store ptr %1896, ptr @"*_llgo_github.com/goplus/llgo/internal/abi.InterfaceType", align 8
br label %_llgo_94
@@ -3619,6 +3635,7 @@ _llgo_95: ; preds = %_llgo_94
store i64 1, ptr %1911, align 4
%1912 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %1908, align 8
%1913 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %1905, %"github.com/goplus/llgo/internal/runtime.Slice" %1912, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %1913)
store ptr %1913, ptr @"_llgo_func$1QmforOaCy2fBAssC2y1FWCCT6fpq9RKwP2j2HIASY8", align 8
br label %_llgo_96
@@ -3868,6 +3885,7 @@ _llgo_96: ; preds = %_llgo_95, %_llgo_94
_llgo_97: ; preds = %_llgo_34
%2064 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %437)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %2064)
store ptr %2064, ptr @"*_llgo_github.com/goplus/llgo/internal/abi.FuncType", align 8
br label %_llgo_98
@@ -3899,6 +3917,7 @@ _llgo_99: ; preds = %_llgo_98
store i64 1, ptr %2079, align 4
%2080 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %2076, align 8
%2081 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %2073, %"github.com/goplus/llgo/internal/runtime.Slice" %2080, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %2081)
store ptr %2081, ptr @"_llgo_func$DsoxgOnxqV7tLvokF3AA14v1gtHsHaThoC8Q_XGcQww", align 8
br label %_llgo_100
@@ -4159,6 +4178,7 @@ _llgo_100: ; preds = %_llgo_99, %_llgo_98
_llgo_101: ; preds = %_llgo_24
%2240 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %307)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %2240)
store ptr %2240, ptr @"*_llgo_github.com/goplus/llgo/internal/abi.ArrayType", align 8
br label %_llgo_102
@@ -4190,6 +4210,7 @@ _llgo_103: ; preds = %_llgo_102
store i64 1, ptr %2255, align 4
%2256 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %2252, align 8
%2257 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %2249, %"github.com/goplus/llgo/internal/runtime.Slice" %2256, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %2257)
store ptr %2257, ptr @"_llgo_func$CsVqlCxhoEcIvPD5BSBukfSiD9C7Ic5_Gf32MLbCWB4", align 8
br label %_llgo_104
@@ -4554,6 +4575,8 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64)
declare void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr, %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", ptr, %"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice")
declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice", i1)
declare i64 @"github.com/goplus/llgo/internal/abi.(*Type).Align"(ptr)

View File

@@ -143,6 +143,7 @@ _llgo_2: ; preds = %_llgo_1, %_llgo_0
_llgo_3: ; preds = %_llgo_2
%8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
%9 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %8)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %9)
store ptr %9, ptr @"*_llgo_int8", align 8
br label %_llgo_4
@@ -178,6 +179,8 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr)
declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64)
declare void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface")

View File

@@ -668,6 +668,7 @@ _llgo_31: ; preds = %_llgo_30
store i64 0, ptr %100, align 4
%101 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %97, align 8
%102 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %95, %"github.com/goplus/llgo/internal/runtime.Slice" %101, i1 false)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %102)
store ptr %102, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
br label %_llgo_32
@@ -679,6 +680,7 @@ _llgo_32: ; preds = %_llgo_31, %_llgo_30
_llgo_33: ; preds = %_llgo_32
%105 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%106 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %105)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %106)
store ptr %106, ptr @"*_llgo_int", align 8
br label %_llgo_34
@@ -838,6 +840,8 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice", i1)
declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr)

View File

@@ -5,6 +5,7 @@ func main() {
make2()
make3()
make4()
make5()
}
func make1() {
@@ -87,3 +88,16 @@ func make4() {
println(k.(K2)[0].n1, v)
}
}
func make5() {
ch := make(chan int)
var a any = ch
var b any = ch
println(a == b)
m := make(map[chan int]int)
m[ch] = 100
m[ch] = 200
for k, v := range m {
println(k, v)
}
}

View File

@@ -44,6 +44,9 @@ source_filename = "main"
@"*_llgo_main.N" = linkonce global ptr null, align 8
@"[1]*_llgo_main.N" = linkonce global ptr null, align 8
@18 = private unnamed_addr constant [2 x i8] c"K2", align 1
@"chan _llgo_int" = linkonce global ptr null, align 8
@19 = private unnamed_addr constant [4 x i8] c"chan", align 1
@"map[chan _llgo_int]_llgo_int" = linkonce global ptr null, align 8
define void @main.init() {
_llgo_0:
@@ -69,6 +72,7 @@ _llgo_0:
call void @main.make2()
call void @main.make3()
call void @main.make4()
call void @main.make5()
ret i32 0
}
@@ -908,6 +912,91 @@ _llgo_8: ; preds = %_llgo_2
unreachable
}
define void @main.make5() {
_llgo_0:
%0 = call ptr @"github.com/goplus/llgo/internal/runtime.NewChan"(i64 8, i64 0)
%1 = load ptr, ptr @"chan _llgo_int", align 8
%2 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%3 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %2, i32 0, i32 0
store ptr %1, ptr %3, align 8
%4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %2, i32 0, i32 1
store ptr %0, ptr %4, align 8
%5 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %2, align 8
%6 = load ptr, ptr @"chan _llgo_int", align 8
%7 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%8 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, i32 0, i32 0
store ptr %6, ptr %8, align 8
%9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, i32 0, i32 1
store ptr %0, ptr %9, align 8
%10 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, align 8
%11 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %5, %"github.com/goplus/llgo/internal/runtime.eface" %10)
call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %11)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10)
%12 = load ptr, ptr @"map[chan _llgo_int]_llgo_int", align 8
%13 = call ptr @"github.com/goplus/llgo/internal/runtime.MakeMap"(ptr %12, i64 0)
%14 = load ptr, ptr @"map[chan _llgo_int]_llgo_int", align 8
%15 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8)
store ptr %0, ptr %15, align 8
%16 = call ptr @"github.com/goplus/llgo/internal/runtime.MapAssign"(ptr %14, ptr %13, ptr %15)
store i64 100, ptr %16, align 4
%17 = load ptr, ptr @"map[chan _llgo_int]_llgo_int", align 8
%18 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8)
store ptr %0, ptr %18, align 8
%19 = call ptr @"github.com/goplus/llgo/internal/runtime.MapAssign"(ptr %17, ptr %13, ptr %18)
store i64 200, ptr %19, align 4
%20 = load ptr, ptr @"map[chan _llgo_int]_llgo_int", align 8
%21 = call ptr @"github.com/goplus/llgo/internal/runtime.NewMapIter"(ptr %20, ptr %13)
br label %_llgo_1
_llgo_1: ; preds = %_llgo_2, %_llgo_0
%22 = call { i1, ptr, ptr } @"github.com/goplus/llgo/internal/runtime.MapIterNext"(ptr %21)
%23 = extractvalue { i1, ptr, ptr } %22, 0
br i1 %23, label %_llgo_4, label %_llgo_5
_llgo_2: ; preds = %_llgo_6
%24 = extractvalue { i1, ptr, i64 } %40, 1
%25 = extractvalue { i1, ptr, i64 } %40, 2
call void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr %24)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32)
call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %25)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10)
br label %_llgo_1
_llgo_3: ; preds = %_llgo_6
ret void
_llgo_4: ; preds = %_llgo_1
%26 = extractvalue { i1, ptr, ptr } %22, 1
%27 = extractvalue { i1, ptr, ptr } %22, 2
%28 = load ptr, ptr %26, align 8
%29 = load i64, ptr %27, align 4
%30 = alloca { i1, ptr, i64 }, align 8
%31 = getelementptr inbounds { i1, ptr, i64 }, ptr %30, i32 0, i32 0
store i1 true, ptr %31, align 1
%32 = getelementptr inbounds { i1, ptr, i64 }, ptr %30, i32 0, i32 1
store ptr %28, ptr %32, align 8
%33 = getelementptr inbounds { i1, ptr, i64 }, ptr %30, i32 0, i32 2
store i64 %29, ptr %33, align 4
%34 = load { i1, ptr, i64 }, ptr %30, align 8
br label %_llgo_6
_llgo_5: ; preds = %_llgo_1
%35 = alloca { i1, ptr, i64 }, align 8
%36 = getelementptr inbounds { i1, ptr, i64 }, ptr %35, i32 0, i32 0
store i1 false, ptr %36, align 1
%37 = getelementptr inbounds { i1, ptr, i64 }, ptr %35, i32 0, i32 1
store ptr null, ptr %37, align 8
%38 = getelementptr inbounds { i1, ptr, i64 }, ptr %35, i32 0, i32 2
store i64 0, ptr %38, align 4
%39 = load { i1, ptr, i64 }, ptr %35, align 8
br label %_llgo_6
_llgo_6: ; preds = %_llgo_5, %_llgo_4
%40 = phi { i1, ptr, i64 } [ %34, %_llgo_4 ], [ %39, %_llgo_5 ]
%41 = extractvalue { i1, ptr, i64 } %40, 0
br i1 %41, label %_llgo_2, label %_llgo_3
}
declare void @"github.com/goplus/llgo/internal/runtime.init"()
define void @"main.init$after"() {
@@ -1003,6 +1092,7 @@ _llgo_1: ; preds = %_llgo_0
%60 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %56, align 8
%61 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %50, i64 208, %"github.com/goplus/llgo/internal/runtime.Slice" %60)
%62 = call ptr @"github.com/goplus/llgo/internal/runtime.MapOf"(ptr %2, ptr %3, ptr %61, i64 4)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %62)
store ptr %62, ptr @"map[_llgo_int]_llgo_string", align 8
br label %_llgo_2
@@ -1098,6 +1188,7 @@ _llgo_3: ; preds = %_llgo_2
%123 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %119, align 8
%124 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %113, i64 208, %"github.com/goplus/llgo/internal/runtime.Slice" %123)
%125 = call ptr @"github.com/goplus/llgo/internal/runtime.MapOf"(ptr %65, ptr %66, ptr %124, i64 12)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %125)
store ptr %125, ptr @"map[_llgo_string]_llgo_int", align 8
br label %_llgo_4
@@ -1245,6 +1336,7 @@ _llgo_7: ; preds = %_llgo_6
%217 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %213, align 8
%218 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %207, i64 208, %"github.com/goplus/llgo/internal/runtime.Slice" %217)
%219 = call ptr @"github.com/goplus/llgo/internal/runtime.MapOf"(ptr %145, ptr %146, ptr %218, i64 24)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %219)
store ptr %219, ptr @"map[_llgo_any]_llgo_int", align 8
br label %_llgo_8
@@ -1450,6 +1542,7 @@ _llgo_28: ; preds = %_llgo_27, %_llgo_26
_llgo_29: ; preds = %_llgo_28
%315 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %254)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %315)
store ptr %315, ptr @"*_llgo_main.N", align 8
br label %_llgo_30
@@ -1487,6 +1580,134 @@ _llgo_33: ; preds = %_llgo_32
br label %_llgo_34
_llgo_34: ; preds = %_llgo_33, %_llgo_32
%330 = load ptr, ptr @"chan _llgo_int", align 8
%331 = icmp eq ptr %330, null
br i1 %331, label %_llgo_35, label %_llgo_36
_llgo_35: ; preds = %_llgo_34
%332 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%333 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %332, i32 0, i32 0
store ptr @19, ptr %333, align 8
%334 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %332, i32 0, i32 1
store i64 4, ptr %334, align 4
%335 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %332, align 8
%336 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%337 = call ptr @"github.com/goplus/llgo/internal/runtime.ChanOf"(i64 3, %"github.com/goplus/llgo/internal/runtime.String" %335, ptr %336)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %337)
store ptr %337, ptr @"chan _llgo_int", align 8
br label %_llgo_36
_llgo_36: ; preds = %_llgo_35, %_llgo_34
%338 = load ptr, ptr @"map[chan _llgo_int]_llgo_int", align 8
%339 = icmp eq ptr %338, null
br i1 %339, label %_llgo_37, label %_llgo_38
_llgo_37: ; preds = %_llgo_36
%340 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%341 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %340, i32 0, i32 0
store ptr @19, ptr %341, align 8
%342 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %340, i32 0, i32 1
store i64 4, ptr %342, align 4
%343 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %340, align 8
%344 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%345 = call ptr @"github.com/goplus/llgo/internal/runtime.ChanOf"(i64 3, %"github.com/goplus/llgo/internal/runtime.String" %343, ptr %344)
%346 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%347 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%348 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %347, i32 0, i32 0
store ptr @0, ptr %348, align 8
%349 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %347, i32 0, i32 1
store i64 7, ptr %349, align 4
%350 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %347, align 8
%351 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%352 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %351, i32 0, i32 0
store ptr null, ptr %352, align 8
%353 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %351, i32 0, i32 1
store i64 0, ptr %353, align 4
%354 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %351, align 8
%355 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8)
%356 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %355)
%357 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %350, ptr %356, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %354, i1 false)
%358 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%359 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %358, i32 0, i32 0
store ptr @1, ptr %359, align 8
%360 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %358, i32 0, i32 1
store i64 4, ptr %360, align 4
%361 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %358, align 8
%362 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%363 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %362, i32 0, i32 0
store ptr null, ptr %363, align 8
%364 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %362, i32 0, i32 1
store i64 0, ptr %364, align 4
%365 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %362, align 8
%366 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%367 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %366, i32 0, i32 0
store ptr @19, ptr %367, align 8
%368 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %366, i32 0, i32 1
store i64 4, ptr %368, align 4
%369 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %366, align 8
%370 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%371 = call ptr @"github.com/goplus/llgo/internal/runtime.ChanOf"(i64 3, %"github.com/goplus/llgo/internal/runtime.String" %369, ptr %370)
%372 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %371)
%373 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %361, ptr %372, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %365, i1 false)
%374 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%375 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %374, i32 0, i32 0
store ptr @2, ptr %375, align 8
%376 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %374, i32 0, i32 1
store i64 5, ptr %376, align 4
%377 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %374, align 8
%378 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%379 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %378, i32 0, i32 0
store ptr null, ptr %379, align 8
%380 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %378, i32 0, i32 1
store i64 0, ptr %380, align 4
%381 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %378, align 8
%382 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%383 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %382)
%384 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %377, ptr %383, i64 72, %"github.com/goplus/llgo/internal/runtime.String" %381, i1 false)
%385 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%386 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %385, i32 0, i32 0
store ptr @3, ptr %386, align 8
%387 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %385, i32 0, i32 1
store i64 8, ptr %387, align 4
%388 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %385, align 8
%389 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%390 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %389, i32 0, i32 0
store ptr null, ptr %390, align 8
%391 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %389, i32 0, i32 1
store i64 0, ptr %391, align 4
%392 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %389, align 8
%393 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 26)
%394 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %388, ptr %393, i64 136, %"github.com/goplus/llgo/internal/runtime.String" %392, i1 false)
%395 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%396 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %395, i32 0, i32 0
store ptr @4, ptr %396, align 8
%397 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %395, i32 0, i32 1
store i64 4, ptr %397, align 4
%398 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %395, align 8
%399 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 224)
%400 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %399, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %357, ptr %400, align 8
%401 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %399, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %373, ptr %401, align 8
%402 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %399, i64 2
store %"github.com/goplus/llgo/internal/abi.StructField" %384, ptr %402, align 8
%403 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %399, i64 3
store %"github.com/goplus/llgo/internal/abi.StructField" %394, ptr %403, align 8
%404 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%405 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %404, i32 0, i32 0
store ptr %399, ptr %405, align 8
%406 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %404, i32 0, i32 1
store i64 4, ptr %406, align 4
%407 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %404, i32 0, i32 2
store i64 4, ptr %407, align 4
%408 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %404, align 8
%409 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %398, i64 144, %"github.com/goplus/llgo/internal/runtime.Slice" %408)
%410 = call ptr @"github.com/goplus/llgo/internal/runtime.MapOf"(ptr %345, ptr %346, ptr %409, i64 4)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %410)
store ptr %410, ptr @"map[chan _llgo_int]_llgo_int", align 8
br label %_llgo_38
_llgo_38: ; preds = %_llgo_37, %_llgo_36
ret void
}
@@ -1502,6 +1723,8 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64, ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64)
declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.MakeMap"(ptr, i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.MapAssign"(ptr, ptr, ptr)
@@ -1540,6 +1763,8 @@ declare i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/go
declare ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64)
declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.NewChan"(i64, i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.ChanOf"(i64, %"github.com/goplus/llgo/internal/runtime.String", ptr)

View File

@@ -152,6 +152,7 @@ _llgo_1: ; preds = %_llgo_0
%60 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %56, align 8
%61 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %50, i64 144, %"github.com/goplus/llgo/internal/runtime.Slice" %60)
%62 = call ptr @"github.com/goplus/llgo/internal/runtime.MapOf"(ptr %2, ptr %3, ptr %61, i64 4)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %62)
store ptr %62, ptr @"map[_llgo_int]_llgo_int", align 8
br label %_llgo_2
@@ -171,6 +172,8 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64, ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64)
declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.MakeMap"(ptr, i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.MapAssign"(ptr, ptr, ptr)