internal/runtime: check abi.KindDirectIface

This commit is contained in:
visualfc
2024-07-04 08:23:57 +08:00
parent be32f4072e
commit 91ba215568
24 changed files with 7728 additions and 7508 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,6 @@ source_filename = "main"
%"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr }
%"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 }
%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr }
@"main.init$guard" = global i1 false, align 1
@_llgo_int8 = linkonce global ptr null, align 8
@@ -127,48 +126,39 @@ _llgo_0:
br i1 %1, label %_llgo_1, label %_llgo_2
_llgo_1: ; preds = %_llgo_0
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
%3 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %2, i32 0, i32 6
%4 = load i8, ptr %3, align 1
%5 = or i8 %4, 32
store i8 %5, ptr %3, align 1
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 35)
store ptr %2, ptr @_llgo_int8, align 8
br label %_llgo_2
_llgo_2: ; preds = %_llgo_1, %_llgo_0
%6 = load ptr, ptr @"*_llgo_int8", align 8
%7 = icmp eq ptr %6, null
br i1 %7, label %_llgo_3, label %_llgo_4
%3 = load ptr, ptr @"*_llgo_int8", align 8
%4 = icmp eq ptr %3, null
br i1 %4, label %_llgo_3, label %_llgo_4
_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
%5 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 35)
%6 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %5)
store ptr %6, ptr @"*_llgo_int8", align 8
br label %_llgo_4
_llgo_4: ; preds = %_llgo_3, %_llgo_2
%10 = load ptr, ptr @_llgo_string, align 8
%11 = icmp eq ptr %10, null
br i1 %11, label %_llgo_5, label %_llgo_6
%7 = load ptr, ptr @_llgo_string, align 8
%8 = icmp eq ptr %7, null
br i1 %8, label %_llgo_5, label %_llgo_6
_llgo_5: ; preds = %_llgo_4
%12 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
store ptr %12, ptr @_llgo_string, align 8
%9 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
store ptr %9, ptr @_llgo_string, align 8
br label %_llgo_6
_llgo_6: ; preds = %_llgo_5, %_llgo_4
%13 = load ptr, ptr @_llgo_int, align 8
%14 = icmp eq ptr %13, null
br i1 %14, label %_llgo_7, label %_llgo_8
%10 = load ptr, ptr @_llgo_int, align 8
%11 = icmp eq ptr %10, null
br i1 %11, label %_llgo_7, label %_llgo_8
_llgo_7: ; preds = %_llgo_6
%15 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%16 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %15, i32 0, i32 6
%17 = load i8, ptr %16, align 1
%18 = or i8 %17, 32
store i8 %18, ptr %16, align 1
store ptr %15, ptr @_llgo_int, align 8
%12 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
store ptr %12, ptr @_llgo_int, align 8
br label %_llgo_8
_llgo_8: ; preds = %_llgo_7, %_llgo_6
@@ -179,8 +169,6 @@ 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

@@ -4,7 +4,6 @@ source_filename = "main"
%"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 }
%"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 }
%"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr }
%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr }
@main.a = global i64 0, align 8
@main.b = global i64 0, align 8
@@ -663,11 +662,7 @@ _llgo_0:
br i1 %1, label %_llgo_1, label %_llgo_2
_llgo_1: ; preds = %_llgo_0
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%3 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %2, i32 0, i32 6
%4 = load i8, ptr %3, align 1
%5 = or i8 %4, 32
store i8 %5, ptr %3, align 1
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
store ptr %2, ptr @_llgo_int, align 8
br label %_llgo_2

View File

