ssa: fix abiType && abiMethoOf

This commit is contained in:
visualfc
2024-06-23 06:51:09 +08:00
parent 5238c2457d
commit 16352df5b1
17 changed files with 3064 additions and 4409 deletions

View File

@@ -4,10 +4,10 @@ source_filename = "main"
%main.T = type { %"github.com/goplus/llgo/internal/runtime.String" }
%"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 }
%"github.com/goplus/llgo/internal/runtime.iface" = 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 }
%"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr }
%"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 }
%"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr }
%"github.com/goplus/llgo/internal/abi.Imethod" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr }
@@ -40,14 +40,11 @@ source_filename = "main"
@11 = private unnamed_addr constant [2 x i8] c"T2", align 1
@"*_llgo_main.T2" = linkonce global ptr null, align 8
@"*_llgo_main.T3" = linkonce global ptr null, align 8
@_llgo_main.T3 = linkonce global ptr null, align 8
@_llgo_int8 = linkonce global ptr null, align 8
@12 = private unnamed_addr constant [2 x i8] c"T3", align 1
@"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI" = linkonce global ptr null, align 8
@13 = private unnamed_addr constant [5 x i8] c"world", align 1
@12 = private unnamed_addr constant [5 x i8] c"world", align 1
@_llgo_main.I = linkonce global ptr null, align 8
@14 = private unnamed_addr constant [6 x i8] c"main.I", align 1
@15 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1
@13 = private unnamed_addr constant [6 x i8] c"main.I", align 1
@14 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1
@_llgo_any = linkonce global ptr null, align 8
define i64 @main.T.Invoke(%main.T %0) {
@@ -223,223 +220,215 @@ _llgo_0:
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %26)
%27 = load i64, ptr %8, align 4
%28 = load ptr, ptr @_llgo_main.T1, align 8
%29 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %28, i32 0, i32 6
%30 = load i8, ptr %29, align 1
%31 = or i8 %30, 32
store i8 %31, ptr %29, align 1
%32 = inttoptr i64 %27 to ptr
%33 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%34 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %33, ptr %28)
%35 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %35, i32 0, i32 0
store ptr %34, ptr %36, align 8
%37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %35, i32 0, i32 1
store ptr %32, ptr %37, align 8
%38 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %35, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %38)
%39 = load ptr, ptr @"*_llgo_main.T1", align 8
%40 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%41 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %40, ptr %39)
%42 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %42, i32 0, i32 0
store ptr %41, ptr %43, align 8
%44 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %42, i32 0, i32 1
store ptr %8, ptr %44, align 8
%45 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %42, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %45)
%46 = load double, ptr %9, align 8
%47 = load ptr, ptr @_llgo_main.T2, align 8
%48 = bitcast double %46 to i64
%49 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %47, i32 0, i32 6
%50 = load i8, ptr %49, align 1
%51 = or i8 %50, 32
store i8 %51, ptr %49, align 1
%52 = inttoptr i64 %48 to ptr
%53 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%54 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %53, ptr %47)
%55 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %55, i32 0, i32 0
store ptr %54, ptr %56, align 8
%57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %55, i32 0, i32 1
store ptr %52, ptr %57, align 8
%58 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %55, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %58)
%59 = load ptr, ptr @"*_llgo_main.T2", align 8
%60 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%61 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %60, ptr %59)
%62 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%63 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %62, i32 0, i32 0
store ptr %61, ptr %63, align 8
%64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %62, i32 0, i32 1
store ptr %9, ptr %64, align 8
%65 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %62, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %65)
%66 = load ptr, ptr @"*_llgo_main.T3", align 8
%67 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%68 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %67, ptr %66)
%69 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%70 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %69, i32 0, i32 0
store ptr %68, ptr %70, align 8
%71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %69, i32 0, i32 1
store ptr %10, ptr %71, align 8
%72 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %69, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %72)
%73 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer)
%74 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%75 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %74, ptr %73)
%76 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %76, i32 0, i32 0
store ptr %75, ptr %77, align 8
%78 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %76, i32 0, i32 1
store ptr null, ptr %78, align 8
%79 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %76, align 8
call void @"github.com/goplus/llgo/internal/runtime.PrintIface"(%"github.com/goplus/llgo/internal/runtime.iface" %79)
%29 = inttoptr i64 %27 to ptr
%30 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%31 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %30, ptr %28)
%32 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %32, i32 0, i32 0
store ptr %31, ptr %33, align 8
%34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %32, i32 0, i32 1
store ptr %29, ptr %34, align 8
%35 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %32, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %35)
%36 = load ptr, ptr @"*_llgo_main.T1", align 8
%37 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%38 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %37, ptr %36)
%39 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%40 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %39, i32 0, i32 0
store ptr %38, ptr %40, align 8
%41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %39, i32 0, i32 1
store ptr %8, ptr %41, align 8
%42 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %39, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %42)
%43 = load double, ptr %9, align 8
%44 = load ptr, ptr @_llgo_main.T2, align 8
%45 = bitcast double %43 to i64
%46 = inttoptr i64 %45 to ptr
%47 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%48 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %47, ptr %44)
%49 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%50 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %49, i32 0, i32 0
store ptr %48, ptr %50, align 8
%51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %49, i32 0, i32 1
store ptr %46, ptr %51, align 8
%52 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %49, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %52)
%53 = load ptr, ptr @"*_llgo_main.T2", align 8
%54 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%55 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %54, ptr %53)
%56 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %56, i32 0, i32 0
store ptr %55, ptr %57, align 8
%58 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %56, i32 0, i32 1
store ptr %9, ptr %58, align 8
%59 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %56, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %59)
%60 = load ptr, ptr @"*_llgo_main.T3", align 8
%61 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%62 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %61, ptr %60)
%63 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %63, i32 0, i32 0
store ptr %62, ptr %64, align 8
%65 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %63, i32 0, i32 1
store ptr %10, ptr %65, align 8
%66 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %63, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %66)
%67 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer)
%68 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%69 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %68, ptr %67)
%70 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %70, i32 0, i32 0
store ptr %69, ptr %71, align 8
%72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %70, i32 0, i32 1
store ptr null, ptr %72, align 8
%73 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %70, align 8
call void @"github.com/goplus/llgo/internal/runtime.PrintIface"(%"github.com/goplus/llgo/internal/runtime.iface" %73)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32)
call void @"github.com/goplus/llgo/internal/runtime.PrintIface"(%"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer)
call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10)
%80 = load ptr, ptr @"*_llgo_main.T", align 8
%81 = load ptr, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8
%82 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %81, ptr %80)
%83 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %83, i32 0, i32 0
store ptr %82, ptr %84, align 8
%85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %83, i32 0, i32 1
store ptr %2, ptr %85, align 8
%86 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %83, align 8
%87 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %86)
%88 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %86, 1
%89 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%90 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %89, ptr %87)
%91 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%92 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %91, i32 0, i32 0
store ptr %90, ptr %92, align 8
%93 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %91, i32 0, i32 1
store ptr %88, ptr %93, align 8
%94 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %91, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %94)
%95 = alloca %main.T, align 8
%96 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %95, i64 16)
%97 = getelementptr inbounds %main.T, ptr %96, i32 0, i32 0
%98 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%99 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %98, i32 0, i32 0
store ptr @13, ptr %99, align 8
%100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %98, i32 0, i32 1
store i64 5, ptr %100, align 4
%101 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %98, align 8
store %"github.com/goplus/llgo/internal/runtime.String" %101, ptr %97, align 8
%102 = load %main.T, ptr %96, align 8
%103 = load ptr, ptr @_llgo_main.T, align 8
%104 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store %main.T %102, ptr %104, align 8
%105 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%106 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %105, i32 0, i32 0
store ptr %103, ptr %106, align 8
%107 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %105, i32 0, i32 1
store ptr %104, ptr %107, align 8
%108 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %105, align 8
%109 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %108, 0
%110 = load ptr, ptr @_llgo_main.I, align 8
%111 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %110, ptr %109)
br i1 %111, label %_llgo_1, label %_llgo_2
%74 = load ptr, ptr @"*_llgo_main.T", align 8
%75 = load ptr, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8
%76 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %75, ptr %74)
%77 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%78 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %77, i32 0, i32 0
store ptr %76, ptr %78, align 8
%79 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %77, i32 0, i32 1
store ptr %2, ptr %79, align 8
%80 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %77, align 8
%81 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %80)
%82 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %80, 1
%83 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%84 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %83, ptr %81)
%85 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%86 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %85, i32 0, i32 0
store ptr %84, ptr %86, align 8
%87 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %85, i32 0, i32 1
store ptr %82, ptr %87, align 8
%88 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %85, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %88)
%89 = alloca %main.T, align 8
%90 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %89, i64 16)
%91 = getelementptr inbounds %main.T, ptr %90, i32 0, i32 0
%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 @12, ptr %93, align 8
%94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %92, i32 0, i32 1
store i64 5, ptr %94, align 4
%95 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %92, align 8
store %"github.com/goplus/llgo/internal/runtime.String" %95, ptr %91, align 8
%96 = load %main.T, ptr %90, align 8
%97 = load ptr, ptr @_llgo_main.T, align 8
%98 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store %main.T %96, ptr %98, align 8
%99 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %99, i32 0, i32 0
store ptr %97, ptr %100, align 8
%101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %99, i32 0, i32 1
store ptr %98, ptr %101, align 8
%102 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %99, align 8
%103 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %102, 0
%104 = load ptr, ptr @_llgo_main.I, align 8
%105 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %104, ptr %103)
br i1 %105, label %_llgo_1, label %_llgo_2
_llgo_1: ; preds = %_llgo_0
%112 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %108, 1
%113 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%114 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %113, ptr %109)
%115 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%116 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %115, i32 0, i32 0
store ptr %114, ptr %116, align 8
%117 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %115, i32 0, i32 1
store ptr %112, ptr %117, align 8
%118 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %115, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %118)
%119 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %108, 0
%120 = load ptr, ptr @_llgo_any, align 8
%121 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %120, ptr %119)
br i1 %121, label %_llgo_3, label %_llgo_4
%106 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %102, 1
%107 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%108 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %107, ptr %103)
%109 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%110 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %109, i32 0, i32 0
store ptr %108, ptr %110, align 8
%111 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %109, i32 0, i32 1
store ptr %106, ptr %111, align 8
%112 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %109, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %112)
%113 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %102, 0
%114 = load ptr, ptr @_llgo_any, align 8
%115 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %114, ptr %113)
br i1 %115, label %_llgo_3, label %_llgo_4
_llgo_2: ; preds = %_llgo_0
%122 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%123 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %122, i32 0, i32 0
store ptr @15, ptr %123, align 8
%124 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %122, i32 0, i32 1
store i64 21, ptr %124, align 4
%125 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %122, align 8
%126 = load ptr, ptr @_llgo_string, align 8
%127 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store %"github.com/goplus/llgo/internal/runtime.String" %125, ptr %127, align 8
%128 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %128, i32 0, i32 0
store ptr %126, ptr %129, align 8
%130 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %128, i32 0, i32 1
store ptr %127, ptr %130, align 8
%131 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %128, align 8
call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %131)
%116 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%117 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %116, i32 0, i32 0
store ptr @14, ptr %117, align 8
%118 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %116, i32 0, i32 1
store i64 21, ptr %118, align 4
%119 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %116, align 8
%120 = load ptr, ptr @_llgo_string, align 8
%121 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store %"github.com/goplus/llgo/internal/runtime.String" %119, ptr %121, align 8
%122 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%123 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %122, i32 0, i32 0
store ptr %120, ptr %123, align 8
%124 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %122, i32 0, i32 1
store ptr %121, ptr %124, align 8
%125 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %122, align 8
call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %125)
unreachable
_llgo_3: ; preds = %_llgo_1
%132 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %108, 1
%133 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %133, i32 0, i32 0
store ptr %119, ptr %134, align 8
%135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %133, i32 0, i32 1
store ptr %132, ptr %135, align 8
%136 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %133, align 8
%137 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %136, 0
%138 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%139 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %138, ptr %137)
br i1 %139, label %_llgo_5, label %_llgo_6
%126 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %102, 1
%127 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%128 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %127, i32 0, i32 0
store ptr %113, ptr %128, align 8
%129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %127, i32 0, i32 1
store ptr %126, ptr %129, align 8
%130 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %127, align 8
%131 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %130, 0
%132 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%133 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %132, ptr %131)
br i1 %133, label %_llgo_5, label %_llgo_6
_llgo_4: ; preds = %_llgo_1
%140 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%141 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %140, i32 0, i32 0
store ptr @15, ptr %141, align 8
%142 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %140, i32 0, i32 1
store i64 21, ptr %142, align 4
%143 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %140, align 8
%144 = load ptr, ptr @_llgo_string, align 8
%145 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store %"github.com/goplus/llgo/internal/runtime.String" %143, ptr %145, align 8
%146 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%147 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %146, i32 0, i32 0
store ptr %144, ptr %147, align 8
%148 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %146, i32 0, i32 1
store ptr %145, ptr %148, align 8
%149 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %146, align 8
call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %149)
%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 @14, ptr %135, align 8
%136 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %134, i32 0, i32 1
store i64 21, ptr %136, align 4
%137 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %134, align 8
%138 = load ptr, ptr @_llgo_string, align 8
%139 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store %"github.com/goplus/llgo/internal/runtime.String" %137, ptr %139, align 8
%140 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%141 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %140, i32 0, i32 0
store ptr %138, ptr %141, align 8
%142 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %140, i32 0, i32 1
store ptr %139, ptr %142, align 8
%143 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %140, align 8
call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %143)
unreachable
_llgo_5: ; preds = %_llgo_3
%150 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %136, 1
%151 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%152 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %151, ptr %137)
%153 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%154 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %153, i32 0, i32 0
store ptr %152, ptr %154, align 8
%155 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %153, i32 0, i32 1
store ptr %150, ptr %155, align 8
%156 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %153, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %156)
%144 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %130, 1
%145 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8
%146 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %145, ptr %131)
%147 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8
%148 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %147, i32 0, i32 0
store ptr %146, ptr %148, align 8
%149 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %147, i32 0, i32 1
store ptr %144, ptr %149, align 8
%150 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %147, align 8
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %150)
call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer)
ret i32 0
_llgo_6: ; preds = %_llgo_3
%157 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%158 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %157, i32 0, i32 0
store ptr @15, ptr %158, align 8
%159 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %157, i32 0, i32 1
store i64 21, ptr %159, align 4
%160 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %157, align 8
%161 = load ptr, ptr @_llgo_string, align 8
%162 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store %"github.com/goplus/llgo/internal/runtime.String" %160, ptr %162, align 8
%163 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%164 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %163, i32 0, i32 0
store ptr %161, ptr %164, align 8
%165 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %163, i32 0, i32 1
store ptr %162, ptr %165, align 8
%166 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %163, align 8
call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %166)
%151 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%152 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %151, i32 0, i32 0
store ptr @14, ptr %152, align 8
%153 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %151, i32 0, i32 1
store i64 21, ptr %153, align 4
%154 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %151, align 8
%155 = load ptr, ptr @_llgo_string, align 8
%156 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
store %"github.com/goplus/llgo/internal/runtime.String" %154, ptr %156, align 8
%157 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8
%158 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %157, i32 0, i32 0
store ptr %155, ptr %158, align 8
%159 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %157, i32 0, i32 1
store ptr %156, ptr %159, align 8
%160 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %157, align 8
call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %160)
unreachable
}
@@ -721,13 +710,13 @@ _llgo_13: ; preds = %_llgo_6
br label %_llgo_14
_llgo_14: ; preds = %_llgo_13, %_llgo_6
%145 = load ptr, ptr @_llgo_main.T, align 8
%146 = load ptr, ptr @"*_llgo_main.T", align 8
%147 = icmp eq ptr %146, null
br i1 %147, label %_llgo_15, label %_llgo_16
%145 = load ptr, ptr @"*_llgo_main.T", align 8
%146 = icmp eq ptr %145, null
br i1 %146, label %_llgo_15, label %_llgo_16
_llgo_15: ; preds = %_llgo_14
%148 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %145)
%147 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 1, i64 2)
%148 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %147)
store ptr %148, ptr @"*_llgo_main.T", align 8
br label %_llgo_16
@@ -815,13 +804,13 @@ _llgo_19: ; preds = %_llgo_18
br label %_llgo_20
_llgo_20: ; preds = %_llgo_19, %_llgo_18
%195 = load ptr, ptr @_llgo_main.T1, align 8
%196 = load ptr, ptr @"*_llgo_main.T1", align 8
%197 = icmp eq ptr %196, null
br i1 %197, label %_llgo_21, label %_llgo_22
%195 = load ptr, ptr @"*_llgo_main.T1", align 8
%196 = icmp eq ptr %195, null
br i1 %196, label %_llgo_21, label %_llgo_22
_llgo_21: ; preds = %_llgo_20
%198 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %195)
%197 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 2, i64 1, i64 1)
%198 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %197)
store ptr %198, ptr @"*_llgo_main.T1", align 8
br label %_llgo_22
@@ -923,242 +912,166 @@ _llgo_27: ; preds = %_llgo_26
br label %_llgo_28
_llgo_28: ; preds = %_llgo_27, %_llgo_26
%251 = load ptr, ptr @_llgo_main.T2, align 8
%252 = load ptr, ptr @"*_llgo_main.T2", align 8
%253 = icmp eq ptr %252, null
br i1 %253, label %_llgo_29, label %_llgo_30
%251 = load ptr, ptr @"*_llgo_main.T2", align 8
%252 = icmp eq ptr %251, null
br i1 %252, label %_llgo_29, label %_llgo_30
_llgo_29: ; preds = %_llgo_28
%254 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %251)
%253 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 14, i64 1, i64 1)
%254 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %253)
store ptr %254, ptr @"*_llgo_main.T2", align 8
br label %_llgo_30
_llgo_30: ; preds = %_llgo_29, %_llgo_28
%255 = load ptr, ptr @_llgo_main.T3, align 8
%255 = load ptr, ptr @"*_llgo_main.T3", align 8
%256 = icmp eq ptr %255, null
br i1 %256, label %_llgo_31, label %_llgo_32
_llgo_31: ; preds = %_llgo_30
%257 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 3, i64 0, i64 1)
%258 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %257, i32 0, i32 6
%259 = load i8, ptr %258, align 1
%260 = or i8 %259, 32
store i8 %260, ptr %258, align 1
store ptr %257, ptr @_llgo_main.T3, align 8
%258 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %257)
store ptr %258, ptr @"*_llgo_main.T3", align 8
br label %_llgo_32
_llgo_32: ; preds = %_llgo_31, %_llgo_30
%261 = load ptr, ptr @_llgo_int8, align 8
%259 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%260 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%261 = load ptr, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8
%262 = icmp eq ptr %261, null
br i1 %262, label %_llgo_33, label %_llgo_34
_llgo_33: ; preds = %_llgo_32
%263 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
%264 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %263, i32 0, i32 6
%265 = load i8, ptr %264, align 1
%266 = or i8 %265, 32
store i8 %266, ptr %264, align 1
store ptr %263, ptr @_llgo_int8, align 8
%263 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%264 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %263, i32 0, i32 0
store ptr @7, ptr %264, align 8
%265 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %263, i32 0, i32 1
store i64 6, ptr %265, align 4
%266 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %263, align 8
%267 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%268 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %267, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %266, ptr %268, align 8
%269 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %267, i32 0, i32 1
store ptr %259, ptr %269, align 8
%270 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %267, align 8
%271 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%272 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %271, i32 0, i32 0
store ptr @8, ptr %272, align 8
%273 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %271, i32 0, i32 1
store i64 6, ptr %273, align 4
%274 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %271, align 8
%275 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%276 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %275, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %274, ptr %276, align 8
%277 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %275, i32 0, i32 1
store ptr %260, ptr %277, align 8
%278 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %275, align 8
%279 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48)
%280 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %279, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %270, ptr %280, align 8
%281 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %279, i64 1
store %"github.com/goplus/llgo/internal/abi.Imethod" %278, 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 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%288 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %287, i32 0, i32 0
store ptr @6, ptr %288, align 8
%289 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %287, i32 0, i32 1
store i64 4, ptr %289, align 4
%290 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %287, align 8
%291 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%292 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %291, i32 0, i32 0
store ptr null, ptr %292, align 8
%293 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %291, i32 0, i32 1
store i64 0, ptr %293, align 4
%294 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %291, align 8
%295 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %290, %"github.com/goplus/llgo/internal/runtime.String" %294, %"github.com/goplus/llgo/internal/runtime.Slice" %286)
store ptr %295, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8
br label %_llgo_34
_llgo_34: ; preds = %_llgo_33, %_llgo_32
%267 = load ptr, ptr @_llgo_int8, align 8
br i1 %256, label %_llgo_35, label %_llgo_36
%296 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%297 = load ptr, ptr @_llgo_main.I, align 8
%298 = icmp eq ptr %297, null
br i1 %298, label %_llgo_35, label %_llgo_36
_llgo_35: ; preds = %_llgo_34
%268 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%269 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %268, i32 0, i32 0
store ptr @7, ptr %269, align 8
%270 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %268, i32 0, i32 1
store i64 6, ptr %270, align 4
%271 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %268, align 8
%272 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%273 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%274 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %271, ptr %274, align 8
%275 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 1
store ptr %272, ptr %275, align 8
%276 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 2
store ptr @"main.(*T3).Invoke", ptr %276, align 8
%277 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 3
store ptr @"main.(*T3).Invoke", ptr %277, align 8
%278 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %273, align 8
%279 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%280 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %279, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %278, ptr %280, align 8
%281 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%282 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %281, i32 0, i32 0
store ptr %279, ptr %282, align 8
%283 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %281, i32 0, i32 1
store i64 1, ptr %283, align 4
%284 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %281, i32 0, i32 2
store i64 1, ptr %284, align 4
%285 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %281, align 8
%286 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%287 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %286, i32 0, i32 0
store ptr @6, ptr %287, align 8
%288 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %286, i32 0, i32 1
store i64 4, ptr %288, align 4
%289 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %286, align 8
%290 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%291 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %290, i32 0, i32 0
store ptr @12, ptr %291, align 8
%292 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %290, i32 0, i32 1
store i64 2, ptr %292, align 4
%293 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %290, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %257, %"github.com/goplus/llgo/internal/runtime.String" %289, %"github.com/goplus/llgo/internal/runtime.String" %293, ptr %267, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %285)
%299 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%300 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %299, i32 0, i32 0
store ptr @7, ptr %300, align 8
%301 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %299, i32 0, i32 1
store i64 6, ptr %301, align 4
%302 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %299, align 8
%303 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%304 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %303, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %302, ptr %304, align 8
%305 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %303, i32 0, i32 1
store ptr %296, ptr %305, align 8
%306 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %303, align 8
%307 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24)
%308 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %307, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %306, ptr %308, align 8
%309 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%310 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %309, i32 0, i32 0
store ptr %307, ptr %310, align 8
%311 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %309, i32 0, i32 1
store i64 1, ptr %311, align 4
%312 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %309, i32 0, i32 2
store i64 1, ptr %312, align 4
%313 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %309, align 8
%314 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%315 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %314, i32 0, i32 0
store ptr @6, ptr %315, align 8
%316 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %314, i32 0, i32 1
store i64 4, ptr %316, align 4
%317 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %314, align 8
%318 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%319 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %318, i32 0, i32 0
store ptr @13, ptr %319, align 8
%320 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %318, i32 0, i32 1
store i64 6, ptr %320, align 4
%321 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %318, align 8
%322 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %317, %"github.com/goplus/llgo/internal/runtime.String" %321, %"github.com/goplus/llgo/internal/runtime.Slice" %313)
store ptr %322, ptr @_llgo_main.I, align 8
br label %_llgo_36
_llgo_36: ; preds = %_llgo_35, %_llgo_34
%294 = load ptr, ptr @_llgo_main.T3, align 8
%295 = load ptr, ptr @"*_llgo_main.T3", align 8
%296 = icmp eq ptr %295, null
br i1 %296, label %_llgo_37, label %_llgo_38
%323 = load ptr, ptr @_llgo_any, align 8
%324 = icmp eq ptr %323, null
br i1 %324, label %_llgo_37, label %_llgo_38
_llgo_37: ; preds = %_llgo_36
%297 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %294)
store ptr %297, ptr @"*_llgo_main.T3", align 8
%325 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%326 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%327 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, i32 0, i32 0
store ptr %325, ptr %327, align 8
%328 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, i32 0, i32 1
store i64 0, ptr %328, align 4
%329 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, i32 0, i32 2
store i64 0, ptr %329, align 4
%330 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, align 8
%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 @6, 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 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%336 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %335, i32 0, i32 0
store ptr null, ptr %336, align 8
%337 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %335, i32 0, i32 1
store i64 0, ptr %337, align 4
%338 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %335, align 8
%339 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %334, %"github.com/goplus/llgo/internal/runtime.String" %338, %"github.com/goplus/llgo/internal/runtime.Slice" %330)
store ptr %339, ptr @_llgo_any, align 8
br label %_llgo_38
_llgo_38: ; preds = %_llgo_37, %_llgo_36
%298 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%299 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%300 = load ptr, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8
%301 = icmp eq ptr %300, null
br i1 %301, label %_llgo_39, label %_llgo_40
_llgo_39: ; preds = %_llgo_38
%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 @7, ptr %303, align 8
%304 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %302, i32 0, i32 1
store i64 6, ptr %304, align 4
%305 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %302, align 8
%306 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%307 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %306, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %305, ptr %307, align 8
%308 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %306, i32 0, i32 1
store ptr %298, ptr %308, align 8
%309 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %306, align 8
%310 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%311 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %310, i32 0, i32 0
store ptr @8, ptr %311, align 8
%312 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %310, i32 0, i32 1
store i64 6, ptr %312, align 4
%313 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %310, align 8
%314 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%315 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %314, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %313, ptr %315, align 8
%316 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %314, i32 0, i32 1
store ptr %299, ptr %316, align 8
%317 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %314, align 8
%318 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48)
%319 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %318, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %309, ptr %319, align 8
%320 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %318, i64 1
store %"github.com/goplus/llgo/internal/abi.Imethod" %317, ptr %320, align 8
%321 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%322 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %321, i32 0, i32 0
store ptr %318, ptr %322, align 8
%323 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %321, i32 0, i32 1
store i64 2, ptr %323, align 4
%324 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %321, i32 0, i32 2
store i64 2, ptr %324, align 4
%325 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %321, 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 @6, ptr %327, align 8
%328 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %326, i32 0, i32 1
store i64 4, ptr %328, align 4
%329 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %326, align 8
%330 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%331 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %330, i32 0, i32 0
store ptr null, ptr %331, align 8
%332 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %330, i32 0, i32 1
store i64 0, ptr %332, align 4
%333 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %330, align 8
%334 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %329, %"github.com/goplus/llgo/internal/runtime.String" %333, %"github.com/goplus/llgo/internal/runtime.Slice" %325)
store ptr %334, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8
br label %_llgo_40
_llgo_40: ; preds = %_llgo_39, %_llgo_38
%335 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%336 = load ptr, ptr @_llgo_main.I, align 8
%337 = icmp eq ptr %336, null
br i1 %337, label %_llgo_41, label %_llgo_42
_llgo_41: ; preds = %_llgo_40
%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 @7, ptr %339, align 8
%340 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %338, i32 0, i32 1
store i64 6, ptr %340, align 4
%341 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %338, align 8
%342 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%343 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %342, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %341, ptr %343, align 8
%344 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %342, i32 0, i32 1
store ptr %335, ptr %344, align 8
%345 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %342, align 8
%346 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24)
%347 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %346, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %345, ptr %347, align 8
%348 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%349 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %348, i32 0, i32 0
store ptr %346, ptr %349, align 8
%350 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %348, i32 0, i32 1
store i64 1, ptr %350, align 4
%351 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %348, i32 0, i32 2
store i64 1, ptr %351, align 4
%352 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %348, 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 @6, ptr %354, align 8
%355 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %353, i32 0, i32 1
store i64 4, 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 @14, ptr %358, align 8
%359 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %357, i32 0, i32 1
store i64 6, 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.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %356, %"github.com/goplus/llgo/internal/runtime.String" %360, %"github.com/goplus/llgo/internal/runtime.Slice" %352)
store ptr %361, ptr @_llgo_main.I, align 8
br label %_llgo_42
_llgo_42: ; preds = %_llgo_41, %_llgo_40
%362 = load ptr, ptr @_llgo_any, align 8
%363 = icmp eq ptr %362, null
br i1 %363, label %_llgo_43, label %_llgo_44
_llgo_43: ; preds = %_llgo_42
%364 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%365 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%366 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %365, i32 0, i32 0
store ptr %364, ptr %366, align 8
%367 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %365, i32 0, i32 1
store i64 0, ptr %367, align 4
%368 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %365, i32 0, i32 2
store i64 0, ptr %368, align 4
%369 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %365, align 8
%370 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%371 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %370, i32 0, i32 0
store ptr @6, ptr %371, align 8
%372 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %370, i32 0, i32 1
store i64 4, ptr %372, align 4
%373 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %370, align 8
%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 null, ptr %375, align 8
%376 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %374, i32 0, i32 1
store i64 0, ptr %376, align 4
%377 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %374, align 8
%378 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %373, %"github.com/goplus/llgo/internal/runtime.String" %377, %"github.com/goplus/llgo/internal/runtime.Slice" %369)
store ptr %378, ptr @_llgo_any, align 8
br label %_llgo_44
_llgo_44: ; preds = %_llgo_43, %_llgo_42
ret void
}