@@ -442,390 +442,332 @@ _llgo_0:
br i1 %1, label %_llgo_1, label %_llgo_2
_llgo_1: ; preds = %_llgo_0
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1)
%3 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %2, i32 0, i32 6
%4 = load i8, ptr %3, align 1
%5 = or i8 %4, 32
store i8 %5, ptr %3, align 1
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 33)
store ptr %2, ptr @_llgo_bool, align 8
br label %_llgo_2
_llgo_2: ; preds = %_llgo_1, %_llgo_0
%6 = load ptr, ptr @_llgo_int, align 8
%7 = icmp eq ptr %6, null
br i1 %7, label %_llgo_3, label %_llgo_4
%3 = load ptr, ptr @_llgo_int, align 8
%4 = icmp eq ptr %3, null
br i1 %4, label %_llgo_3, label %_llgo_4
_llgo_3: ; preds = %_llgo_2
%8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%9 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %8, i32 0, i32 6
%10 = load i8, ptr %9, align 1
%11 = or i8 %10, 32
store i8 %11, ptr %9, align 1
store ptr %8, ptr @_llgo_int, align 8
%5 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
store ptr %5, ptr @_llgo_int, align 8
br label %_llgo_4
_llgo_4: ; preds = %_llgo_3, %_llgo_2
%12 = load ptr, ptr @_llgo_int8, align 8
%13 = icmp eq ptr %12, null
br i1 %13, label %_llgo_5, label %_llgo_6
%6 = load ptr, ptr @_llgo_int8, align 8
%7 = icmp eq ptr %6, null
br i1 %7, label %_llgo_5, label %_llgo_6
_llgo_5: ; preds = %_llgo_4
%14 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
%15 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %14, i32 0, i32 6
%16 = load i8, ptr %15, align 1
%17 = or i8 %16, 32
store i8 %17, ptr %15, align 1
store ptr %14, ptr @_llgo_int8, align 8
%8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 35)
store ptr %8, ptr @_llgo_int8, align 8
br label %_llgo_6
_llgo_6: ; preds = %_llgo_5, %_llgo_4
%18 = load ptr, ptr @_llgo_int16, align 8
%19 = icmp eq ptr %18, null
br i1 %19, label %_llgo_7, label %_llgo_8
%9 = load ptr, ptr @_llgo_int16, align 8
%10 = icmp eq ptr %9, null
br i1 %10, label %_llgo_7, label %_llgo_8
_llgo_7: ; preds = %_llgo_6
%20 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 4)
%21 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %20, i32 0, i32 6
%22 = load i8, ptr %21, align 1
%23 = or i8 %22, 32
store i8 %23, ptr %21, align 1
store ptr %20, ptr @_llgo_int16, align 8
%11 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 36)
store ptr %11, ptr @_llgo_int16, align 8
br label %_llgo_8
_llgo_8: ; preds = %_llgo_7, %_llgo_6
%24 = load ptr, ptr @_llgo_int32, align 8
%25 = icmp eq ptr %24, null
br i1 %25, label %_llgo_9, label %_llgo_10
%12 = load ptr, ptr @_llgo_int32, align 8
%13 = icmp eq ptr %12, null
br i1 %13, label %_llgo_9, label %_llgo_10
_llgo_9: ; preds = %_llgo_8
%26 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5)
%27 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %26, i32 0, i32 6
%28 = load i8, ptr %27, align 1
%29 = or i8 %28, 32
store i8 %29, ptr %27, align 1
store ptr %26, ptr @_llgo_int32, align 8
%14 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 37)
store ptr %14, ptr @_llgo_int32, align 8
br label %_llgo_10
_llgo_10: ; preds = %_llgo_9, %_llgo_8
%30 = load ptr, ptr @_llgo_int64, align 8
%31 = icmp eq ptr %30, null
br i1 %31, label %_llgo_11, label %_llgo_12
%15 = load ptr, ptr @_llgo_int64, align 8
%16 = icmp eq ptr %15, null
br i1 %16, label %_llgo_11, label %_llgo_12
_llgo_11: ; preds = %_llgo_10
%32 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 6)
%33 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %32, i32 0, i32 6
%34 = load i8, ptr %33, align 1
%35 = or i8 %34, 32
store i8 %35, ptr %33, align 1
store ptr %32, ptr @_llgo_int64, align 8
%17 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 38)
store ptr %17, ptr @_llgo_int64, align 8
br label %_llgo_12
_llgo_12: ; preds = %_llgo_11, %_llgo_10
%36 = load ptr, ptr @_llgo_uint, align 8
%37 = icmp eq ptr %36, null
br i1 %37, label %_llgo_13, label %_llgo_14
%18 = load ptr, ptr @_llgo_uint, align 8
%19 = icmp eq ptr %18, null
br i1 %19, label %_llgo_13, label %_llgo_14
_llgo_13: ; preds = %_llgo_12
%38 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 7)
%39 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %38, i32 0, i32 6
%40 = load i8, ptr %39, align 1
%41 = or i8 %40, 32
store i8 %41, ptr %39, align 1
store ptr %38, ptr @_llgo_uint, align 8
%20 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 39)
store ptr %20, ptr @_llgo_uint, align 8
br label %_llgo_14
_llgo_14: ; preds = %_llgo_13, %_llgo_12
%42 = load ptr, ptr @_llgo_uint8, align 8
%43 = icmp eq ptr %42, null
br i1 %43, label %_llgo_15, label %_llgo_16
%21 = load ptr, ptr @_llgo_uint8, align 8
%22 = icmp eq ptr %21, null
br i1 %22, label %_llgo_15, label %_llgo_16
_llgo_15: ; preds = %_llgo_14
%44 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8)
%45 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %44, i32 0, i32 6
%46 = load i8, ptr %45, align 1
%47 = or i8 %46, 32
store i8 %47, ptr %45, align 1
store ptr %44, ptr @_llgo_uint8, align 8
%23 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 40)
store ptr %23, ptr @_llgo_uint8, align 8
br label %_llgo_16
_llgo_16: ; preds = %_llgo_15, %_llgo_14
%48 = load ptr, ptr @_llgo_uint16, align 8
%49 = icmp eq ptr %48, null
br i1 %49, label %_llgo_17, label %_llgo_18
%24 = load ptr, ptr @_llgo_uint16, align 8
%25 = icmp eq ptr %24, null
br i1 %25, label %_llgo_17, label %_llgo_18
_llgo_17: ; preds = %_llgo_16
%50 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 9)
%51 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %50, i32 0, i32 6
%52 = load i8, ptr %51, align 1
%53 = or i8 %52, 32
store i8 %53, ptr %51, align 1
store ptr %50, ptr @_llgo_uint16, align 8
%26 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 41)
store ptr %26, ptr @_llgo_uint16, align 8
br label %_llgo_18
_llgo_18: ; preds = %_llgo_17, %_llgo_16
%54 = load ptr, ptr @_llgo_uint32, align 8
%55 = icmp eq ptr %54, null
br i1 %55, label %_llgo_19, label %_llgo_20
%27 = load ptr, ptr @_llgo_uint32, align 8
%28 = icmp eq ptr %27, null
br i1 %28, label %_llgo_19, label %_llgo_20
_llgo_19: ; preds = %_llgo_18
%56 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 10)
%57 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %56, i32 0, i32 6
%58 = load i8, ptr %57, align 1
%59 = or i8 %58, 32
store i8 %59, ptr %57, align 1
store ptr %56, ptr @_llgo_uint32, align 8
%29 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 42)
store ptr %29, ptr @_llgo_uint32, align 8
br label %_llgo_20
_llgo_20: ; preds = %_llgo_19, %_llgo_18
%60 = load ptr, ptr @_llgo_uint64, align 8
%61 = icmp eq ptr %60, null
br i1 %61, label %_llgo_21, label %_llgo_22
%30 = load ptr, ptr @_llgo_uint64, align 8
%31 = icmp eq ptr %30, null
br i1 %31, label %_llgo_21, label %_llgo_22
_llgo_21: ; preds = %_llgo_20
%62 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 11)
%63 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %62, i32 0, i32 6
%64 = load i8, ptr %63, align 1
%65 = or i8 %64, 32
store i8 %65, ptr %63, align 1
store ptr %62, ptr @_llgo_uint64, align 8
%32 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 43)
store ptr %32, ptr @_llgo_uint64, align 8
br label %_llgo_22
_llgo_22: ; preds = %_llgo_21, %_llgo_20
%66 = load ptr, ptr @_llgo_uintptr, align 8
%67 = icmp eq ptr %66, null
br i1 %67, label %_llgo_23, label %_llgo_24
%33 = load ptr, ptr @_llgo_uintptr, align 8
%34 = icmp eq ptr %33, null
br i1 %34, label %_llgo_23, label %_llgo_24
_llgo_23: ; preds = %_llgo_22
%68 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 12)
%69 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %68, i32 0, i32 6
%70 = load i8, ptr %69, align 1
%71 = or i8 %70, 32
store i8 %71, ptr %69, align 1
store ptr %68, ptr @_llgo_uintptr, align 8
%35 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 44)
store ptr %35, ptr @_llgo_uintptr, align 8
br label %_llgo_24
_llgo_24: ; preds = %_llgo_23, %_llgo_22
%72 = load ptr, ptr @_llgo_float32, align 8
%73 = icmp eq ptr %72, null
br i1 %73, label %_llgo_25, label %_llgo_26
%36 = load ptr, ptr @_llgo_float32, align 8
%37 = icmp eq ptr %36, null
br i1 %37, label %_llgo_25, label %_llgo_26
_llgo_25: ; preds = %_llgo_24
%74 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13)
%75 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %74, i32 0, i32 6
%76 = load i8, ptr %75, align 1
%77 = or i8 %76, 32
store i8 %77, ptr %75, align 1
store ptr %74, ptr @_llgo_float32, align 8
%38 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 45)
store ptr %38, ptr @_llgo_float32, align 8
br label %_llgo_26
_llgo_26: ; preds = %_llgo_25, %_llgo_24
%78 = load ptr, ptr @_llgo_float64, align 8
%79 = icmp eq ptr %78, null
br i1 %79, label %_llgo_27, label %_llgo_28
%39 = load ptr, ptr @_llgo_float64, align 8
%40 = icmp eq ptr %39, null
br i1 %40, label %_llgo_27, label %_llgo_28
_llgo_27: ; preds = %_llgo_26
%80 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 14)
%81 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %80, i32 0, i32 6
%82 = load i8, ptr %81, align 1
%83 = or i8 %82, 32
store i8 %83, ptr %81, align 1
store ptr %80, ptr @_llgo_float64, align 8
%41 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 46)
store ptr %41, ptr @_llgo_float64, align 8
br label %_llgo_28
_llgo_28: ; preds = %_llgo_27, %_llgo_26
%84 = load ptr, ptr @"[10]_llgo_int", align 8
%85 = icmp eq ptr %84, null
br i1 %85, label %_llgo_29, label %_llgo_30
%42 = load ptr, ptr @"[10]_llgo_int", align 8
%43 = icmp eq ptr %42, null
br i1 %43, label %_llgo_29, label %_llgo_30
_llgo_29: ; preds = %_llgo_28
%86 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%87 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 10, ptr %86)
store ptr %87, ptr @"[10]_llgo_int", align 8
%44 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%45 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 10, ptr %44)
store ptr %45, ptr @"[10]_llgo_int", align 8
br label %_llgo_30
_llgo_30: ; preds = %_llgo_29, %_llgo_28
%88 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%89 = icmp eq ptr %88, null
br i1 %89, label %_llgo_31, label %_llgo_32
%46 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%47 = icmp eq ptr %46, null
br i1 %47, label %_llgo_31, label %_llgo_32
_llgo_31: ; preds = %_llgo_30
%90 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%91 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%92 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %91, i32 0, i32 0
store ptr %90, ptr %92, align 8
%93 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %91, i32 0, i32 1
store i64 0, ptr %93, align 4
%94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %91, i32 0, i32 2
store i64 0, ptr %94, align 4
%95 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %91, align 8
%96 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%97 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%98 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %97, i32 0, i32 0
store ptr %96, ptr %98, align 8
%99 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %97, i32 0, i32 1
store i64 0, ptr %99, align 4
%100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %97, i32 0, i32 2
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
%48 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%49 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%50 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %49, i32 0, i32 0
store ptr %48, ptr %50, align 8
%51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %49, i32 0, i32 1
store i64 0, ptr %51, align 4
%52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %49, i32 0, i32 2
store i64 0, ptr %52, align 4
%53 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %49, align 8
%54 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%55 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %55, i32 0, i32 0
store ptr %54, ptr %56, align 8
%57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %55, i32 0, i32 1
store i64 0, ptr %57, align 4
%58 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %55, i32 0, i32 2
store i64 0, ptr %58, align 4
%59 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %55, align 8
%60 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %53, %"github.com/goplus/llgo/internal/runtime.Slice" %59, i1 false)
store ptr %60, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
br label %_llgo_32
_llgo_32: ; preds = %_llgo_31, %_llgo_30
%103 = load ptr, ptr @"*_llgo_int", align 8
%104 = icmp eq ptr %103, null
br i1 %104, label %_llgo_33, label %_llgo_34
%61 = load ptr, ptr @"*_llgo_int", align 8
%62 = icmp eq ptr %61, null
br i1 %62, label %_llgo_33, label %_llgo_34
_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
%63 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%64 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %63)
store ptr %64, ptr @"*_llgo_int", align 8
br label %_llgo_34
_llgo_34: ; preds = %_llgo_33, %_llgo_32
%107 = load ptr, ptr @"[]_llgo_int", align 8
%108 = icmp eq ptr %107, null
br i1 %108, label %_llgo_35, label %_llgo_36
%65 = load ptr, ptr @"[]_llgo_int", align 8
%66 = icmp eq ptr %65, null
br i1 %66, label %_llgo_35, label %_llgo_36
_llgo_35: ; preds = %_llgo_34
%109 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%110 = call ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr %109)
store ptr %110, ptr @"[]_llgo_int", align 8
%67 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%68 = call ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr %67)
store ptr %68, ptr @"[]_llgo_int", align 8
br label %_llgo_36
_llgo_36: ; preds = %_llgo_35, %_llgo_34
%111 = load ptr, ptr @_llgo_string, align 8
%112 = icmp eq ptr %111, null
br i1 %112, label %_llgo_37, label %_llgo_38
%69 = load ptr, ptr @_llgo_string, align 8
%70 = icmp eq ptr %69, null
br i1 %70, label %_llgo_37, label %_llgo_38
_llgo_37: ; preds = %_llgo_36
%113 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
store ptr %113, ptr @_llgo_string, align 8
%71 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
store ptr %71, ptr @_llgo_string, align 8
br label %_llgo_38
_llgo_38: ; preds = %_llgo_37, %_llgo_36
%114 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%115 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %114, i32 0, i32 0
store ptr @4, ptr %115, align 8
%116 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %114, i32 0, i32 1
store i64 1, ptr %116, align 4
%117 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %114, align 8
%118 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%119 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %118, i32 0, i32 0
store ptr null, ptr %119, align 8
%120 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %118, i32 0, i32 1
store i64 0, ptr %120, align 4
%121 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %118, align 8
%122 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
%123 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %117, ptr %122, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %121, i1 false)
%124 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%125 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %124, i32 0, i32 0
store ptr @5, ptr %125, align 8
%126 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %124, i32 0, i32 1
store i64 1, ptr %126, align 4
%127 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %124, align 8
%128 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %128, i32 0, i32 0
store ptr null, ptr %129, align 8
%130 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %128, i32 0, i32 1
store i64 0, ptr %130, align 4
%131 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %128, align 8
%132 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%133 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %127, ptr %132, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %131, i1 false)
%134 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %134, i32 0, i32 0
store ptr @6, ptr %135, align 8
%136 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %134, i32 0, i32 1
store i64 1, ptr %136, align 4
%137 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %134, align 8
%138 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%139 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %138, i32 0, i32 0
store ptr null, ptr %139, align 8
%140 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %138, i32 0, i32 1
store i64 0, ptr %140, align 4
%141 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %138, align 8
%142 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%143 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %137, ptr %142, i64 16, %"github.com/goplus/llgo/internal/runtime.String" %141, i1 false)
%144 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%145 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %144, i32 0, i32 0
store ptr @7, ptr %145, align 8
%146 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %144, i32 0, i32 1
store i64 4, ptr %146, align 4
%147 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %144, align 8
%148 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 168)
%149 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %148, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %123, ptr %149, align 8
%150 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %148, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %133, ptr %150, align 8
%151 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %148, i64 2
store %"github.com/goplus/llgo/internal/abi.StructField" %143, ptr %151, align 8
%152 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%153 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %152, i32 0, i32 0
store ptr %148, ptr %153, align 8
%154 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %152, i32 0, i32 1
store i64 3, ptr %154, align 4
%155 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %152, i32 0, i32 2
store i64 3, ptr %155, align 4
%156 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %152, align 8
%157 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %147, i64 24, %"github.com/goplus/llgo/internal/runtime.Slice" %156)
store ptr %157, ptr @"main.struct$RKbUG45GE4henGMAdmt0Rju0JptyR8NsX7IZLsOI0OM", align 8
%158 = load ptr, ptr @_llgo_main.T, align 8
%159 = icmp eq ptr %158, null
br i1 %159, label %_llgo_39, label %_llgo_40
%72 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 0
store ptr @4, ptr %73, align 8
%74 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 1
store i64 1, ptr %74, align 4
%75 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %72, align 8
%76 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %76, i32 0, i32 0
store ptr null, ptr %77, align 8
%78 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %76, i32 0, i32 1
store i64 0, ptr %78, align 4
%79 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %76, align 8
%80 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 35)
%81 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %75, ptr %80, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %79, i1 false)
%82 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%83 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %82, i32 0, i32 0
store ptr @5, ptr %83, align 8
%84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %82, i32 0, i32 1
store i64 1, ptr %84, align 4
%85 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %82, align 8
%86 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%87 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %86, i32 0, i32 0
store ptr null, ptr %87, align 8
%88 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %86, i32 0, i32 1
store i64 0, ptr %88, align 4
%89 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %86, align 8
%90 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%91 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %85, ptr %90, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %89, i1 false)
%92 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%93 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %92, i32 0, i32 0
store ptr @6, ptr %93, align 8
%94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %92, i32 0, i32 1
store i64 1, ptr %94, align 4
%95 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %92, align 8
%96 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%97 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %96, i32 0, i32 0
store ptr null, ptr %97, align 8
%98 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %96, i32 0, i32 1
store i64 0, ptr %98, align 4
%99 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %96, align 8
%100 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%101 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %95, ptr %100, i64 16, %"github.com/goplus/llgo/internal/runtime.String" %99, i1 false)
%102 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%103 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %102, i32 0, i32 0
store ptr @7, ptr %103, align 8
%104 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %102, i32 0, i32 1
store i64 4, ptr %104, align 4
%105 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %102, align 8
%106 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 168)
%107 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %106, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %81, ptr %107, align 8
%108 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %106, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %91, ptr %108, align 8
%109 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %106, i64 2
store %"github.com/goplus/llgo/internal/abi.StructField" %101, ptr %109, align 8
%110 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%111 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %110, i32 0, i32 0
store ptr %106, ptr %111, align 8
%112 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %110, i32 0, i32 1
store i64 3, ptr %112, align 4
%113 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %110, i32 0, i32 2
store i64 3, ptr %113, align 4
%114 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %110, align 8
%115 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %105, i64 24, %"github.com/goplus/llgo/internal/runtime.Slice" %114)
store ptr %115, ptr @"main.struct$RKbUG45GE4henGMAdmt0Rju0JptyR8NsX7IZLsOI0OM", align 8
%116 = load ptr, ptr @_llgo_main.T, align 8
%117 = icmp eq ptr %116, null
br i1 %117, label %_llgo_39, label %_llgo_40
_llgo_39: ; preds = %_llgo_38
%160 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 24, i64 0, i64 1)
store ptr %160, ptr @_llgo_main.T, align 8
%118 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 24, i64 0, i64 1)
store ptr %118, ptr @_llgo_main.T, align 8
br label %_llgo_40
_llgo_40: ; preds = %_llgo_39, %_llgo_38
%161 = load ptr, ptr @_llgo_string, align 8
br i1 %159, label %_llgo_41, label %_llgo_42
%119 = load ptr, ptr @_llgo_string, align 8
br i1 %117, label %_llgo_41, label %_llgo_42
_llgo_41: ; preds = %_llgo_40
%162 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%163 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %162, i32 0, i32 0
store ptr @8, ptr %163, align 8
%164 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %162, i32 0, i32 1
store i64 6, ptr %164, align 4
%165 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %162, align 8
%166 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%167 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%168 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %167, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %165, ptr %168, align 8
%169 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %167, i32 0, i32 1
store ptr %166, ptr %169, align 8
%170 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %167, i32 0, i32 2
store ptr @"main.(*T).Invoke", ptr %170, align 8
%171 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %167, i32 0, i32 3
store ptr @"main.(*T).Invoke", ptr %171, align 8
%172 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %167, align 8
%173 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%174 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %173, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %172, ptr %174, align 8
%175 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%176 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %175, i32 0, i32 0
store ptr %173, ptr %176, align 8
%177 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %175, i32 0, i32 1
store i64 1, ptr %177, align 4
%178 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %175, i32 0, i32 2
store i64 1, ptr %178, align 4
%179 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %175, align 8
%180 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%181 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %180, i32 0, i32 0
store ptr @7, ptr %181, align 8
%182 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %180, i32 0, i32 1
store i64 4, ptr %182, align 4
%183 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %180, align 8
%184 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%185 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %184, i32 0, i32 0
store ptr @9, ptr %185, align 8
%186 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %184, i32 0, i32 1
store i64 1, ptr %186, align 4
%187 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %184, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %160, %"github.com/goplus/llgo/internal/runtime.String" %183, %"github.com/goplus/llgo/internal/runtime.String" %187, ptr %161, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %179)
%120 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%121 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %120, i32 0, i32 0
store ptr @8, ptr %121, align 8
%122 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %120, i32 0, i32 1
store i64 6, ptr %122, align 4
%123 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %120, align 8
%124 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%125 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%126 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %125, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %123, ptr %126, align 8
%127 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %125, i32 0, i32 1
store ptr %124, ptr %127, align 8
%128 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %125, i32 0, i32 2
store ptr @"main.(*T).Invoke", ptr %128, align 8
%129 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %125, i32 0, i32 3
store ptr @"main.(*T).Invoke", ptr %129, align 8
%130 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %125, align 8
%131 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%132 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %131, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %130, ptr %132, align 8
%133 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 0
store ptr %131, ptr %134, align 8
%135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 1
store i64 1, ptr %135, align 4
%136 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 2
store i64 1, ptr %136, align 4
%137 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, align 8
%138 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%139 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %138, i32 0, i32 0
store ptr @7, ptr %139, align 8
%140 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %138, i32 0, i32 1
store i64 4, ptr %140, align 4
%141 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %138, align 8
%142 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%143 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %142, i32 0, i32 0
store ptr @9, ptr %143, align 8
%144 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %142, i32 0, i32 1
store i64 1, ptr %144, align 4
%145 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %142, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %118, %"github.com/goplus/llgo/internal/runtime.String" %141, %"github.com/goplus/llgo/internal/runtime.String" %145, ptr %119, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %137)
br label %_llgo_42
_llgo_42: ; preds = %_llgo_41, %_llgo_40
@@ -840,8 +782,6 @@ 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

@@ -6,7 +6,6 @@ source_filename = "main"
%main.N = type { i8, i8 }
%"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 }
%"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 }
%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr }
@"main.init$guard" = global i1 false, align 1
@__llgo_argc = global i32 0, align 4
@@ -1006,7 +1005,7 @@ _llgo_0:
br i1 %1, label %_llgo_1, label %_llgo_2
_llgo_1: ; preds = %_llgo_0
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%3 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
%4 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 0
@@ -1020,7 +1019,7 @@ _llgo_1: ; preds = %_llgo_0
%10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %8, i32 0, i32 1
store i64 0, ptr %10, align 4
%11 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %8, align 8
%12 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8)
%12 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 40)
%13 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %12)
%14 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %7, ptr %13, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %11, i1 false)
%15 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
@@ -1035,7 +1034,7 @@ _llgo_1: ; preds = %_llgo_0
%21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %19, i32 0, i32 1
store i64 0, ptr %21, align 4
%22 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %19, align 8
%23 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%23 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%24 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %23)
%25 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %18, ptr %24, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %22, i1 false)
%26 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
@@ -1065,7 +1064,7 @@ _llgo_1: ; preds = %_llgo_0
%43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %41, i32 0, i32 1
store i64 0, ptr %43, align 4
%44 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %41, align 8
%45 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 26)
%45 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 58)
%46 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %40, ptr %45, i64 200, %"github.com/goplus/llgo/internal/runtime.String" %44, i1 false)
%47 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %47, i32 0, i32 0
@@ -1092,7 +1091,6 @@ _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
@@ -1103,7 +1101,7 @@ _llgo_2: ; preds = %_llgo_1, %_llgo_0
_llgo_3: ; preds = %_llgo_2
%65 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
%66 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%66 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%67 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %67, i32 0, i32 0
store ptr @0, ptr %68, align 8
@@ -1116,7 +1114,7 @@ _llgo_3: ; preds = %_llgo_2
%73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %71, i32 0, i32 1
store i64 0, ptr %73, align 4
%74 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %71, align 8
%75 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8)
%75 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 40)
%76 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %75)
%77 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %70, ptr %76, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %74, i1 false)
%78 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
@@ -1146,7 +1144,7 @@ _llgo_3: ; preds = %_llgo_2
%95 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %93, i32 0, i32 1
store i64 0, ptr %95, align 4
%96 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %93, align 8
%97 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%97 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%98 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %97)
%99 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %92, ptr %98, i64 136, %"github.com/goplus/llgo/internal/runtime.String" %96, i1 false)
%100 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
@@ -1161,7 +1159,7 @@ _llgo_3: ; preds = %_llgo_2
%106 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %104, i32 0, i32 1
store i64 0, ptr %106, align 4
%107 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %104, align 8
%108 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 26)
%108 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 58)
%109 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %103, ptr %108, i64 200, %"github.com/goplus/llgo/internal/runtime.String" %107, i1 false)
%110 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%111 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %110, i32 0, i32 0
@@ -1188,7 +1186,6 @@ _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
@@ -1230,7 +1227,7 @@ _llgo_7: ; preds = %_llgo_6
store i64 0, ptr %143, align 4
%144 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %141, align 8
%145 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %140, %"github.com/goplus/llgo/internal/runtime.String" %144, %"github.com/goplus/llgo/internal/runtime.Slice" %136)
%146 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%146 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%147 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%148 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %147, i32 0, i32 0
store ptr @0, ptr %148, align 8
@@ -1243,7 +1240,7 @@ _llgo_7: ; preds = %_llgo_6
%153 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %151, i32 0, i32 1
store i64 0, ptr %153, align 4
%154 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %151, align 8
%155 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8)
%155 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 40)
%156 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %155)
%157 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %150, ptr %156, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %154, i1 false)
%158 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
@@ -1294,7 +1291,7 @@ _llgo_7: ; preds = %_llgo_6
%189 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %187, i32 0, i32 1
store i64 0, ptr %189, align 4
%190 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %187, align 8
%191 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%191 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%192 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %191)
%193 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %186, ptr %192, i64 136, %"github.com/goplus/llgo/internal/runtime.String" %190, i1 false)
%194 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
@@ -1309,7 +1306,7 @@ _llgo_7: ; preds = %_llgo_6
%200 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %198, i32 0, i32 1
store i64 0, ptr %200, align 4
%201 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %198, align 8
%202 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 26)
%202 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 58)
%203 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %197, ptr %202, i64 200, %"github.com/goplus/llgo/internal/runtime.String" %201, i1 false)
%204 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%205 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %204, i32 0, i32 0
@@ -1336,7 +1333,6 @@ _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
@@ -1347,364 +1343,347 @@ _llgo_8: ; preds = %_llgo_7, %_llgo_6
_llgo_9: ; preds = %_llgo_8
%222 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 17, i64 0, i64 0)
%223 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %222, i32 0, i32 6
%224 = load i8, ptr %223, align 1
%225 = or i8 %224, 32
store i8 %225, ptr %223, align 1
store ptr %222, ptr @_llgo_main.N1, align 8
br label %_llgo_10
_llgo_10: ; preds = %_llgo_9, %_llgo_8
%226 = load ptr, ptr @_llgo_int, align 8
%227 = icmp eq ptr %226, null
br i1 %227, label %_llgo_11, label %_llgo_12
%223 = load ptr, ptr @_llgo_int, align 8
%224 = icmp eq ptr %223, null
br i1 %224, label %_llgo_11, label %_llgo_12
_llgo_11: ; preds = %_llgo_10
%228 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%229 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %228, i32 0, i32 6
%230 = load i8, ptr %229, align 1
%231 = or i8 %230, 32
store i8 %231, ptr %229, align 1
store ptr %228, ptr @_llgo_int, align 8
%225 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
store ptr %225, ptr @_llgo_int, align 8
br label %_llgo_12
_llgo_12: ; preds = %_llgo_11, %_llgo_10
%232 = load ptr, ptr @_llgo_int, align 8
%233 = load ptr, ptr @"[1]_llgo_int", align 8
%234 = icmp eq ptr %233, null
br i1 %234, label %_llgo_13, label %_llgo_14
%226 = load ptr, ptr @_llgo_int, align 8
%227 = load ptr, ptr @"[1]_llgo_int", align 8
%228 = icmp eq ptr %227, null
br i1 %228, label %_llgo_13, label %_llgo_14
_llgo_13: ; preds = %_llgo_12
%235 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%236 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 1, ptr %235)
%237 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %236, i32 0, i32 6
%238 = load i8, ptr %237, align 1
%239 = or i8 %238, 32
store i8 %239, ptr %237, align 1
store ptr %236, ptr @"[1]_llgo_int", align 8
%229 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%230 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 1, ptr %229)
store ptr %230, ptr @"[1]_llgo_int", align 8
br label %_llgo_14
_llgo_14: ; preds = %_llgo_13, %_llgo_12
%240 = load ptr, ptr @"[1]_llgo_int", align 8
%231 = load ptr, ptr @"[1]_llgo_int", align 8
br i1 %221, label %_llgo_15, label %_llgo_16
_llgo_15: ; preds = %_llgo_14
%241 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%242 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %241, i32 0, i32 0
store ptr @4, ptr %242, align 8
%243 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %241, i32 0, i32 1
store i64 4, ptr %243, align 4
%244 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %241, align 8
%245 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%246 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %245, i32 0, i32 0
store ptr @12, ptr %246, align 8
%247 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %245, i32 0, i32 1
store i64 2, ptr %247, align 4
%248 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %245, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %222, %"github.com/goplus/llgo/internal/runtime.String" %244, %"github.com/goplus/llgo/internal/runtime.String" %248, ptr %240, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
%232 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%233 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %232, i32 0, i32 0
store ptr @4, ptr %233, align 8
%234 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %232, i32 0, i32 1
store i64 4, ptr %234, align 4
%235 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %232, align 8
%236 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%237 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %236, i32 0, i32 0
store ptr @12, ptr %237, align 8
%238 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %236, i32 0, i32 1
store i64 2, ptr %238, align 4
%239 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %236, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %222, %"github.com/goplus/llgo/internal/runtime.String" %235, %"github.com/goplus/llgo/internal/runtime.String" %239, ptr %231, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
br label %_llgo_16
_llgo_16: ; preds = %_llgo_15, %_llgo_14
%249 = load ptr, ptr @_llgo_main.K, align 8
%250 = icmp eq ptr %249, null
br i1 %250, label %_llgo_17, label %_llgo_18
%240 = load ptr, ptr @_llgo_main.K, align 8
%241 = icmp eq ptr %240, null
br i1 %241, label %_llgo_17, label %_llgo_18
_llgo_17: ; preds = %_llgo_16
%251 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 17, i64 0, i64 0)
store ptr %251, ptr @_llgo_main.K, align 8
%242 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 17, i64 0, i64 0)
store ptr %242, ptr @_llgo_main.K, align 8
br label %_llgo_18
_llgo_18: ; preds = %_llgo_17, %_llgo_16
%252 = load ptr, ptr @_llgo_main.N, align 8
%253 = icmp eq ptr %252, null
br i1 %253, label %_llgo_19, label %_llgo_20
%243 = load ptr, ptr @_llgo_main.N, align 8
%244 = icmp eq ptr %243, null
br i1 %244, label %_llgo_19, label %_llgo_20
_llgo_19: ; preds = %_llgo_18
%254 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 0)
store ptr %254, ptr @_llgo_main.N, align 8
%245 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 0)
store ptr %245, ptr @_llgo_main.N, align 8
br label %_llgo_20
_llgo_20: ; preds = %_llgo_19, %_llgo_18
%255 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%256 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %255, i32 0, i32 0
store ptr @14, ptr %256, align 8
%257 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %255, i32 0, i32 1
store i64 2, ptr %257, align 4
%258 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %255, align 8
%259 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%260 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %259, i32 0, i32 0
store ptr null, ptr %260, align 8
%261 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %259, i32 0, i32 1
store i64 0, ptr %261, align 4
%262 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %259, align 8
%263 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
%264 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %258, ptr %263, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %262, i1 false)
%265 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%266 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %265, i32 0, i32 0
store ptr @15, ptr %266, align 8
%267 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %265, i32 0, i32 1
store i64 2, ptr %267, align 4
%268 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %265, align 8
%269 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%270 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %269, i32 0, i32 0
store ptr null, ptr %270, align 8
%271 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %269, i32 0, i32 1
store i64 0, ptr %271, align 4
%272 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %269, align 8
%273 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
%274 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %268, ptr %273, i64 1, %"github.com/goplus/llgo/internal/runtime.String" %272, i1 false)
%275 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%276 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %275, i32 0, i32 0
store ptr @4, ptr %276, align 8
%277 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %275, i32 0, i32 1
store i64 4, ptr %277, align 4
%278 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %275, align 8
%279 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112)
%280 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %279, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %264, ptr %280, align 8
%281 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %279, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %274, ptr %281, align 8
%282 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%283 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %282, i32 0, i32 0
store ptr %279, ptr %283, align 8
%284 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %282, i32 0, i32 1
store i64 2, ptr %284, align 4
%285 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %282, i32 0, i32 2
store i64 2, ptr %285, align 4
%286 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %282, align 8
%287 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %278, i64 2, %"github.com/goplus/llgo/internal/runtime.Slice" %286)
store ptr %287, ptr @"main.struct$e65EDK9vxC36Nz3YTgO1ulssLlNH03Bva_WWaCjH-4A", align 8
%288 = load ptr, ptr @"main.struct$e65EDK9vxC36Nz3YTgO1ulssLlNH03Bva_WWaCjH-4A", align 8
br i1 %253, label %_llgo_21, label %_llgo_22
%246 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%247 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %246, i32 0, i32 0
store ptr @14, ptr %247, align 8
%248 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %246, i32 0, i32 1
store i64 2, ptr %248, align 4
%249 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %246, align 8
%250 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%251 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %250, i32 0, i32 0
store ptr null, ptr %251, align 8
%252 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %250, i32 0, i32 1
store i64 0, ptr %252, align 4
%253 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %250, align 8
%254 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 35)
%255 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %249, ptr %254, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %253, i1 false)
%256 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%257 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %256, i32 0, i32 0
store ptr @15, ptr %257, align 8
%258 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %256, i32 0, i32 1
store i64 2, ptr %258, align 4
%259 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %256, align 8
%260 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%261 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %260, i32 0, i32 0
store ptr null, ptr %261, align 8
%262 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %260, i32 0, i32 1
store i64 0, ptr %262, align 4
%263 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %260, align 8
%264 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 35)
%265 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %259, ptr %264, i64 1, %"github.com/goplus/llgo/internal/runtime.String" %263, i1 false)
%266 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%267 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %266, i32 0, i32 0
store ptr @4, ptr %267, align 8
%268 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %266, i32 0, i32 1
store i64 4, ptr %268, align 4
%269 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %266, align 8
%270 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112)
%271 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %270, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %255, ptr %271, align 8
%272 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %270, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %265, ptr %272, align 8
%273 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%274 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %273, i32 0, i32 0
store ptr %270, ptr %274, align 8
%275 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %273, i32 0, i32 1
store i64 2, ptr %275, align 4
%276 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %273, i32 0, i32 2
store i64 2, ptr %276, align 4
%277 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %273, align 8
%278 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %269, i64 2, %"github.com/goplus/llgo/internal/runtime.Slice" %277)
store ptr %278, ptr @"main.struct$e65EDK9vxC36Nz3YTgO1ulssLlNH03Bva_WWaCjH-4A", align 8
%279 = load ptr, ptr @"main.struct$e65EDK9vxC36Nz3YTgO1ulssLlNH03Bva_WWaCjH-4A", align 8
br i1 %244, label %_llgo_21, label %_llgo_22
_llgo_21: ; preds = %_llgo_20
%289 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%290 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %289, i32 0, i32 0
store ptr @4, ptr %290, align 8
%291 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %289, i32 0, i32 1
store i64 4, ptr %291, align 4
%292 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %289, align 8
%293 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%294 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %293, i32 0, i32 0
store ptr @16, ptr %294, align 8
%295 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %293, i32 0, i32 1
store i64 1, ptr %295, align 4
%296 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %293, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %254, %"github.com/goplus/llgo/internal/runtime.String" %292, %"github.com/goplus/llgo/internal/runtime.String" %296, ptr %288, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
%280 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%281 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %280, i32 0, i32 0
store ptr @4, ptr %281, align 8
%282 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %280, i32 0, i32 1
store i64 4, ptr %282, align 4
%283 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %280, align 8
%284 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%285 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %284, i32 0, i32 0
store ptr @16, ptr %285, align 8
%286 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %284, i32 0, i32 1
store i64 1, ptr %286, align 4
%287 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %284, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %245, %"github.com/goplus/llgo/internal/runtime.String" %283, %"github.com/goplus/llgo/internal/runtime.String" %287, ptr %279, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
br label %_llgo_22
_llgo_22: ; preds = %_llgo_21, %_llgo_20
%297 = load ptr, ptr @_llgo_main.N, align 8
%298 = load ptr, ptr @"[1]_llgo_main.N", align 8
%299 = icmp eq ptr %298, null
br i1 %299, label %_llgo_23, label %_llgo_24
%288 = load ptr, ptr @_llgo_main.N, align 8
%289 = load ptr, ptr @"[1]_llgo_main.N", align 8
%290 = icmp eq ptr %289, null
br i1 %290, label %_llgo_23, label %_llgo_24
_llgo_23: ; preds = %_llgo_22
%300 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 1, ptr %254)
store ptr %300, ptr @"[1]_llgo_main.N", align 8
%291 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 1, ptr %245)
store ptr %291, ptr @"[1]_llgo_main.N", align 8
br label %_llgo_24
_llgo_24: ; preds = %_llgo_23, %_llgo_22
%301 = load ptr, ptr @"[1]_llgo_main.N", align 8
br i1 %250, label %_llgo_25, label %_llgo_26
%292 = load ptr, ptr @"[1]_llgo_main.N", align 8
br i1 %241, label %_llgo_25, label %_llgo_26
_llgo_25: ; preds = %_llgo_24
%302 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%303 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %302, i32 0, i32 0
store ptr @4, ptr %303, align 8
%304 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %302, i32 0, i32 1
store i64 4, ptr %304, align 4
%305 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %302, align 8
%306 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%307 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %306, i32 0, i32 0
store ptr @17, ptr %307, align 8
%308 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %306, i32 0, i32 1
store i64 1, ptr %308, align 4
%309 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %306, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %251, %"github.com/goplus/llgo/internal/runtime.String" %305, %"github.com/goplus/llgo/internal/runtime.String" %309, ptr %301, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
%293 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%294 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %293, i32 0, i32 0
store ptr @4, ptr %294, align 8
%295 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %293, i32 0, i32 1
store i64 4, ptr %295, align 4
%296 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %293, align 8
%297 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%298 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %297, i32 0, i32 0
store ptr @17, ptr %298, align 8
%299 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %297, i32 0, i32 1
store i64 1, ptr %299, align 4
%300 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %297, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %242, %"github.com/goplus/llgo/internal/runtime.String" %296, %"github.com/goplus/llgo/internal/runtime.String" %300, ptr %292, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
br label %_llgo_26
_llgo_26: ; preds = %_llgo_25, %_llgo_24
%310 = load ptr, ptr @_llgo_main.K2, align 8
%311 = icmp eq ptr %310, null
br i1 %311, label %_llgo_27, label %_llgo_28
%301 = load ptr, ptr @_llgo_main.K2, align 8
%302 = icmp eq ptr %301, null
br i1 %302, label %_llgo_27, label %_llgo_28
_llgo_27: ; preds = %_llgo_26
%312 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 17, i64 0, i64 0)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %312)
store ptr %312, ptr @_llgo_main.K2, align 8
%303 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 17, i64 0, i64 0)
store ptr %303, ptr @_llgo_main.K2, align 8
br label %_llgo_28
_llgo_28: ; preds = %_llgo_27, %_llgo_26
%313 = load ptr, ptr @"*_llgo_main.N", align 8
%314 = icmp eq ptr %313, null
br i1 %314, label %_llgo_29, label %_llgo_30
%304 = load ptr, ptr @"*_llgo_main.N", align 8
%305 = icmp eq ptr %304, null
br i1 %305, label %_llgo_29, label %_llgo_30
_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
%306 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %245)
store ptr %306, ptr @"*_llgo_main.N", align 8
br label %_llgo_30
_llgo_30: ; preds = %_llgo_29, %_llgo_28
%316 = load ptr, ptr @"*_llgo_main.N", align 8
%317 = load ptr, ptr @"[1]*_llgo_main.N", align 8
%318 = icmp eq ptr %317, null
br i1 %318, label %_llgo_31, label %_llgo_32
%307 = load ptr, ptr @"*_llgo_main.N", align 8
%308 = load ptr, ptr @"[1]*_llgo_main.N", align 8
%309 = icmp eq ptr %308, null
br i1 %309, label %_llgo_31, label %_llgo_32
_llgo_31: ; preds = %_llgo_30
%319 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %254)
%320 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 1, ptr %319)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %320)
store ptr %320, ptr @"[1]*_llgo_main.N", align 8
%310 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %245)
%311 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 1, ptr %310)
store ptr %311, ptr @"[1]*_llgo_main.N", align 8
br label %_llgo_32
_llgo_32: ; preds = %_llgo_31, %_llgo_30
%321 = load ptr, ptr @"[1]*_llgo_main.N", align 8
br i1 %311, label %_llgo_33, label %_llgo_34
%312 = load ptr, ptr @"[1]*_llgo_main.N", align 8
br i1 %302, label %_llgo_33, label %_llgo_34
_llgo_33: ; preds = %_llgo_32
%322 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%323 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %322, i32 0, i32 0
store ptr @4, ptr %323, align 8
%324 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %322, i32 0, i32 1
store i64 4, ptr %324, align 4
%325 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %322, align 8
%326 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%327 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %326, i32 0, i32 0
store ptr @18, ptr %327, align 8
%328 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %326, i32 0, i32 1
store i64 2, ptr %328, align 4
%329 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %326, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %312, %"github.com/goplus/llgo/internal/runtime.String" %325, %"github.com/goplus/llgo/internal/runtime.String" %329, ptr %321, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
%313 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%314 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %313, i32 0, i32 0
store ptr @4, ptr %314, align 8
%315 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %313, i32 0, i32 1
store i64 4, ptr %315, align 4
%316 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %313, align 8
%317 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%318 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %317, i32 0, i32 0
store ptr @18, ptr %318, align 8
%319 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %317, i32 0, i32 1
store i64 2, ptr %319, align 4
%320 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %317, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %303, %"github.com/goplus/llgo/internal/runtime.String" %316, %"github.com/goplus/llgo/internal/runtime.String" %320, ptr %312, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
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
%321 = load ptr, ptr @"chan _llgo_int", align 8
%322 = icmp eq ptr %321, null
br i1 %322, 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
%323 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%324 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %323, i32 0, i32 0
store ptr @19, ptr %324, align 8
%325 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %323, i32 0, i32 1
store i64 4, ptr %325, align 4
%326 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %323, align 8
%327 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%328 = call ptr @"github.com/goplus/llgo/internal/runtime.ChanOf"(i64 3, %"github.com/goplus/llgo/internal/runtime.String" %326, ptr %327)
store ptr %328, 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
%329 = load ptr, ptr @"map[chan _llgo_int]_llgo_int", align 8
%330 = icmp eq ptr %329, null
br i1 %330, 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
%331 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%332 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %331, i32 0, i32 0
store ptr @19, ptr %332, align 8
%333 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %331, i32 0, i32 1
store i64 4, ptr %333, align 4
%334 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %331, align 8
%335 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%336 = call ptr @"github.com/goplus/llgo/internal/runtime.ChanOf"(i64 3, %"github.com/goplus/llgo/internal/runtime.String" %334, ptr %335)
%337 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%338 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%339 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %338, i32 0, i32 0
store ptr @0, ptr %339, align 8
%340 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %338, i32 0, i32 1
store i64 7, ptr %340, align 4
%341 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %338, align 8
%342 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%343 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %342, i32 0, i32 0
store ptr null, ptr %343, align 8
%344 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %342, i32 0, i32 1
store i64 0, ptr %344, align 4
%345 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %342, align 8
%346 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 40)
%347 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %346)
%348 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %341, ptr %347, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %345, i1 false)
%349 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%350 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %349, i32 0, i32 0
store ptr @1, ptr %350, align 8
%351 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %349, i32 0, i32 1
store i64 4, ptr %351, align 4
%352 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %349, align 8
%353 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%354 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %353, i32 0, i32 0
store ptr null, ptr %354, align 8
%355 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %353, i32 0, i32 1
store i64 0, ptr %355, align 4
%356 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %353, align 8
%357 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%358 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %357, i32 0, i32 0
store ptr @19, ptr %358, align 8
%359 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %357, i32 0, i32 1
store i64 4, ptr %359, align 4
%360 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %357, align 8
%361 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%362 = call ptr @"github.com/goplus/llgo/internal/runtime.ChanOf"(i64 3, %"github.com/goplus/llgo/internal/runtime.String" %360, ptr %361)
%363 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %362)
%364 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %352, ptr %363, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %356, i1 false)
%365 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%366 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %365, i32 0, i32 0
store ptr @2, ptr %366, align 8
%367 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %365, i32 0, i32 1
store i64 5, ptr %367, align 4
%368 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %365, align 8
%369 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%370 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %369, i32 0, i32 0
store ptr null, ptr %370, align 8
%371 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %369, i32 0, i32 1
store i64 0, ptr %371, align 4
%372 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %369, align 8
%373 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%374 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %373)
%375 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %368, ptr %374, i64 72, %"github.com/goplus/llgo/internal/runtime.String" %372, i1 false)
%376 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%377 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %376, i32 0, i32 0
store ptr @3, ptr %377, align 8
%378 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %376, i32 0, i32 1
store i64 8, ptr %378, align 4
%379 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %376, align 8
%380 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%381 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %380, i32 0, i32 0
store ptr null, ptr %381, align 8
%382 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %380, i32 0, i32 1
store i64 0, ptr %382, align 4
%383 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %380, align 8
%384 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 58)
%385 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %379, ptr %384, i64 136, %"github.com/goplus/llgo/internal/runtime.String" %383, i1 false)
%386 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%387 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %386, i32 0, i32 0
store ptr @4, ptr %387, align 8
%388 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %386, i32 0, i32 1
store i64 4, ptr %388, align 4
%389 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %386, align 8
%390 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 224)
%391 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %390, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %348, ptr %391, align 8
%392 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %390, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %364, ptr %392, align 8
%393 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %390, i64 2
store %"github.com/goplus/llgo/internal/abi.StructField" %375, ptr %393, align 8
%394 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %390, i64 3
store %"github.com/goplus/llgo/internal/abi.StructField" %385, ptr %394, align 8
%395 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%396 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %395, i32 0, i32 0
store ptr %390, ptr %396, align 8
%397 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", 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
%398 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %395, i32 0, i32 2
store i64 4, ptr %398, align 4
%399 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %395, align 8
%400 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %389, i64 144, %"github.com/goplus/llgo/internal/runtime.Slice" %399)
%401 = call ptr @"github.com/goplus/llgo/internal/runtime.MapOf"(ptr %336, ptr %337, ptr %400, i64 4)
store ptr %401, ptr @"map[chan _llgo_int]_llgo_int", align 8
br label %_llgo_38
_llgo_38: ; preds = %_llgo_37, %_llgo_36
@@ -1723,8 +1702,6 @@ 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)

View File

@@ -66,8 +66,8 @@ _llgo_0:
br i1 %1, label %_llgo_1, label %_llgo_2
_llgo_1: ; preds = %_llgo_0
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%3 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%3 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%4 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 0
store ptr @0, ptr %5, align 8
@@ -80,7 +80,7 @@ _llgo_1: ; preds = %_llgo_0
%10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %8, i32 0, i32 1
store i64 0, ptr %10, align 4
%11 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %8, align 8
%12 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8)
%12 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 40)
%13 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %12)
%14 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %7, ptr %13, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %11, i1 false)
%15 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
@@ -95,7 +95,7 @@ _llgo_1: ; preds = %_llgo_0
%21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %19, i32 0, i32 1
store i64 0, ptr %21, align 4
%22 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %19, align 8
%23 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%23 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%24 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %23)
%25 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %18, ptr %24, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %22, i1 false)
%26 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
@@ -110,7 +110,7 @@ _llgo_1: ; preds = %_llgo_0
%32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %30, i32 0, i32 1
store i64 0, ptr %32, align 4
%33 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %30, align 8
%34 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%34 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%35 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %34)
%36 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %29, ptr %35, i64 72, %"github.com/goplus/llgo/internal/runtime.String" %33, i1 false)
%37 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
@@ -125,7 +125,7 @@ _llgo_1: ; preds = %_llgo_0
%43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %41, i32 0, i32 1
store i64 0, ptr %43, align 4
%44 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %41, align 8
%45 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 12)
%45 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 44)
%46 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %40, ptr %45, i64 136, %"github.com/goplus/llgo/internal/runtime.String" %44, i1 false)
%47 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %47, i32 0, i32 0
@@ -152,7 +152,6 @@ _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
@@ -172,8 +171,6 @@ 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)

15
cl/_testrt/typed/in.go Normal file
View File

@@ -0,0 +1,15 @@
package main
type T string
type A [2]int
func main() {
var v any = T("hello")
println(v.(T))
s, ok := v.(string)
println(s, ok)
var a any = A{1, 2}
ar, ok := a.(A)
println(ar[0], ar[1], ok)
}

299
cl/_testrt/typed/out.ll Normal file
View File

@@ -0,0 +1,299 @@
; ModuleID = 'main'
source_filename = "main"
%"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 }
%"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr }
%"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 }
@"main.init$guard" = global i1 false, align 1
@__llgo_argc = global i32 0, align 4
@__llgo_argv = global ptr null, align 8
@0 = private unnamed_addr constant [5 x i8] c"hello", align 1
@_llgo_main.T = linkonce global ptr null, align 8
@_llgo_string = linkonce global ptr null, align 8
@1 = private unnamed_addr constant [4 x i8] c"main", align 1
@2 = private unnamed_addr constant [1 x i8] c"T", align 1
@3 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1
@_llgo_main.A = linkonce global ptr null, align 8
@_llgo_int = linkonce global ptr null, align 8
@"[2]_llgo_int" = linkonce global ptr null, align 8
@4 = private unnamed_addr constant [1 x i8] c"A", align 1
define void @main.init() {
_llgo_0:
%0 = load i1, ptr @"main.init$guard", align 1
br i1 %0, label %_llgo_2, label %_llgo_1
_llgo_1: ; preds = %_llgo_0
store i1 true, ptr @"main.init$guard", align 1
call void @"main.init$after"()
br label %_llgo_2
_llgo_2: ; preds = %_llgo_1, %_llgo_0
ret void
}
define i32 @main(i32 %0, ptr %1) {
_llgo_0:
store i32 %0, ptr @__llgo_argc, align 4
store ptr %1, ptr @__llgo_argv, align 8
call void @"github.com/goplus/llgo/internal/runtime.init"()
call void @main.init()
%2 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%3 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %2, i32 0, i32 0
store ptr @0, ptr %3, align 8
%4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %2, i32 0, i32 1
store i64 5, ptr %4, align 4
%5 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %2, align 8
%6 = load ptr, ptr @_llgo_main.T, align 8
%7 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store %"github.com/goplus/llgo/internal/runtime.String" %5, ptr %7, align 8
%8 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %8, i32 0, i32 0
store ptr %6, ptr %9, align 8
%10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %8, i32 0, i32 1
store ptr %7, ptr %10, align 8
%11 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %8, align 8
%12 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %11, 0
%13 = load ptr, ptr @_llgo_main.T, align 8
%14 = icmp eq ptr %12, %13
br i1 %14, label %_llgo_1, label %_llgo_2
_llgo_1: ; preds = %_llgo_0
%15 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %11, 1
%16 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %15, align 8
call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %16)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10)
%17 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %11, 0
%18 = load ptr, ptr @_llgo_string, align 8
%19 = icmp eq ptr %17, %18
br i1 %19, label %_llgo_3, label %_llgo_4
_llgo_2: ; preds = %_llgo_0
%20 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 0
store ptr @3, ptr %21, align 8
%22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 1
store i64 21, ptr %22, align 4
%23 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %20, align 8
%24 = load ptr, ptr @_llgo_string, align 8
%25 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store %"github.com/goplus/llgo/internal/runtime.String" %23, ptr %25, align 8
%26 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %26, i32 0, i32 0
store ptr %24, ptr %27, align 8
%28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %26, i32 0, i32 1
store ptr %25, ptr %28, align 8
%29 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %26, align 8
call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %29)
unreachable
_llgo_3: ; preds = %_llgo_1
%30 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %11, 1
%31 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %30, align 8
%32 = alloca { %"github.com/goplus/llgo/internal/runtime.String", i1 }, align 8
%33 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.String", i1 }, ptr %32, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %31, ptr %33, align 8
%34 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.String", i1 }, ptr %32, i32 0, i32 1
store i1 true, ptr %34, align 1
%35 = load { %"github.com/goplus/llgo/internal/runtime.String", i1 }, ptr %32, align 8
br label %_llgo_5
_llgo_4: ; preds = %_llgo_1
%36 = alloca { %"github.com/goplus/llgo/internal/runtime.String", i1 }, align 8
%37 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.String", i1 }, ptr %36, i32 0, i32 0
store { ptr, i64 } zeroinitializer, ptr %37, align 8
%38 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.String", i1 }, ptr %36, i32 0, i32 1
store i1 false, ptr %38, align 1
%39 = load { %"github.com/goplus/llgo/internal/runtime.String", i1 }, ptr %36, align 8
br label %_llgo_5
_llgo_5: ; preds = %_llgo_4, %_llgo_3
%40 = phi { %"github.com/goplus/llgo/internal/runtime.String", i1 } [ %35, %_llgo_3 ], [ %39, %_llgo_4 ]
%41 = extractvalue { %"github.com/goplus/llgo/internal/runtime.String", i1 } %40, 0
%42 = extractvalue { %"github.com/goplus/llgo/internal/runtime.String", i1 } %40, 1
call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %41)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32)
call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %42)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10)
%43 = alloca [2 x i64], align 8
%44 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %43, i64 16)
%45 = getelementptr inbounds i64, ptr %44, i64 0
%46 = getelementptr inbounds i64, ptr %44, i64 1
store i64 1, ptr %45, align 4
store i64 2, ptr %46, align 4
%47 = load [2 x i64], ptr %44, align 4
%48 = load ptr, ptr @_llgo_main.A, align 8
%49 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store [2 x i64] %47, ptr %49, align 4
%50 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %50, i32 0, i32 0
store ptr %48, ptr %51, align 8
%52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %50, i32 0, i32 1
store ptr %49, ptr %52, align 8
%53 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %50, align 8
%54 = alloca [2 x i64], align 8
%55 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %54, i64 16)
%56 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %53, 0
%57 = load ptr, ptr @_llgo_main.A, align 8
%58 = icmp eq ptr %56, %57
br i1 %58, label %_llgo_6, label %_llgo_7
_llgo_6: ; preds = %_llgo_5
%59 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %53, 1
%60 = load [2 x i64], ptr %59, align 4
%61 = alloca { [2 x i64], i1 }, align 8
%62 = getelementptr inbounds { [2 x i64], i1 }, ptr %61, i32 0, i32 0
store [2 x i64] %60, ptr %62, align 4
%63 = getelementptr inbounds { [2 x i64], i1 }, ptr %61, i32 0, i32 1
store i1 true, ptr %63, align 1
%64 = load { [2 x i64], i1 }, ptr %61, align 4
br label %_llgo_8
_llgo_7: ; preds = %_llgo_5
%65 = alloca { [2 x i64], i1 }, align 8
%66 = getelementptr inbounds { [2 x i64], i1 }, ptr %65, i32 0, i32 0
store [2 x i64] zeroinitializer, ptr %66, align 4
%67 = getelementptr inbounds { [2 x i64], i1 }, ptr %65, i32 0, i32 1
store i1 false, ptr %67, align 1
%68 = load { [2 x i64], i1 }, ptr %65, align 4
br label %_llgo_8
_llgo_8: ; preds = %_llgo_7, %_llgo_6
%69 = phi { [2 x i64], i1 } [ %64, %_llgo_6 ], [ %68, %_llgo_7 ]
%70 = extractvalue { [2 x i64], i1 } %69, 0
store [2 x i64] %70, ptr %55, align 4
%71 = extractvalue { [2 x i64], i1 } %69, 1
%72 = getelementptr inbounds i64, ptr %55, i64 0
%73 = load i64, ptr %72, align 4
%74 = getelementptr inbounds i64, ptr %55, i64 1
%75 = load i64, ptr %74, align 4
call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %73)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32)
call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %75)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32)
call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %71)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10)
ret i32 0
}
declare void @"github.com/goplus/llgo/internal/runtime.init"()
define void @"main.init$after"() {
_llgo_0:
%0 = load ptr, ptr @_llgo_main.T, align 8
%1 = icmp eq ptr %0, null
br i1 %1, label %_llgo_1, label %_llgo_2
_llgo_1: ; preds = %_llgo_0
%2 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 24, i64 0, i64 0)
store ptr %2, ptr @_llgo_main.T, align 8
br label %_llgo_2
_llgo_2: ; preds = %_llgo_1, %_llgo_0
%3 = load ptr, ptr @_llgo_string, align 8
%4 = icmp eq ptr %3, null
br i1 %4, label %_llgo_3, label %_llgo_4
_llgo_3: ; preds = %_llgo_2
%5 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
store ptr %5, ptr @_llgo_string, align 8
br label %_llgo_4
_llgo_4: ; preds = %_llgo_3, %_llgo_2
%6 = load ptr, ptr @_llgo_string, align 8
br i1 %1, label %_llgo_5, label %_llgo_6
_llgo_5: ; preds = %_llgo_4
%7 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%8 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %7, i32 0, i32 0
store ptr @1, ptr %8, align 8
%9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %7, i32 0, i32 1
store i64 4, ptr %9, align 4
%10 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %7, align 8
%11 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %11, i32 0, i32 0
store ptr @2, ptr %12, align 8
%13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %11, i32 0, i32 1
store i64 1, ptr %13, align 4
%14 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %11, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %2, %"github.com/goplus/llgo/internal/runtime.String" %10, %"github.com/goplus/llgo/internal/runtime.String" %14, ptr %6, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
br label %_llgo_6
_llgo_6: ; preds = %_llgo_5, %_llgo_4
%15 = load ptr, ptr @_llgo_main.A, align 8
%16 = icmp eq ptr %15, null
br i1 %16, label %_llgo_7, label %_llgo_8
_llgo_7: ; preds = %_llgo_6
%17 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 17, i64 0, i64 0)
store ptr %17, ptr @_llgo_main.A, align 8
br label %_llgo_8
_llgo_8: ; preds = %_llgo_7, %_llgo_6
%18 = load ptr, ptr @_llgo_int, align 8
%19 = icmp eq ptr %18, null
br i1 %19, label %_llgo_9, label %_llgo_10
_llgo_9: ; preds = %_llgo_8
%20 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
store ptr %20, ptr @_llgo_int, align 8
br label %_llgo_10
_llgo_10: ; preds = %_llgo_9, %_llgo_8
%21 = load ptr, ptr @_llgo_int, align 8
%22 = load ptr, ptr @"[2]_llgo_int", align 8
%23 = icmp eq ptr %22, null
br i1 %23, label %_llgo_11, label %_llgo_12
_llgo_11: ; preds = %_llgo_10
%24 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34)
%25 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 2, ptr %24)
store ptr %25, ptr @"[2]_llgo_int", align 8
br label %_llgo_12
_llgo_12: ; preds = %_llgo_11, %_llgo_10
%26 = load ptr, ptr @"[2]_llgo_int", align 8
br i1 %16, label %_llgo_13, label %_llgo_14
_llgo_13: ; preds = %_llgo_12
%27 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %27, i32 0, i32 0
store ptr @1, ptr %28, align 8
%29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %27, i32 0, i32 1
store i64 4, ptr %29, align 4
%30 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %27, align 8
%31 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %31, i32 0, i32 0
store ptr @4, ptr %32, align 8
%33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %31, i32 0, i32 1
store i64 1, ptr %33, align 4
%34 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %31, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %17, %"github.com/goplus/llgo/internal/runtime.String" %30, %"github.com/goplus/llgo/internal/runtime.String" %34, ptr %26, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
br label %_llgo_14
_llgo_14: ; preds = %_llgo_13, %_llgo_12
ret void
}
declare ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64, i64, i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(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 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")
declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String")
declare void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8)
declare void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1)
declare ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr, i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64, ptr)
declare void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64)