ssa: fix abiType & abiNamedOf

This commit is contained in:
visualfc
2024-06-25 12:11:51 +08:00
parent f41511047e
commit ef3619350d
10 changed files with 7115 additions and 885 deletions

View File

@@ -4,19 +4,25 @@ source_filename = "main"
%"github.com/goplus/llgo/internal/runtime.iface" = type { ptr, ptr }
%"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 }
%main.errorString = type { %"github.com/goplus/llgo/internal/runtime.String" }
%"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.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 }
@"main.init$guard" = global i1 false, align 1
@_llgo_main.errorString = global ptr null, align 8
@"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null, align 8
@_llgo_string = linkonce global ptr null, align 8
@0 = private unnamed_addr constant [1 x i8] c"s", align 1
@1 = private unnamed_addr constant [4 x i8] c"main", align 1
@2 = private unnamed_addr constant [5 x i8] c"Error", align 1
@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null, align 8
@3 = private unnamed_addr constant [11 x i8] c"errorString", align 1
@"*_llgo_main.errorString" = global ptr null, align 8
@"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null, align 8
@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null, align 8
@_llgo_string = linkonce global ptr null, align 8
@0 = private unnamed_addr constant [5 x i8] c"Error", align 1
@1 = private unnamed_addr constant [4 x i8] c"main", align 1
@__llgo_argc = global i32 0, align 4
@__llgo_argv = global ptr null, align 8
@2 = private unnamed_addr constant [8 x i8] c"an error", align 1
@4 = private unnamed_addr constant [8 x i8] c"an error", align 1
define %"github.com/goplus/llgo/internal/runtime.iface" @main.New(%"github.com/goplus/llgo/internal/runtime.String" %0) {
_llgo_0:
@@ -64,7 +70,7 @@ _llgo_0:
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 @2, ptr %3, align 8
store ptr @4, ptr %3, align 8
%4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %2, i32 0, i32 1
store i64 8, ptr %4, align 4
%5 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %2, align 8
@@ -94,108 +100,190 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64)
define void @"main.init$after"() {
_llgo_0:
%0 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 1)
%1 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %0)
store ptr %1, ptr @"*_llgo_main.errorString", align 8
%2 = load ptr, ptr @_llgo_string, align 8
%3 = icmp eq ptr %2, null
br i1 %3, label %_llgo_1, label %_llgo_2
store ptr %0, ptr @_llgo_main.errorString, align 8
%1 = load ptr, ptr @_llgo_string, align 8
%2 = icmp eq ptr %1, null
br i1 %2, label %_llgo_1, label %_llgo_2
_llgo_1: ; preds = %_llgo_0
%4 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
store ptr %4, ptr @_llgo_string, align 8
%3 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
store ptr %3, ptr @_llgo_string, align 8
br label %_llgo_2
_llgo_2: ; preds = %_llgo_1, %_llgo_0
%5 = load ptr, ptr @_llgo_string, align 8
%6 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
%7 = icmp eq ptr %6, null
br i1 %7, label %_llgo_3, label %_llgo_4
%4 = load ptr, ptr @_llgo_string, align 8
%5 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %5, i32 0, i32 0
store ptr @0, ptr %6, align 8
%7 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %5, i32 0, i32 1
store i64 1, ptr %7, align 4
%8 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %5, align 8
%9 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %9, i32 0, i32 0
store ptr null, ptr %10, align 8
%11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %9, i32 0, i32 1
store i64 0, ptr %11, align 4
%12 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %9, align 8
%13 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %8, ptr %4, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %12, i1 false)
%14 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %14, i32 0, i32 0
store ptr @1, ptr %15, align 8
%16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %14, i32 0, i32 1
store i64 4, ptr %16, align 4
%17 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %14, align 8
%18 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56)
%19 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %18, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %13, ptr %19, align 8
%20 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %20, i32 0, i32 0
store ptr %18, ptr %21, align 8
%22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %20, i32 0, i32 1
store i64 1, ptr %22, align 4
%23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %20, i32 0, i32 2
store i64 1, ptr %23, align 4
%24 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %20, align 8
%25 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %17, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %24)
store ptr %25, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8
%26 = load ptr, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8
%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 @2, ptr %28, align 8
%29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %27, i32 0, i32 1
store i64 5, ptr %29, align 4
%30 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %27, align 8
%31 = load ptr, ptr @_llgo_string, align 8
%32 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
%33 = icmp eq ptr %32, null
br i1 %33, label %_llgo_3, label %_llgo_4
_llgo_3: ; preds = %_llgo_2
%8 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%9 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %9, i32 0, i32 0
store ptr %8, ptr %10, align 8
%11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %9, i32 0, i32 1
store i64 0, ptr %11, align 4
%12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %9, i32 0, i32 2
store i64 0, ptr %12, align 4
%13 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %9, align 8
%14 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8)
%15 = getelementptr ptr, ptr %14, i64 0
store ptr %5, ptr %15, align 8
%16 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %16, i32 0, i32 0
store ptr %14, ptr %17, align 8
%18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %16, i32 0, i32 1
store i64 1, ptr %18, align 4
%19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %16, i32 0, i32 2
store i64 1, ptr %19, align 4
%20 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %16, align 8
%21 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %13, %"github.com/goplus/llgo/internal/runtime.Slice" %20, i1 false)
store ptr %21, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
%34 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%35 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 0
store ptr %34, ptr %36, align 8
%37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 1
store i64 0, ptr %37, align 4
%38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 2
store i64 0, ptr %38, align 4
%39 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, align 8
%40 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8)
%41 = getelementptr ptr, ptr %40, i64 0
store ptr %31, ptr %41, align 8
%42 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, i32 0, i32 0
store ptr %40, ptr %43, align 8
%44 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, i32 0, i32 1
store i64 1, ptr %44, align 4
%45 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, i32 0, i32 2
store i64 1, ptr %45, align 4
%46 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, align 8
%47 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %39, %"github.com/goplus/llgo/internal/runtime.Slice" %46, i1 false)
store ptr %47, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
br label %_llgo_4
_llgo_4: ; preds = %_llgo_3, %_llgo_2
%22 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
%23 = load ptr, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8
%24 = icmp eq ptr %23, null
br i1 %24, label %_llgo_5, label %_llgo_6
%48 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
%49 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%50 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %49, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %30, ptr %50, align 8
%51 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %49, i32 0, i32 1
store ptr %48, ptr %51, align 8
%52 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %49, i32 0, i32 2
store ptr @"main.(*errorString).Error", ptr %52, align 8
%53 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %49, i32 0, i32 3
store ptr @"main.(*errorString).Error", ptr %53, align 8
%54 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %49, align 8
%55 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%56 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %55, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %54, ptr %56, align 8
%57 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%58 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %57, i32 0, i32 0
store ptr %55, ptr %58, align 8
%59 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %57, i32 0, i32 1
store i64 1, ptr %59, align 4
%60 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %57, i32 0, i32 2
store i64 1, ptr %60, align 4
%61 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %57, align 8
%62 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%63 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %62, i32 0, i32 0
store ptr @1, ptr %63, align 8
%64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %62, i32 0, i32 1
store i64 4, ptr %64, align 4
%65 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %62, align 8
%66 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%67 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 0
store ptr @3, ptr %67, align 8
%68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 1
store i64 11, ptr %68, align 4
%69 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %66, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %0, %"github.com/goplus/llgo/internal/runtime.String" %65, %"github.com/goplus/llgo/internal/runtime.String" %69, ptr %26, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %61)
%70 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %0)
store ptr %70, ptr @"*_llgo_main.errorString", align 8
%71 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
%72 = load ptr, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8
%73 = icmp eq ptr %72, null
br i1 %73, label %_llgo_5, label %_llgo_6
_llgo_5: ; preds = %_llgo_4
%25 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %25, i32 0, i32 0
store ptr @0, ptr %26, align 8
%27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %25, i32 0, i32 1
store i64 5, ptr %27, align 4
%28 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %25, align 8
%29 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%30 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %29, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %28, ptr %30, align 8
%31 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %29, i32 0, i32 1
store ptr %22, ptr %31, align 8
%32 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %29, align 8
%33 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24)
%34 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %33, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %32, ptr %34, align 8
%35 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 0
store ptr %33, ptr %36, align 8
%37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 1
store i64 1, ptr %37, align 4
%38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 2
store i64 1, ptr %38, align 4
%39 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, align 8
%40 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %40, i32 0, i32 0
store ptr @1, ptr %41, align 8
%42 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %40, i32 0, i32 1
store i64 4, ptr %42, align 4
%43 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %40, align 8
%44 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%45 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %44, i32 0, i32 0
store ptr null, ptr %45, align 8
%46 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %44, i32 0, i32 1
store i64 0, ptr %46, align 4
%47 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %44, align 8
%48 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %43, %"github.com/goplus/llgo/internal/runtime.String" %47, %"github.com/goplus/llgo/internal/runtime.Slice" %39)
store ptr %48, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8
%74 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%75 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %74, i32 0, i32 0
store ptr @2, ptr %75, align 8
%76 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %74, i32 0, i32 1
store i64 5, ptr %76, align 4
%77 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %74, align 8
%78 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%79 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %78, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %77, ptr %79, align 8
%80 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %78, i32 0, i32 1
store ptr %71, ptr %80, align 8
%81 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %78, align 8
%82 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24)
%83 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %82, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %81, ptr %83, align 8
%84 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %84, i32 0, i32 0
store ptr %82, ptr %85, align 8
%86 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %84, i32 0, i32 1
store i64 1, ptr %86, align 4
%87 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %84, i32 0, i32 2
store i64 1, ptr %87, align 4
%88 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %84, align 8
%89 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%90 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %89, i32 0, i32 0
store ptr @1, ptr %90, align 8
%91 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %89, i32 0, i32 1
store i64 4, ptr %91, align 4
%92 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %89, align 8
%93 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %93, i32 0, i32 0
store ptr null, ptr %94, align 8
%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.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %92, %"github.com/goplus/llgo/internal/runtime.String" %96, %"github.com/goplus/llgo/internal/runtime.Slice" %88)
store ptr %97, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8
br label %_llgo_6
_llgo_6: ; preds = %_llgo_5, %_llgo_4
ret void
}
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64, i64, i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(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 ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String", i64, %"github.com/goplus/llgo/internal/runtime.Slice")
declare %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1)
declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64)
declare void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr, %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", ptr, %"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice")
declare ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice", i1)
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice")
declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr)

View File

@@ -6,23 +6,36 @@ source_filename = "main"
%"github.com/goplus/llgo/internal/runtime.iface" = type { ptr, ptr }
%"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 }
%"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 }
%"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, 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/abi.Imethod" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr }
@"main.init$guard" = global i1 false, align 1
@__llgo_argc = global i32 0, align 4
@__llgo_argv = global ptr null, align 8
@_llgo_main.Game1 = linkonce global ptr null, align 8
@"_llgo_struct$cJmCzeVn0orHWafCrTGAnbbAF46F2A4Fms4bJBm8ITI" = linkonce global ptr null, align 8
@"_llgo_github.com/goplus/llgo/cl/internal/foo.Game" = linkonce global ptr null, align 8
@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null, align 8
@0 = private unnamed_addr constant [4 x i8] c"main", align 1
@1 = private unnamed_addr constant [4 x i8] c"Load", align 1
@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null, align 8
@2 = private unnamed_addr constant [8 x i8] c"initGame", align 1
@3 = private unnamed_addr constant [47 x i8] c"github.com/goplus/llgo/cl/internal/foo.initGame", align 1
@4 = private unnamed_addr constant [38 x i8] c"github.com/goplus/llgo/cl/internal/foo", align 1
@5 = private unnamed_addr constant [4 x i8] c"Game", align 1
@"*_llgo_github.com/goplus/llgo/cl/internal/foo.Game" = linkonce global ptr null, align 8
@6 = private unnamed_addr constant [5 x i8] c"Game1", align 1
@"*_llgo_main.Game1" = linkonce global ptr null, align 8
@_llgo_main.Game2 = linkonce global ptr null, align 8
@7 = private unnamed_addr constant [13 x i8] c"main.initGame", align 1
@8 = private unnamed_addr constant [5 x i8] c"Game2", align 1
@"*_llgo_main.Game2" = linkonce global ptr null, align 8
@"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer" = linkonce global ptr null, align 8
@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null, align 8
@0 = private unnamed_addr constant [4 x i8] c"Load", align 1
@1 = private unnamed_addr constant [47 x i8] c"github.com/goplus/llgo/cl/internal/foo.initGame", align 1
@2 = private unnamed_addr constant [38 x i8] c"github.com/goplus/llgo/cl/internal/foo", align 1
@3 = private unnamed_addr constant [44 x i8] c"github.com/goplus/llgo/cl/internal/foo.Gamer", align 1
@9 = private unnamed_addr constant [44 x i8] c"github.com/goplus/llgo/cl/internal/foo.Gamer", align 1
@"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg" = global ptr null, align 8
@4 = private unnamed_addr constant [4 x i8] c"main", align 1
@5 = private unnamed_addr constant [2 x i8] c"OK", align 1
@6 = private unnamed_addr constant [4 x i8] c"FAIL", align 1
@10 = private unnamed_addr constant [2 x i8] c"OK", align 1
@11 = private unnamed_addr constant [4 x i8] c"FAIL", align 1
define void @main.Game1.Load(%main.Game1 %0) {
_llgo_0:
@@ -167,7 +180,7 @@ _llgo_5: ; preds = %_llgo_4, %_llgo_3
%49 = extractvalue { %"github.com/goplus/llgo/internal/runtime.iface", i1 } %47, 1
%50 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %50, i32 0, i32 0
store ptr @5, ptr %51, align 8
store ptr @10, ptr %51, align 8
%52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %50, i32 0, i32 1
store i64 2, ptr %52, align 4
%53 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %50, align 8
@@ -212,7 +225,7 @@ _llgo_8: ; preds = %_llgo_7, %_llgo_6
%71 = extractvalue { %"github.com/goplus/llgo/internal/runtime.iface", i1 } %69, 1
%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 @6, ptr %73, align 8
store ptr @11, ptr %73, align 8
%74 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 1
store i64 4, ptr %74, align 4
%75 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %72, align 8
@@ -239,180 +252,515 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64)
define void @"main.init$after"() {
_llgo_0:
%0 = load ptr, ptr @"*_llgo_main.Game1", align 8
%0 = load ptr, ptr @_llgo_main.Game1, 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 25, i64 2, i64 2)
%3 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %2)
store ptr %3, ptr @"*_llgo_main.Game1", align 8
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %2)
store ptr %2, ptr @_llgo_main.Game1, align 8
br label %_llgo_2
_llgo_2: ; preds = %_llgo_1, %_llgo_0
%4 = load ptr, ptr @"*_llgo_main.Game2", align 8
%5 = icmp eq ptr %4, null
br i1 %5, label %_llgo_3, label %_llgo_4
%3 = load ptr, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8
%4 = icmp eq ptr %3, null
br i1 %4, label %_llgo_3, label %_llgo_4
_llgo_3: ; preds = %_llgo_2
%6 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 1)
%7 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %6)
store ptr %7, ptr @"*_llgo_main.Game2", align 8
%5 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 2)
store ptr %5, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8
br label %_llgo_4
_llgo_4: ; preds = %_llgo_3, %_llgo_2
%8 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%9 = icmp eq ptr %8, null
br i1 %9, label %_llgo_5, label %_llgo_6
%6 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8
%7 = icmp eq ptr %6, null
br i1 %7, label %_llgo_5, label %_llgo_6
_llgo_5: ; preds = %_llgo_4
%10 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%11 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %11, i32 0, i32 0
store ptr %10, ptr %12, align 8
%13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %11, i32 0, i32 1
store i64 0, ptr %13, align 4
%14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %11, i32 0, i32 2
store i64 0, ptr %14, align 4
%15 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %11, align 8
%16 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%17 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %17, i32 0, i32 0
store ptr %16, ptr %18, align 8
%19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %17, i32 0, i32 1
store i64 0, ptr %19, align 4
%20 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %17, i32 0, i32 2
store i64 0, ptr %20, align 4
%21 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %17, align 8
%22 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %15, %"github.com/goplus/llgo/internal/runtime.Slice" %21, i1 false)
store ptr %22, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%8 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %8, i32 0, i32 0
store ptr @0, ptr %9, align 8
%10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %8, i32 0, i32 1
store i64 4, 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.AllocU"(i64 0)
%13 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %13, i32 0, i32 0
store ptr %12, ptr %14, align 8
%15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %13, i32 0, i32 1
store i64 0, ptr %15, align 4
%16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %13, i32 0, i32 2
store i64 0, ptr %16, align 4
%17 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %13, align 8
%18 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %11, i64 0, %"github.com/goplus/llgo/internal/runtime.Slice" %17)
store ptr %18, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8
br label %_llgo_6
_llgo_6: ; preds = %_llgo_5, %_llgo_4
%23 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%24 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%25 = load ptr, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer", align 8
%26 = icmp eq ptr %25, null
br i1 %26, label %_llgo_7, label %_llgo_8
%19 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8
br i1 %4, label %_llgo_7, label %_llgo_8
_llgo_7: ; preds = %_llgo_6
%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 @0, 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/abi.Imethod", align 8
%32 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %31, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %30, ptr %32, align 8
%33 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %31, i32 0, i32 1
store ptr %23, ptr %33, align 8
%34 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %31, align 8
%35 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %35, i32 0, i32 0
store ptr @1, ptr %36, align 8
%37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %35, i32 0, i32 1
store i64 47, ptr %37, align 4
%38 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %35, align 8
%39 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%40 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %39, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %38, ptr %40, align 8
%41 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %39, i32 0, i32 1
store ptr %24, ptr %41, align 8
%42 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %39, align 8
%43 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48)
%44 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %43, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %34, ptr %44, align 8
%45 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %43, i64 1
store %"github.com/goplus/llgo/internal/abi.Imethod" %42, ptr %45, align 8
%46 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%47 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 0
store ptr %43, ptr %47, align 8
%48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 1
store i64 2, ptr %48, align 4
%49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 2
store i64 2, ptr %49, align 4
%50 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, align 8
%51 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %51, i32 0, i32 0
store ptr @2, ptr %52, align 8
%53 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %51, i32 0, i32 1
store i64 38, ptr %53, align 4
%54 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %51, align 8
%55 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %55, i32 0, i32 0
store ptr @3, ptr %56, align 8
%57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %55, i32 0, i32 1
store i64 44, ptr %57, align 4
%58 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %55, align 8
%59 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %54, %"github.com/goplus/llgo/internal/runtime.String" %58, %"github.com/goplus/llgo/internal/runtime.Slice" %50)
store ptr %59, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer", align 8
%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 @1, ptr %21, align 8
%22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 1
store i64 4, ptr %22, align 4
%23 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %20, align 8
%24 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%25 = icmp eq ptr %24, null
br i1 %25, label %_llgo_9, label %_llgo_10
_llgo_8: ; preds = %_llgo_10, %_llgo_6
%26 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8
%27 = icmp eq ptr %26, null
br i1 %27, label %_llgo_11, label %_llgo_12
_llgo_9: ; preds = %_llgo_7
%28 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%29 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %29, i32 0, i32 0
store ptr %28, ptr %30, align 8
%31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %29, i32 0, i32 1
store i64 0, ptr %31, align 4
%32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %29, i32 0, i32 2
store i64 0, ptr %32, align 4
%33 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %29, align 8
%34 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%35 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 0
store ptr %34, ptr %36, align 8
%37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 1
store i64 0, ptr %37, align 4
%38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 2
store i64 0, ptr %38, align 4
%39 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, align 8
%40 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %33, %"github.com/goplus/llgo/internal/runtime.Slice" %39, i1 false)
store ptr %40, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
br label %_llgo_10
_llgo_10: ; preds = %_llgo_9, %_llgo_7
%41 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%42 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%43 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %42, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %23, ptr %43, align 8
%44 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %42, i32 0, i32 1
store ptr %41, ptr %44, align 8
%45 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %42, i32 0, i32 2
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).Load", ptr %45, align 8
%46 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %42, i32 0, i32 3
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).Load", ptr %46, align 8
%47 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %42, align 8
%48 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %48, i32 0, i32 0
store ptr @2, ptr %49, align 8
%50 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %48, i32 0, i32 1
store i64 8, ptr %50, align 4
%51 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %48, align 8
%52 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%53 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %52, i32 0, i32 0
store ptr @3, ptr %53, align 8
%54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %52, i32 0, i32 1
store i64 47, ptr %54, align 4
%55 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %52, align 8
%56 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%57 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%58 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %57, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %55, ptr %58, align 8
%59 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %57, i32 0, i32 1
store ptr %56, ptr %59, align 8
%60 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %57, i32 0, i32 2
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).initGame", ptr %60, align 8
%61 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %57, i32 0, i32 3
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).initGame", ptr %61, align 8
%62 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %57, align 8
%63 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 80)
%64 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %63, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %47, ptr %64, align 8
%65 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %63, i64 1
store %"github.com/goplus/llgo/internal/abi.Method" %62, ptr %65, align 8
%66 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%67 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %66, i32 0, i32 0
store ptr %63, ptr %67, align 8
%68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %66, i32 0, i32 1
store i64 2, ptr %68, align 4
%69 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %66, i32 0, i32 2
store i64 2, ptr %69, align 4
%70 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %66, align 8
%71 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %71, i32 0, i32 0
store ptr @4, ptr %72, align 8
%73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %71, i32 0, i32 1
store i64 38, ptr %73, align 4
%74 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %71, align 8
%75 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%76 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %75, i32 0, i32 0
store ptr @5, ptr %76, align 8
%77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %75, i32 0, i32 1
store i64 4, ptr %77, align 4
%78 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %75, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %5, %"github.com/goplus/llgo/internal/runtime.String" %74, %"github.com/goplus/llgo/internal/runtime.String" %78, ptr %19, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %70)
br label %_llgo_8
_llgo_8: ; preds = %_llgo_7, %_llgo_6
%60 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%61 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%62 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%63 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %62, i32 0, i32 0
store ptr @0, ptr %63, align 8
%64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %62, i32 0, i32 1
store i64 4, ptr %64, align 4
%65 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %62, align 8
%66 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%67 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %66, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %65, ptr %67, align 8
%68 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %66, i32 0, i32 1
store ptr %60, ptr %68, align 8
%69 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %66, align 8
%70 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %70, i32 0, i32 0
store ptr @1, ptr %71, align 8
%72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %70, i32 0, i32 1
store i64 47, ptr %72, align 4
%73 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %70, align 8
%74 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%75 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %74, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %73, ptr %75, align 8
%76 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %74, i32 0, i32 1
store ptr %61, ptr %76, align 8
%77 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %74, align 8
%78 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48)
%79 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %78, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %69, ptr %79, align 8
%80 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %78, i64 1
store %"github.com/goplus/llgo/internal/abi.Imethod" %77, ptr %80, align 8
%81 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%82 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %81, i32 0, i32 0
store ptr %78, ptr %82, align 8
%83 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %81, i32 0, i32 1
store i64 2, ptr %83, align 4
%84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %81, i32 0, i32 2
store i64 2, ptr %84, align 4
%85 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %81, 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 @4, ptr %87, align 8
%88 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %86, i32 0, i32 1
store i64 4, ptr %88, align 4
%89 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %86, align 8
%90 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%91 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %90, i32 0, i32 0
store ptr null, ptr %91, align 8
%92 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %90, i32 0, i32 1
store i64 0, ptr %92, align 4
%93 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %90, align 8
%94 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %89, %"github.com/goplus/llgo/internal/runtime.String" %93, %"github.com/goplus/llgo/internal/runtime.Slice" %85)
store ptr %94, ptr @"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg", align 8
_llgo_11: ; preds = %_llgo_8
%79 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %5)
store ptr %79, ptr @"*_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8
br label %_llgo_12
_llgo_12: ; preds = %_llgo_11, %_llgo_8
%80 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8
%81 = load ptr, ptr @"_llgo_struct$cJmCzeVn0orHWafCrTGAnbbAF46F2A4Fms4bJBm8ITI", align 8
%82 = icmp eq ptr %81, null
br i1 %82, label %_llgo_13, label %_llgo_14
_llgo_13: ; preds = %_llgo_12
%83 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %83, i32 0, i32 0
store ptr @5, ptr %84, align 8
%85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %83, i32 0, i32 1
store i64 4, ptr %85, align 4
%86 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %83, align 8
%87 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%88 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %87, i32 0, i32 0
store ptr null, ptr %88, align 8
%89 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %87, i32 0, i32 1
store i64 0, ptr %89, align 4
%90 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %87, align 8
%91 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %86, ptr %80, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %90, i1 true)
%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 @0, ptr %93, align 8
%94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %92, i32 0, i32 1
store i64 4, ptr %94, align 4
%95 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %92, align 8
%96 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56)
%97 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %96, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %91, ptr %97, align 8
%98 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%99 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, i32 0, i32 0
store ptr %96, ptr %99, align 8
%100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, i32 0, i32 1
store i64 1, ptr %100, align 4
%101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, i32 0, i32 2
store i64 1, ptr %101, align 4
%102 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, align 8
%103 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %95, i64 8, %"github.com/goplus/llgo/internal/runtime.Slice" %102)
call void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr %103)
store ptr %103, ptr @"_llgo_struct$cJmCzeVn0orHWafCrTGAnbbAF46F2A4Fms4bJBm8ITI", align 8
br label %_llgo_14
_llgo_14: ; preds = %_llgo_13, %_llgo_12
%104 = load ptr, ptr @"_llgo_struct$cJmCzeVn0orHWafCrTGAnbbAF46F2A4Fms4bJBm8ITI", align 8
br i1 %1, label %_llgo_15, label %_llgo_16
_llgo_15: ; preds = %_llgo_14
%105 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%106 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %105, i32 0, i32 0
store ptr @1, ptr %106, align 8
%107 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %105, i32 0, i32 1
store i64 4, ptr %107, align 4
%108 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %105, align 8
%109 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%110 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%111 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %110, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %108, ptr %111, align 8
%112 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %110, i32 0, i32 1
store ptr %109, ptr %112, align 8
%113 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %110, i32 0, i32 2
store ptr @"main.(*Game1).Load", ptr %113, align 8
%114 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %110, i32 0, i32 3
store ptr @"main.(*Game1).Load", ptr %114, align 8
%115 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %110, align 8
%116 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%117 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %116, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %108, ptr %117, align 8
%118 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %116, i32 0, i32 1
store ptr %109, ptr %118, align 8
%119 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %116, i32 0, i32 2
store ptr @"main.(*Game1).Load", ptr %119, align 8
%120 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %116, i32 0, i32 3
store ptr @main.Game1.Load, ptr %120, align 8
%121 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %116, align 8
%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 @2, ptr %123, align 8
%124 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %122, i32 0, i32 1
store i64 8, ptr %124, align 4
%125 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %122, align 8
%126 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%127 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %126, i32 0, i32 0
store ptr @3, ptr %127, align 8
%128 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %126, i32 0, i32 1
store i64 47, ptr %128, align 4
%129 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %126, align 8
%130 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%131 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%132 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %131, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %129, ptr %132, align 8
%133 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %131, i32 0, i32 1
store ptr %130, ptr %133, align 8
%134 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %131, i32 0, i32 2
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).initGame", ptr %134, align 8
%135 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %131, i32 0, i32 3
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).initGame", ptr %135, align 8
%136 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %131, align 8
%137 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%138 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %137, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %121, ptr %138, align 8
%139 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%140 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, i32 0, i32 0
store ptr %137, ptr %140, align 8
%141 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, i32 0, i32 1
store i64 1, ptr %141, align 4
%142 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, i32 0, i32 2
store i64 1, ptr %142, align 4
%143 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, align 8
%144 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 80)
%145 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %144, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %115, ptr %145, align 8
%146 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %144, i64 1
store %"github.com/goplus/llgo/internal/abi.Method" %136, ptr %146, align 8
%147 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%148 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %147, i32 0, i32 0
store ptr %144, ptr %148, align 8
%149 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %147, i32 0, i32 1
store i64 2, ptr %149, align 4
%150 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %147, i32 0, i32 2
store i64 2, ptr %150, align 4
%151 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %147, align 8
%152 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%153 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %152, i32 0, i32 0
store ptr @0, ptr %153, align 8
%154 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %152, i32 0, i32 1
store i64 4, ptr %154, align 4
%155 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %152, align 8
%156 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%157 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %156, i32 0, i32 0
store ptr @6, ptr %157, align 8
%158 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %156, i32 0, i32 1
store i64 5, ptr %158, align 4
%159 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %156, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %2, %"github.com/goplus/llgo/internal/runtime.String" %155, %"github.com/goplus/llgo/internal/runtime.String" %159, ptr %104, %"github.com/goplus/llgo/internal/runtime.Slice" %143, %"github.com/goplus/llgo/internal/runtime.Slice" %151)
br label %_llgo_16
_llgo_16: ; preds = %_llgo_15, %_llgo_14
%160 = load ptr, ptr @"*_llgo_main.Game1", align 8
%161 = icmp eq ptr %160, null
br i1 %161, label %_llgo_17, label %_llgo_18
_llgo_17: ; preds = %_llgo_16
%162 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %2)
store ptr %162, ptr @"*_llgo_main.Game1", align 8
br label %_llgo_18
_llgo_18: ; preds = %_llgo_17, %_llgo_16
%163 = load ptr, ptr @_llgo_main.Game2, align 8
%164 = icmp eq ptr %163, null
br i1 %164, label %_llgo_19, label %_llgo_20
_llgo_19: ; preds = %_llgo_18
%165 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 1)
store ptr %165, ptr @_llgo_main.Game2, align 8
br label %_llgo_20
_llgo_20: ; preds = %_llgo_19, %_llgo_18
%166 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8
br i1 %164, label %_llgo_21, label %_llgo_22
_llgo_21: ; preds = %_llgo_20
%167 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%168 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %167, i32 0, i32 0
store ptr @2, ptr %168, align 8
%169 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %167, i32 0, i32 1
store i64 8, ptr %169, align 4
%170 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %167, align 8
%171 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%172 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %171, i32 0, i32 0
store ptr @7, ptr %172, align 8
%173 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %171, i32 0, i32 1
store i64 13, ptr %173, align 4
%174 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %171, align 8
%175 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%176 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%177 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %176, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %174, ptr %177, align 8
%178 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %176, i32 0, i32 1
store ptr %175, ptr %178, align 8
%179 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %176, i32 0, i32 2
store ptr @"main.(*Game2).initGame", ptr %179, align 8
%180 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %176, i32 0, i32 3
store ptr @"main.(*Game2).initGame", ptr %180, align 8
%181 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %176, align 8
%182 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%183 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %182, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %181, ptr %183, align 8
%184 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%185 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %184, i32 0, i32 0
store ptr %182, ptr %185, align 8
%186 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %184, i32 0, i32 1
store i64 1, ptr %186, align 4
%187 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %184, i32 0, i32 2
store i64 1, ptr %187, align 4
%188 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %184, align 8
%189 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%190 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %189, i32 0, i32 0
store ptr @0, ptr %190, align 8
%191 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %189, i32 0, i32 1
store i64 4, ptr %191, align 4
%192 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %189, align 8
%193 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%194 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %193, i32 0, i32 0
store ptr @8, ptr %194, align 8
%195 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %193, i32 0, i32 1
store i64 5, ptr %195, align 4
%196 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %193, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %165, %"github.com/goplus/llgo/internal/runtime.String" %192, %"github.com/goplus/llgo/internal/runtime.String" %196, ptr %166, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %188)
br label %_llgo_22
_llgo_22: ; preds = %_llgo_21, %_llgo_20
%197 = load ptr, ptr @"*_llgo_main.Game2", align 8
%198 = icmp eq ptr %197, null
br i1 %198, label %_llgo_23, label %_llgo_24
_llgo_23: ; preds = %_llgo_22
%199 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %165)
store ptr %199, ptr @"*_llgo_main.Game2", align 8
br label %_llgo_24
_llgo_24: ; preds = %_llgo_23, %_llgo_22
%200 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%201 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%202 = load ptr, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer", align 8
%203 = icmp eq ptr %202, null
br i1 %203, label %_llgo_25, label %_llgo_26
_llgo_25: ; preds = %_llgo_24
%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
store ptr @1, ptr %205, align 8
%206 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %204, i32 0, i32 1
store i64 4, ptr %206, align 4
%207 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %204, align 8
%208 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%209 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %208, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %207, ptr %209, align 8
%210 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %208, i32 0, i32 1
store ptr %200, ptr %210, align 8
%211 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %208, align 8
%212 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%213 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %212, i32 0, i32 0
store ptr @3, ptr %213, align 8
%214 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %212, i32 0, i32 1
store i64 47, ptr %214, align 4
%215 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %212, align 8
%216 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%217 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %216, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %215, ptr %217, align 8
%218 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %216, i32 0, i32 1
store ptr %201, ptr %218, align 8
%219 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %216, align 8
%220 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48)
%221 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %220, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %211, ptr %221, align 8
%222 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %220, i64 1
store %"github.com/goplus/llgo/internal/abi.Imethod" %219, ptr %222, align 8
%223 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%224 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %223, i32 0, i32 0
store ptr %220, ptr %224, align 8
%225 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %223, i32 0, i32 1
store i64 2, ptr %225, align 4
%226 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %223, i32 0, i32 2
store i64 2, ptr %226, align 4
%227 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %223, align 8
%228 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%229 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %228, i32 0, i32 0
store ptr @4, ptr %229, align 8
%230 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %228, i32 0, i32 1
store i64 38, ptr %230, align 4
%231 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %228, align 8
%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 @9, ptr %233, align 8
%234 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %232, i32 0, i32 1
store i64 44, ptr %234, align 4
%235 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %232, align 8
%236 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %231, %"github.com/goplus/llgo/internal/runtime.String" %235, %"github.com/goplus/llgo/internal/runtime.Slice" %227)
store ptr %236, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer", align 8
br label %_llgo_26
_llgo_26: ; preds = %_llgo_25, %_llgo_24
%237 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%238 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%239 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%240 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %239, i32 0, i32 0
store ptr @1, ptr %240, align 8
%241 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %239, i32 0, i32 1
store i64 4, ptr %241, align 4
%242 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %239, align 8
%243 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%244 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %243, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %242, ptr %244, align 8
%245 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %243, i32 0, i32 1
store ptr %237, ptr %245, align 8
%246 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %243, align 8
%247 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%248 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %247, i32 0, i32 0
store ptr @3, ptr %248, align 8
%249 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %247, i32 0, i32 1
store i64 47, ptr %249, align 4
%250 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %247, align 8
%251 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%252 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %251, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %250, ptr %252, align 8
%253 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %251, i32 0, i32 1
store ptr %238, ptr %253, align 8
%254 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %251, align 8
%255 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48)
%256 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %255, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %246, ptr %256, align 8
%257 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %255, i64 1
store %"github.com/goplus/llgo/internal/abi.Imethod" %254, ptr %257, align 8
%258 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%259 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %258, i32 0, i32 0
store ptr %255, ptr %259, align 8
%260 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %258, i32 0, i32 1
store i64 2, ptr %260, align 4
%261 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %258, i32 0, i32 2
store i64 2, ptr %261, align 4
%262 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %258, 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 @0, ptr %264, align 8
%265 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %263, i32 0, i32 1
store i64 4, ptr %265, align 4
%266 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %263, align 8
%267 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%268 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %267, i32 0, i32 0
store ptr null, ptr %268, align 8
%269 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %267, i32 0, i32 1
store i64 0, ptr %269, align 4
%270 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %267, align 8
%271 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %266, %"github.com/goplus/llgo/internal/runtime.String" %270, %"github.com/goplus/llgo/internal/runtime.Slice" %262)
store ptr %271, ptr @"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg", align 8
ret void
}
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64, i64, i64)
declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String", i64, %"github.com/goplus/llgo/internal/runtime.Slice")
declare %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1)
declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64)
declare void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr, %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", ptr, %"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice")
declare ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice", i1)
declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice")

View File

@@ -39,12 +39,15 @@ source_filename = "main"
@_llgo_float64 = linkonce global ptr null, align 8
@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_int8 = linkonce global ptr null, align 8
@12 = private unnamed_addr constant [2 x i8] c"T3", align 1
@"*_llgo_main.T3" = linkonce global ptr null, align 8
@"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI" = linkonce global ptr null, align 8
@12 = private unnamed_addr constant [5 x i8] c"world", align 1
@13 = private unnamed_addr constant [5 x i8] c"world", align 1
@_llgo_main.I = linkonce global ptr null, align 8
@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
@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
@_llgo_any = linkonce global ptr null, align 8
define i64 @main.T.Invoke(%main.T %0) {
@@ -311,7 +314,7 @@ _llgo_0:
%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
store ptr @13, 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
@@ -350,7 +353,7 @@ _llgo_1: ; preds = %_llgo_0
_llgo_2: ; preds = %_llgo_0
%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
store ptr @15, 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
@@ -382,7 +385,7 @@ _llgo_3: ; preds = %_llgo_1
_llgo_4: ; preds = %_llgo_1
%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
store ptr @15, 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
@@ -415,7 +418,7 @@ _llgo_5: ; preds = %_llgo_3
_llgo_6: ; preds = %_llgo_3
%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
store ptr @15, 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
@@ -715,363 +718,435 @@ _llgo_14: ; preds = %_llgo_13, %_llgo_6
br i1 %146, label %_llgo_15, label %_llgo_16
_llgo_15: ; preds = %_llgo_14
%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
%147 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %2)
store ptr %147, ptr @"*_llgo_main.T", align 8
br label %_llgo_16
_llgo_16: ; preds = %_llgo_15, %_llgo_14
%149 = load ptr, ptr @_llgo_main.T1, align 8
%150 = icmp eq ptr %149, null
br i1 %150, label %_llgo_17, label %_llgo_18
%148 = load ptr, ptr @_llgo_main.T1, align 8
%149 = icmp eq ptr %148, null
br i1 %149, label %_llgo_17, label %_llgo_18
_llgo_17: ; preds = %_llgo_16
%151 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 2, i64 1, i64 1)
%152 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %151, i32 0, i32 6
%153 = load i8, ptr %152, align 1
%154 = or i8 %153, 32
store i8 %154, ptr %152, align 1
store ptr %151, ptr @_llgo_main.T1, align 8
%150 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 2, i64 1, i64 1)
%151 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %150, i32 0, i32 6
%152 = load i8, ptr %151, align 1
%153 = or i8 %152, 32
store i8 %153, ptr %151, align 1
store ptr %150, ptr @_llgo_main.T1, align 8
br label %_llgo_18
_llgo_18: ; preds = %_llgo_17, %_llgo_16
%155 = load ptr, ptr @_llgo_int, align 8
br i1 %150, label %_llgo_19, label %_llgo_20
%154 = load ptr, ptr @_llgo_int, align 8
br i1 %149, label %_llgo_19, label %_llgo_20
_llgo_19: ; preds = %_llgo_18
%156 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%157 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %156, i32 0, i32 0
store ptr @7, ptr %157, align 8
%158 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %156, i32 0, i32 1
store i64 6, ptr %158, align 4
%159 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %156, align 8
%160 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%161 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%162 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %161, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %159, ptr %162, align 8
%163 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %161, i32 0, i32 1
store ptr %160, ptr %163, align 8
%164 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %161, i32 0, i32 2
%155 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%156 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %155, i32 0, i32 0
store ptr @7, ptr %156, align 8
%157 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %155, i32 0, i32 1
store i64 6, ptr %157, align 4
%158 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %155, align 8
%159 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%160 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%161 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %160, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %158, ptr %161, align 8
%162 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %160, i32 0, i32 1
store ptr %159, ptr %162, align 8
%163 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %160, i32 0, i32 2
store ptr @"main.(*T1).Invoke", ptr %163, align 8
%164 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %160, i32 0, i32 3
store ptr @"main.(*T1).Invoke", ptr %164, align 8
%165 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %161, i32 0, i32 3
store ptr @"main.(*T1).Invoke", ptr %165, align 8
%166 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %161, 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" %159, ptr %168, align 8
%169 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %167, i32 0, i32 1
store ptr %160, ptr %169, align 8
%170 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %167, i32 0, i32 2
store ptr @"main.(*T1).Invoke", ptr %170, align 8
%171 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %167, i32 0, i32 3
store ptr @main.T1.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
%165 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %160, align 8
%166 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%167 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %166, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %158, ptr %167, align 8
%168 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %166, i32 0, i32 1
store ptr %159, ptr %168, align 8
%169 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %166, i32 0, i32 2
store ptr @"main.(*T1).Invoke", ptr %169, align 8
%170 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %166, i32 0, i32 3
store ptr @main.T1.Invoke, ptr %170, align 8
%171 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %166, align 8
%172 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%173 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %172, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %171, ptr %173, align 8
%174 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%175 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %174, i32 0, i32 0
store ptr %172, ptr %175, align 8
%176 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %174, i32 0, i32 1
store i64 1, ptr %176, align 4
%177 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %174, i32 0, i32 2
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 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%181 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %180, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %166, ptr %181, align 8
%182 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%183 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %182, i32 0, i32 0
store ptr %180, ptr %183, align 8
%184 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %182, i32 0, i32 1
%178 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %174, align 8
%179 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%180 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %179, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %165, ptr %180, align 8
%181 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%182 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %181, i32 0, i32 0
store ptr %179, ptr %182, align 8
%183 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %181, i32 0, i32 1
store i64 1, ptr %183, align 4
%184 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %181, i32 0, i32 2
store i64 1, ptr %184, align 4
%185 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %182, i32 0, i32 2
store i64 1, ptr %185, align 4
%186 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %182, align 8
%187 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%188 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %187, i32 0, i32 0
store ptr @6, ptr %188, align 8
%189 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %187, i32 0, i32 1
store i64 4, ptr %189, align 4
%190 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %187, align 8
%191 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%192 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %191, i32 0, i32 0
store ptr @10, ptr %192, align 8
%193 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %191, i32 0, i32 1
store i64 2, ptr %193, align 4
%194 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %191, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %151, %"github.com/goplus/llgo/internal/runtime.String" %190, %"github.com/goplus/llgo/internal/runtime.String" %194, ptr %155, %"github.com/goplus/llgo/internal/runtime.Slice" %179, %"github.com/goplus/llgo/internal/runtime.Slice" %186)
%185 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %181, align 8
%186 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%187 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %186, i32 0, i32 0
store ptr @6, ptr %187, align 8
%188 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %186, i32 0, i32 1
store i64 4, ptr %188, align 4
%189 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %186, align 8
%190 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%191 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %190, i32 0, i32 0
store ptr @10, ptr %191, align 8
%192 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %190, i32 0, i32 1
store i64 2, ptr %192, align 4
%193 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %190, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %150, %"github.com/goplus/llgo/internal/runtime.String" %189, %"github.com/goplus/llgo/internal/runtime.String" %193, ptr %154, %"github.com/goplus/llgo/internal/runtime.Slice" %178, %"github.com/goplus/llgo/internal/runtime.Slice" %185)
br label %_llgo_20
_llgo_20: ; preds = %_llgo_19, %_llgo_18
%195 = load ptr, ptr @"*_llgo_main.T1", align 8
%196 = icmp eq ptr %195, null
br i1 %196, label %_llgo_21, label %_llgo_22
%194 = load ptr, ptr @"*_llgo_main.T1", align 8
%195 = icmp eq ptr %194, null
br i1 %195, label %_llgo_21, label %_llgo_22
_llgo_21: ; preds = %_llgo_20
%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
%196 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %150)
store ptr %196, ptr @"*_llgo_main.T1", align 8
br label %_llgo_22
_llgo_22: ; preds = %_llgo_21, %_llgo_20
%199 = load ptr, ptr @_llgo_main.T2, align 8
%200 = icmp eq ptr %199, null
br i1 %200, label %_llgo_23, label %_llgo_24
%197 = load ptr, ptr @_llgo_main.T2, align 8
%198 = icmp eq ptr %197, null
br i1 %198, label %_llgo_23, label %_llgo_24
_llgo_23: ; preds = %_llgo_22
%201 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 14, i64 1, i64 1)
%202 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %201, i32 0, i32 6
%203 = load i8, ptr %202, align 1
%204 = or i8 %203, 32
store i8 %204, ptr %202, align 1
store ptr %201, ptr @_llgo_main.T2, align 8
%199 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 14, i64 1, i64 1)
%200 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %199, i32 0, i32 6
%201 = load i8, ptr %200, align 1
%202 = or i8 %201, 32
store i8 %202, ptr %200, align 1
store ptr %199, ptr @_llgo_main.T2, align 8
br label %_llgo_24
_llgo_24: ; preds = %_llgo_23, %_llgo_22
%205 = load ptr, ptr @_llgo_float64, align 8
%206 = icmp eq ptr %205, null
br i1 %206, label %_llgo_25, label %_llgo_26
%203 = load ptr, ptr @_llgo_float64, align 8
%204 = icmp eq ptr %203, null
br i1 %204, label %_llgo_25, label %_llgo_26
_llgo_25: ; preds = %_llgo_24
%207 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 14)
%208 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %207, i32 0, i32 6
%209 = load i8, ptr %208, align 1
%210 = or i8 %209, 32
store i8 %210, ptr %208, align 1
store ptr %207, ptr @_llgo_float64, align 8
%205 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 14)
%206 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %205, i32 0, i32 6
%207 = load i8, ptr %206, align 1
%208 = or i8 %207, 32
store i8 %208, ptr %206, align 1
store ptr %205, ptr @_llgo_float64, align 8
br label %_llgo_26
_llgo_26: ; preds = %_llgo_25, %_llgo_24
%211 = load ptr, ptr @_llgo_float64, align 8
br i1 %200, label %_llgo_27, label %_llgo_28
%209 = load ptr, ptr @_llgo_float64, align 8
br i1 %198, label %_llgo_27, label %_llgo_28
_llgo_27: ; preds = %_llgo_26
%212 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%213 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %212, i32 0, i32 0
store ptr @7, ptr %213, align 8
%214 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %212, i32 0, i32 1
store i64 6, ptr %214, align 4
%215 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %212, align 8
%216 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%217 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%218 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %217, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %215, ptr %218, align 8
%219 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %217, i32 0, i32 1
store ptr %216, ptr %219, align 8
%220 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %217, i32 0, i32 2
store ptr @"main.(*T2).Invoke", ptr %220, align 8
%221 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %217, i32 0, i32 3
store ptr @"main.(*T2).Invoke", ptr %221, align 8
%222 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %217, align 8
%223 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%224 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %223, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %215, ptr %224, align 8
%225 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %223, i32 0, i32 1
store ptr %216, ptr %225, align 8
%226 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %223, i32 0, i32 2
store ptr @"main.(*T2).Invoke", ptr %226, align 8
%227 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %223, i32 0, i32 3
store ptr @main.T2.Invoke, ptr %227, align 8
%228 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %223, align 8
%229 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%230 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %229, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %228, ptr %230, align 8
%231 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%232 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %231, i32 0, i32 0
store ptr %229, ptr %232, align 8
%233 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %231, i32 0, i32 1
store i64 1, ptr %233, align 4
%234 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %231, i32 0, i32 2
store i64 1, ptr %234, align 4
%235 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %231, align 8
%236 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%237 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %236, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %222, ptr %237, align 8
%238 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%239 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %238, i32 0, i32 0
store ptr %236, ptr %239, align 8
%240 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %238, i32 0, i32 1
store i64 1, ptr %240, align 4
%241 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %238, i32 0, i32 2
store i64 1, ptr %241, align 4
%242 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %238, align 8
%243 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%244 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %243, i32 0, i32 0
store ptr @6, ptr %244, align 8
%245 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %243, i32 0, i32 1
store i64 4, ptr %245, align 4
%246 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %243, align 8
%247 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%248 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %247, i32 0, i32 0
store ptr @11, ptr %248, align 8
%249 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %247, i32 0, i32 1
store i64 2, ptr %249, align 4
%250 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %247, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %201, %"github.com/goplus/llgo/internal/runtime.String" %246, %"github.com/goplus/llgo/internal/runtime.String" %250, ptr %211, %"github.com/goplus/llgo/internal/runtime.Slice" %235, %"github.com/goplus/llgo/internal/runtime.Slice" %242)
%210 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%211 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %210, i32 0, i32 0
store ptr @7, ptr %211, align 8
%212 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %210, i32 0, i32 1
store i64 6, ptr %212, align 4
%213 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %210, align 8
%214 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%215 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%216 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %215, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %213, ptr %216, align 8
%217 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %215, i32 0, i32 1
store ptr %214, ptr %217, align 8
%218 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %215, i32 0, i32 2
store ptr @"main.(*T2).Invoke", ptr %218, align 8
%219 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %215, i32 0, i32 3
store ptr @"main.(*T2).Invoke", ptr %219, align 8
%220 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %215, align 8
%221 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%222 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %221, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %213, ptr %222, align 8
%223 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %221, i32 0, i32 1
store ptr %214, ptr %223, align 8
%224 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %221, i32 0, i32 2
store ptr @"main.(*T2).Invoke", ptr %224, align 8
%225 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %221, i32 0, i32 3
store ptr @main.T2.Invoke, ptr %225, align 8
%226 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %221, align 8
%227 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%228 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %227, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %226, ptr %228, align 8
%229 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%230 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %229, i32 0, i32 0
store ptr %227, ptr %230, align 8
%231 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %229, i32 0, i32 1
store i64 1, ptr %231, align 4
%232 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %229, i32 0, i32 2
store i64 1, ptr %232, align 4
%233 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %229, align 8
%234 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%235 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %234, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %220, ptr %235, align 8
%236 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%237 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %236, i32 0, i32 0
store ptr %234, ptr %237, align 8
%238 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %236, i32 0, i32 1
store i64 1, ptr %238, align 4
%239 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %236, i32 0, i32 2
store i64 1, ptr %239, align 4
%240 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %236, align 8
%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 @6, 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 @11, 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 %199, %"github.com/goplus/llgo/internal/runtime.String" %244, %"github.com/goplus/llgo/internal/runtime.String" %248, ptr %209, %"github.com/goplus/llgo/internal/runtime.Slice" %233, %"github.com/goplus/llgo/internal/runtime.Slice" %240)
br label %_llgo_28
_llgo_28: ; preds = %_llgo_27, %_llgo_26
%251 = load ptr, ptr @"*_llgo_main.T2", align 8
%252 = icmp eq ptr %251, null
br i1 %252, label %_llgo_29, label %_llgo_30
%249 = load ptr, ptr @"*_llgo_main.T2", align 8
%250 = icmp eq ptr %249, null
br i1 %250, label %_llgo_29, label %_llgo_30
_llgo_29: ; preds = %_llgo_28
%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
%251 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %199)
store ptr %251, 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
%256 = icmp eq ptr %255, null
br i1 %256, label %_llgo_31, label %_llgo_32
%252 = load ptr, ptr @_llgo_main.T3, align 8
%253 = icmp eq ptr %252, null
br i1 %253, 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 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %257)
store ptr %258, ptr @"*_llgo_main.T3", align 8
%254 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 3, i64 0, i64 1)
%255 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %254, i32 0, i32 6
%256 = load i8, ptr %255, align 1
%257 = or i8 %256, 32
store i8 %257, ptr %255, align 1
store ptr %254, ptr @_llgo_main.T3, align 8
br label %_llgo_32
_llgo_32: ; preds = %_llgo_31, %_llgo_30
%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
%258 = load ptr, ptr @_llgo_int8, align 8
%259 = icmp eq ptr %258, null
br i1 %259, label %_llgo_33, label %_llgo_34
_llgo_33: ; preds = %_llgo_32
%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
%260 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
%261 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %260, i32 0, i32 6
%262 = load i8, ptr %261, align 1
%263 = or i8 %262, 32
store i8 %263, ptr %261, align 1
store ptr %260, ptr @_llgo_int8, align 8
br label %_llgo_34
_llgo_34: ; preds = %_llgo_33, %_llgo_32
%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
%264 = load ptr, ptr @_llgo_int8, align 8
br i1 %253, label %_llgo_35, label %_llgo_36
_llgo_35: ; preds = %_llgo_34
%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
%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 @7, ptr %266, align 8
%267 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %265, i32 0, i32 1
store i64 6, ptr %267, align 4
%268 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %265, align 8
%269 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%270 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%271 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %270, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %268, ptr %271, align 8
%272 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %270, i32 0, i32 1
store ptr %269, ptr %272, align 8
%273 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %270, i32 0, i32 2
store ptr @"main.(*T3).Invoke", ptr %273, align 8
%274 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %270, i32 0, i32 3
store ptr @"main.(*T3).Invoke", ptr %274, align 8
%275 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %270, align 8
%276 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%277 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %276, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %275, ptr %277, align 8
%278 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%279 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %278, i32 0, i32 0
store ptr %276, ptr %279, align 8
%280 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %278, i32 0, i32 1
store i64 1, ptr %280, align 4
%281 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %278, i32 0, i32 2
store i64 1, ptr %281, align 4
%282 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %278, align 8
%283 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%284 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %283, i32 0, i32 0
store ptr @6, ptr %284, align 8
%285 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %283, i32 0, i32 1
store i64 4, ptr %285, align 4
%286 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %283, 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 @12, ptr %288, align 8
%289 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %287, i32 0, i32 1
store i64 2, ptr %289, align 4
%290 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %287, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %254, %"github.com/goplus/llgo/internal/runtime.String" %286, %"github.com/goplus/llgo/internal/runtime.String" %290, ptr %264, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %282)
br label %_llgo_36
_llgo_36: ; preds = %_llgo_35, %_llgo_34
%323 = load ptr, ptr @_llgo_any, align 8
%324 = icmp eq ptr %323, null
br i1 %324, label %_llgo_37, label %_llgo_38
%291 = load ptr, ptr @"*_llgo_main.T3", align 8
%292 = icmp eq ptr %291, null
br i1 %292, label %_llgo_37, label %_llgo_38
_llgo_37: ; preds = %_llgo_36
%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
%293 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %254)
store ptr %293, ptr @"*_llgo_main.T3", align 8
br label %_llgo_38
_llgo_38: ; preds = %_llgo_37, %_llgo_36
%294 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%295 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8
%296 = load ptr, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8
%297 = icmp eq ptr %296, null
br i1 %297, label %_llgo_39, label %_llgo_40
_llgo_39: ; preds = %_llgo_38
%298 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%299 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %298, i32 0, i32 0
store ptr @7, ptr %299, align 8
%300 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %298, i32 0, i32 1
store i64 6, ptr %300, align 4
%301 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %298, align 8
%302 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%303 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %302, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %301, ptr %303, align 8
%304 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %302, i32 0, i32 1
store ptr %294, ptr %304, align 8
%305 = load %"github.com/goplus/llgo/internal/abi.Imethod", 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 @8, ptr %307, align 8
%308 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %306, i32 0, i32 1
store i64 6, ptr %308, align 4
%309 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %306, align 8
%310 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%311 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %310, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %309, ptr %311, align 8
%312 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %310, i32 0, i32 1
store ptr %295, ptr %312, align 8
%313 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %310, align 8
%314 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48)
%315 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %314, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %305, ptr %315, align 8
%316 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %314, i64 1
store %"github.com/goplus/llgo/internal/abi.Imethod" %313, ptr %316, align 8
%317 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%318 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %317, i32 0, i32 0
store ptr %314, ptr %318, align 8
%319 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %317, i32 0, i32 1
store i64 2, ptr %319, align 4
%320 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %317, i32 0, i32 2
store i64 2, ptr %320, align 4
%321 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %317, align 8
%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 @6, 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 null, ptr %327, align 8
%328 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %326, i32 0, i32 1
store i64 0, ptr %328, align 4
%329 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %326, align 8
%330 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %325, %"github.com/goplus/llgo/internal/runtime.String" %329, %"github.com/goplus/llgo/internal/runtime.Slice" %321)
store ptr %330, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8
br label %_llgo_40
_llgo_40: ; preds = %_llgo_39, %_llgo_38
%331 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%332 = load ptr, ptr @_llgo_main.I, align 8
%333 = icmp eq ptr %332, null
br i1 %333, label %_llgo_41, label %_llgo_42
_llgo_41: ; preds = %_llgo_40
%334 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%335 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %334, i32 0, i32 0
store ptr @7, ptr %335, align 8
%336 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %334, i32 0, i32 1
store i64 6, ptr %336, align 4
%337 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %334, align 8
%338 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%339 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %338, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %337, ptr %339, align 8
%340 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %338, i32 0, i32 1
store ptr %331, ptr %340, align 8
%341 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %338, align 8
%342 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24)
%343 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %342, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %341, ptr %343, align 8
%344 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%345 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %344, i32 0, i32 0
store ptr %342, ptr %345, align 8
%346 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %344, i32 0, i32 1
store i64 1, ptr %346, align 4
%347 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %344, i32 0, i32 2
store i64 1, ptr %347, align 4
%348 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %344, align 8
%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 @6, 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 @14, ptr %354, align 8
%355 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %353, i32 0, i32 1
store i64 6, ptr %355, align 4
%356 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %353, align 8
%357 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %352, %"github.com/goplus/llgo/internal/runtime.String" %356, %"github.com/goplus/llgo/internal/runtime.Slice" %348)
store ptr %357, ptr @_llgo_main.I, align 8
br label %_llgo_42
_llgo_42: ; preds = %_llgo_41, %_llgo_40
%358 = load ptr, ptr @_llgo_any, align 8
%359 = icmp eq ptr %358, null
br i1 %359, label %_llgo_43, label %_llgo_44
_llgo_43: ; preds = %_llgo_42
%360 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%361 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%362 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %361, i32 0, i32 0
store ptr %360, ptr %362, align 8
%363 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %361, i32 0, i32 1
store i64 0, ptr %363, align 4
%364 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %361, i32 0, i32 2
store i64 0, ptr %364, align 4
%365 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %361, 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 @6, 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 = 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 null, ptr %371, align 8
%372 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %370, i32 0, i32 1
store i64 0, ptr %372, align 4
%373 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %370, align 8
%374 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %369, %"github.com/goplus/llgo/internal/runtime.String" %373, %"github.com/goplus/llgo/internal/runtime.Slice" %365)
store ptr %374, ptr @_llgo_any, align 8
br label %_llgo_44
_llgo_44: ; preds = %_llgo_43, %_llgo_42
ret void
}

View File

@@ -57,18 +57,43 @@ source_filename = "main"
@__llgo_argc = global i32 0, align 4
@__llgo_argv = global ptr null, align 8
@17 = private unnamed_addr constant [11 x i8] c"hello world", align 1
@_llgo_main.stringReader = global ptr null, align 8
@"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk" = global ptr null, align 8
@18 = private unnamed_addr constant [1 x i8] c"s", align 1
@19 = private unnamed_addr constant [1 x i8] c"i", align 1
@20 = private unnamed_addr constant [8 x i8] c"prevRune", align 1
@21 = private unnamed_addr constant [3 x i8] c"Len", align 1
@"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA" = linkonce global ptr null, align 8
@22 = private unnamed_addr constant [6 x i8] c"ReadAt", align 1
@"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c" = linkonce global ptr null, align 8
@23 = private unnamed_addr constant [8 x i8] c"ReadByte", align 1
@"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM" = linkonce global ptr null, align 8
@_llgo_byte = linkonce global ptr null, align 8
@24 = private unnamed_addr constant [8 x i8] c"ReadRune", align 1
@"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU" = linkonce global ptr null, align 8
@_llgo_rune = linkonce global ptr null, align 8
@25 = private unnamed_addr constant [4 x i8] c"Seek", align 1
@"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms" = linkonce global ptr null, align 8
@26 = private unnamed_addr constant [4 x i8] c"Size", align 1
@"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug" = linkonce global ptr null, align 8
@27 = private unnamed_addr constant [10 x i8] c"UnreadByte", align 1
@28 = private unnamed_addr constant [10 x i8] c"UnreadRune", align 1
@29 = private unnamed_addr constant [12 x i8] c"stringReader", align 1
@"*_llgo_main.stringReader" = global ptr null, align 8
@"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE" = linkonce global ptr null, align 8
@_llgo_main.errorString = global ptr null, align 8
@"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null, align 8
@30 = private unnamed_addr constant [11 x i8] c"errorString", align 1
@"*_llgo_main.errorString" = global ptr null, align 8
@"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null, align 8
@18 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1
@19 = private unnamed_addr constant [37 x i8] c"stringsReader.ReadAt: negative offset", align 1
@20 = private unnamed_addr constant [34 x i8] c"stringsReader.Seek: invalid whence", align 1
@21 = private unnamed_addr constant [37 x i8] c"stringsReader.Seek: negative position", align 1
@22 = private unnamed_addr constant [48 x i8] c"stringsReader.UnreadByte: at beginning of string", align 1
@23 = private unnamed_addr constant [49 x i8] c"strings.Reader.UnreadRune: at beginning of string", align 1
@24 = private unnamed_addr constant [62 x i8] c"strings.Reader.UnreadRune: previous operation was not ReadRune", align 1
@25 = private unnamed_addr constant [48 x i8] c"stringsReader.WriteTo: invalid WriteString count", align 1
@31 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1
@32 = private unnamed_addr constant [37 x i8] c"stringsReader.ReadAt: negative offset", align 1
@33 = private unnamed_addr constant [34 x i8] c"stringsReader.Seek: invalid whence", align 1
@34 = private unnamed_addr constant [37 x i8] c"stringsReader.Seek: negative position", align 1
@35 = private unnamed_addr constant [48 x i8] c"stringsReader.UnreadByte: at beginning of string", align 1
@36 = private unnamed_addr constant [49 x i8] c"strings.Reader.UnreadRune: at beginning of string", align 1
@37 = private unnamed_addr constant [62 x i8] c"strings.Reader.UnreadRune: previous operation was not ReadRune", align 1
@38 = private unnamed_addr constant [48 x i8] c"stringsReader.WriteTo: invalid WriteString count", align 1
define %"github.com/goplus/llgo/internal/runtime.iface" @main.NopCloser(%"github.com/goplus/llgo/internal/runtime.iface" %0) {
_llgo_0:
@@ -570,7 +595,7 @@ _llgo_1: ; preds = %_llgo_0
_llgo_2: ; preds = %_llgo_0
%29 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %29, i32 0, i32 0
store ptr @18, ptr %30, align 8
store ptr @31, ptr %30, align 8
%31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %29, i32 0, i32 1
store i64 21, ptr %31, align 4
%32 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %29, align 8
@@ -697,7 +722,7 @@ _llgo_0:
_llgo_1: ; preds = %_llgo_0
%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 @19, ptr %5, align 8
store ptr @32, ptr %5, align 8
%6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1
store i64 37, ptr %6, align 4
%7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8
@@ -889,7 +914,7 @@ _llgo_6: ; preds = %_llgo_4
_llgo_7: ; preds = %_llgo_6
%16 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 0
store ptr @20, ptr %17, align 8
store ptr @33, ptr %17, align 8
%18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 1
store i64 34, ptr %18, align 4
%19 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %16, align 8
@@ -900,7 +925,7 @@ _llgo_7: ; preds = %_llgo_6
_llgo_8: ; preds = %_llgo_1
%21 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 0
store ptr @21, ptr %22, align 8
store ptr @34, ptr %22, align 8
%23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 1
store i64 37, ptr %23, align 4
%24 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %21, align 8
@@ -934,7 +959,7 @@ _llgo_0:
_llgo_1: ; preds = %_llgo_0
%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 @22, ptr %5, align 8
store ptr @35, ptr %5, align 8
%6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1
store i64 48, ptr %6, align 4
%7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8
@@ -962,7 +987,7 @@ _llgo_0:
_llgo_1: ; preds = %_llgo_0
%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 @23, ptr %5, align 8
store ptr @36, ptr %5, align 8
%6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1
store i64 49, ptr %6, align 4
%7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8
@@ -978,7 +1003,7 @@ _llgo_2: ; preds = %_llgo_0
_llgo_3: ; preds = %_llgo_2
%12 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %12, i32 0, i32 0
store ptr @24, ptr %13, align 8
store ptr @37, ptr %13, align 8
%14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %12, i32 0, i32 1
store i64 62, ptr %14, align 4
%15 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %12, align 8
@@ -1027,7 +1052,7 @@ _llgo_2: ; preds = %_llgo_0
_llgo_3: ; preds = %_llgo_2
%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 @25, ptr %21, align 8
store ptr @38, ptr %21, align 8
%22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 1
store i64 48, ptr %22, align 4
%23 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %20, align 8
@@ -1957,103 +1982,699 @@ _llgo_35: ; preds = %_llgo_34
_llgo_36: ; preds = %_llgo_35, %_llgo_34
%505 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 10)
%506 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %505)
store ptr %506, ptr @"*_llgo_main.stringReader", align 8
%507 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8
%508 = load ptr, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8
%509 = icmp eq ptr %508, null
br i1 %509, label %_llgo_37, label %_llgo_38
store ptr %505, ptr @_llgo_main.stringReader, align 8
%506 = load ptr, ptr @_llgo_string, align 8
%507 = load ptr, ptr @_llgo_int64, align 8
%508 = load ptr, ptr @_llgo_int, align 8
%509 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%510 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %509, i32 0, i32 0
store ptr @18, ptr %510, align 8
%511 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %509, i32 0, i32 1
store i64 1, ptr %511, align 4
%512 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %509, align 8
%513 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%514 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %513, i32 0, i32 0
store ptr null, ptr %514, align 8
%515 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %513, i32 0, i32 1
store i64 0, ptr %515, align 4
%516 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %513, align 8
%517 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %512, ptr %506, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %516, i1 false)
%518 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%519 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %518, i32 0, i32 0
store ptr @19, ptr %519, align 8
%520 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %518, i32 0, i32 1
store i64 1, ptr %520, align 4
%521 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %518, align 8
%522 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%523 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %522, i32 0, i32 0
store ptr null, ptr %523, align 8
%524 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %522, i32 0, i32 1
store i64 0, ptr %524, align 4
%525 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %522, align 8
%526 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %521, ptr %507, i64 16, %"github.com/goplus/llgo/internal/runtime.String" %525, i1 false)
%527 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%528 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %527, i32 0, i32 0
store ptr @20, ptr %528, align 8
%529 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %527, i32 0, i32 1
store i64 8, ptr %529, align 4
%530 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %527, align 8
%531 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%532 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %531, i32 0, i32 0
store ptr null, ptr %532, align 8
%533 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %531, i32 0, i32 1
store i64 0, ptr %533, align 4
%534 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %531, align 8
%535 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %530, ptr %508, i64 24, %"github.com/goplus/llgo/internal/runtime.String" %534, i1 false)
%536 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%537 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %536, i32 0, i32 0
store ptr @1, ptr %537, align 8
%538 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %536, i32 0, i32 1
store i64 4, ptr %538, align 4
%539 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %536, align 8
%540 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 168)
%541 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %540, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %517, ptr %541, align 8
%542 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %540, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %526, ptr %542, align 8
%543 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %540, i64 2
store %"github.com/goplus/llgo/internal/abi.StructField" %535, ptr %543, align 8
%544 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%545 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %544, i32 0, i32 0
store ptr %540, ptr %545, align 8
%546 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %544, i32 0, i32 1
store i64 3, ptr %546, align 4
%547 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %544, i32 0, i32 2
store i64 3, ptr %547, align 4
%548 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %544, align 8
%549 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %539, i64 32, %"github.com/goplus/llgo/internal/runtime.Slice" %548)
store ptr %549, ptr @"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk", align 8
%550 = load ptr, ptr @"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk", align 8
%551 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%552 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %551, i32 0, i32 0
store ptr @21, ptr %552, align 8
%553 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %551, i32 0, i32 1
store i64 3, ptr %553, align 4
%554 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %551, align 8
%555 = load ptr, ptr @_llgo_int, align 8
%556 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%557 = icmp eq ptr %556, null
br i1 %557, label %_llgo_37, label %_llgo_38
_llgo_37: ; preds = %_llgo_36
%510 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%511 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %510, i32 0, i32 0
store ptr @7, ptr %511, align 8
%512 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %510, i32 0, i32 1
store i64 4, ptr %512, align 4
%513 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %510, align 8
%514 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%515 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %514, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %513, ptr %515, align 8
%516 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %514, i32 0, i32 1
store ptr %507, ptr %516, align 8
%517 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %514, align 8
%518 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24)
%519 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %518, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %517, ptr %519, align 8
%520 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%521 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %520, i32 0, i32 0
store ptr %518, ptr %521, align 8
%522 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %520, i32 0, i32 1
store i64 1, ptr %522, align 4
%523 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %520, i32 0, i32 2
store i64 1, ptr %523, align 4
%524 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %520, align 8
%525 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%526 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %525, i32 0, i32 0
store ptr @1, ptr %526, align 8
%527 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %525, i32 0, i32 1
store i64 4, ptr %527, align 4
%528 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %525, align 8
%529 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%530 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %529, i32 0, i32 0
store ptr null, ptr %530, align 8
%531 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %529, i32 0, i32 1
store i64 0, ptr %531, align 4
%532 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %529, align 8
%533 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %528, %"github.com/goplus/llgo/internal/runtime.String" %532, %"github.com/goplus/llgo/internal/runtime.Slice" %524)
store ptr %533, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8
%558 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%559 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%560 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %559, i32 0, i32 0
store ptr %558, ptr %560, align 8
%561 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %559, i32 0, i32 1
store i64 0, ptr %561, align 4
%562 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %559, i32 0, i32 2
store i64 0, ptr %562, align 4
%563 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %559, align 8
%564 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8)
%565 = getelementptr ptr, ptr %564, i64 0
store ptr %555, ptr %565, align 8
%566 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%567 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %566, i32 0, i32 0
store ptr %564, ptr %567, align 8
%568 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %566, i32 0, i32 1
store i64 1, ptr %568, align 4
%569 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %566, i32 0, i32 2
store i64 1, ptr %569, align 4
%570 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %566, align 8
%571 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %563, %"github.com/goplus/llgo/internal/runtime.Slice" %570, i1 false)
store ptr %571, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
br label %_llgo_38
_llgo_38: ; preds = %_llgo_37, %_llgo_36
%534 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 1)
%535 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %534)
store ptr %535, ptr @"*_llgo_main.errorString", align 8
%536 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
%537 = load ptr, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8
%538 = icmp eq ptr %537, null
br i1 %538, label %_llgo_39, label %_llgo_40
%572 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8
%573 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%574 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %573, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %554, ptr %574, align 8
%575 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %573, i32 0, i32 1
store ptr %572, ptr %575, align 8
%576 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %573, i32 0, i32 2
store ptr @"main.(*stringReader).Len", ptr %576, align 8
%577 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %573, i32 0, i32 3
store ptr @"main.(*stringReader).Len", ptr %577, align 8
%578 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %573, align 8
%579 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%580 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %579, i32 0, i32 0
store ptr @7, ptr %580, align 8
%581 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %579, i32 0, i32 1
store i64 4, ptr %581, align 4
%582 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %579, align 8
%583 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8
%584 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%585 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %584, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %582, ptr %585, align 8
%586 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %584, i32 0, i32 1
store ptr %583, ptr %586, align 8
%587 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %584, i32 0, i32 2
store ptr @"main.(*stringReader).Read", ptr %587, align 8
%588 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %584, i32 0, i32 3
store ptr @"main.(*stringReader).Read", ptr %588, align 8
%589 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %584, align 8
%590 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%591 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %590, i32 0, i32 0
store ptr @22, ptr %591, align 8
%592 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %590, i32 0, i32 1
store i64 6, ptr %592, align 4
%593 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %590, align 8
%594 = load ptr, ptr @"[]_llgo_byte", align 8
%595 = load ptr, ptr @_llgo_int64, align 8
%596 = load ptr, ptr @_llgo_int, align 8
%597 = load ptr, ptr @_llgo_error, align 8
%598 = load ptr, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8
%599 = icmp eq ptr %598, null
br i1 %599, label %_llgo_39, label %_llgo_40
_llgo_39: ; preds = %_llgo_38
%539 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%540 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %539, i32 0, i32 0
store ptr @0, ptr %540, align 8
%541 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %539, i32 0, i32 1
store i64 5, ptr %541, align 4
%542 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %539, align 8
%543 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%544 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %543, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %542, ptr %544, align 8
%545 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %543, i32 0, i32 1
store ptr %536, ptr %545, align 8
%546 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %543, align 8
%547 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24)
%548 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %547, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %546, ptr %548, align 8
%549 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%550 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %549, i32 0, i32 0
store ptr %547, ptr %550, align 8
%551 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %549, i32 0, i32 1
store i64 1, ptr %551, align 4
%552 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %549, i32 0, i32 2
store i64 1, ptr %552, align 4
%553 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %549, align 8
%554 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%555 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %554, i32 0, i32 0
store ptr @1, ptr %555, align 8
%556 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %554, i32 0, i32 1
store i64 4, ptr %556, align 4
%557 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %554, align 8
%558 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%559 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %558, i32 0, i32 0
store ptr null, ptr %559, align 8
%560 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %558, i32 0, i32 1
store i64 0, ptr %560, align 4
%561 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %558, align 8
%562 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %557, %"github.com/goplus/llgo/internal/runtime.String" %561, %"github.com/goplus/llgo/internal/runtime.Slice" %553)
store ptr %562, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8
%600 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
%601 = getelementptr ptr, ptr %600, i64 0
store ptr %594, ptr %601, align 8
%602 = getelementptr ptr, ptr %600, i64 1
store ptr %595, ptr %602, align 8
%603 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%604 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %603, i32 0, i32 0
store ptr %600, ptr %604, align 8
%605 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %603, i32 0, i32 1
store i64 2, ptr %605, align 4
%606 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %603, i32 0, i32 2
store i64 2, ptr %606, align 4
%607 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %603, align 8
%608 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
%609 = getelementptr ptr, ptr %608, i64 0
store ptr %596, ptr %609, align 8
%610 = getelementptr ptr, ptr %608, i64 1
store ptr %597, ptr %610, align 8
%611 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%612 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %611, i32 0, i32 0
store ptr %608, ptr %612, align 8
%613 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %611, i32 0, i32 1
store i64 2, ptr %613, align 4
%614 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %611, i32 0, i32 2
store i64 2, ptr %614, align 4
%615 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %611, align 8
%616 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %607, %"github.com/goplus/llgo/internal/runtime.Slice" %615, i1 false)
store ptr %616, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8
br label %_llgo_40
_llgo_40: ; preds = %_llgo_39, %_llgo_38
%617 = load ptr, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8
%618 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%619 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %618, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %593, ptr %619, align 8
%620 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %618, i32 0, i32 1
store ptr %617, ptr %620, align 8
%621 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %618, i32 0, i32 2
store ptr @"main.(*stringReader).ReadAt", ptr %621, align 8
%622 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %618, i32 0, i32 3
store ptr @"main.(*stringReader).ReadAt", ptr %622, align 8
%623 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %618, align 8
%624 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%625 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %624, i32 0, i32 0
store ptr @23, ptr %625, align 8
%626 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %624, i32 0, i32 1
store i64 8, ptr %626, align 4
%627 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %624, align 8
%628 = load ptr, ptr @_llgo_byte, align 8
%629 = icmp eq ptr %628, null
br i1 %629, label %_llgo_41, label %_llgo_42
_llgo_41: ; preds = %_llgo_40
%630 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8)
%631 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %630, i32 0, i32 6
%632 = load i8, ptr %631, align 1
%633 = or i8 %632, 32
store i8 %633, ptr %631, align 1
store ptr %630, ptr @_llgo_byte, align 8
br label %_llgo_42
_llgo_42: ; preds = %_llgo_41, %_llgo_40
%634 = load ptr, ptr @_llgo_byte, align 8
%635 = load ptr, ptr @_llgo_error, align 8
%636 = load ptr, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8
%637 = icmp eq ptr %636, null
br i1 %637, label %_llgo_43, label %_llgo_44
_llgo_43: ; preds = %_llgo_42
%638 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%639 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%640 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %639, i32 0, i32 0
store ptr %638, ptr %640, align 8
%641 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %639, i32 0, i32 1
store i64 0, ptr %641, align 4
%642 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %639, i32 0, i32 2
store i64 0, ptr %642, align 4
%643 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %639, align 8
%644 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
%645 = getelementptr ptr, ptr %644, i64 0
store ptr %634, ptr %645, align 8
%646 = getelementptr ptr, ptr %644, i64 1
store ptr %635, ptr %646, align 8
%647 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%648 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %647, i32 0, i32 0
store ptr %644, ptr %648, align 8
%649 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %647, i32 0, i32 1
store i64 2, ptr %649, align 4
%650 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %647, i32 0, i32 2
store i64 2, ptr %650, align 4
%651 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %647, align 8
%652 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %643, %"github.com/goplus/llgo/internal/runtime.Slice" %651, i1 false)
store ptr %652, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8
br label %_llgo_44
_llgo_44: ; preds = %_llgo_43, %_llgo_42
%653 = load ptr, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8
%654 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%655 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %654, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %627, ptr %655, align 8
%656 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %654, i32 0, i32 1
store ptr %653, ptr %656, align 8
%657 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %654, i32 0, i32 2
store ptr @"main.(*stringReader).ReadByte", ptr %657, align 8
%658 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %654, i32 0, i32 3
store ptr @"main.(*stringReader).ReadByte", ptr %658, align 8
%659 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %654, align 8
%660 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%661 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %660, i32 0, i32 0
store ptr @24, ptr %661, align 8
%662 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %660, i32 0, i32 1
store i64 8, ptr %662, align 4
%663 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %660, align 8
%664 = load ptr, ptr @_llgo_rune, align 8
%665 = icmp eq ptr %664, null
br i1 %665, label %_llgo_45, label %_llgo_46
_llgo_45: ; preds = %_llgo_44
%666 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5)
%667 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %666, i32 0, i32 6
%668 = load i8, ptr %667, align 1
%669 = or i8 %668, 32
store i8 %669, ptr %667, align 1
store ptr %666, ptr @_llgo_rune, align 8
br label %_llgo_46
_llgo_46: ; preds = %_llgo_45, %_llgo_44
%670 = load ptr, ptr @_llgo_rune, align 8
%671 = load ptr, ptr @_llgo_int, align 8
%672 = load ptr, ptr @_llgo_error, align 8
%673 = load ptr, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8
%674 = icmp eq ptr %673, null
br i1 %674, label %_llgo_47, label %_llgo_48
_llgo_47: ; preds = %_llgo_46
%675 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%676 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%677 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %676, i32 0, i32 0
store ptr %675, ptr %677, align 8
%678 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %676, i32 0, i32 1
store i64 0, ptr %678, align 4
%679 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %676, i32 0, i32 2
store i64 0, ptr %679, align 4
%680 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %676, align 8
%681 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24)
%682 = getelementptr ptr, ptr %681, i64 0
store ptr %670, ptr %682, align 8
%683 = getelementptr ptr, ptr %681, i64 1
store ptr %671, ptr %683, align 8
%684 = getelementptr ptr, ptr %681, i64 2
store ptr %672, ptr %684, align 8
%685 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%686 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %685, i32 0, i32 0
store ptr %681, ptr %686, align 8
%687 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %685, i32 0, i32 1
store i64 3, ptr %687, align 4
%688 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %685, i32 0, i32 2
store i64 3, ptr %688, align 4
%689 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %685, align 8
%690 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %680, %"github.com/goplus/llgo/internal/runtime.Slice" %689, i1 false)
store ptr %690, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8
br label %_llgo_48
_llgo_48: ; preds = %_llgo_47, %_llgo_46
%691 = load ptr, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8
%692 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%693 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %692, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %663, ptr %693, align 8
%694 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %692, i32 0, i32 1
store ptr %691, ptr %694, align 8
%695 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %692, i32 0, i32 2
store ptr @"main.(*stringReader).ReadRune", ptr %695, align 8
%696 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %692, i32 0, i32 3
store ptr @"main.(*stringReader).ReadRune", ptr %696, align 8
%697 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %692, align 8
%698 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%699 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %698, i32 0, i32 0
store ptr @25, ptr %699, align 8
%700 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %698, i32 0, i32 1
store i64 4, ptr %700, align 4
%701 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %698, align 8
%702 = load ptr, ptr @_llgo_int64, align 8
%703 = load ptr, ptr @_llgo_int, align 8
%704 = load ptr, ptr @_llgo_int64, align 8
%705 = load ptr, ptr @_llgo_error, align 8
%706 = load ptr, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8
%707 = icmp eq ptr %706, null
br i1 %707, label %_llgo_49, label %_llgo_50
_llgo_49: ; preds = %_llgo_48
%708 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
%709 = getelementptr ptr, ptr %708, i64 0
store ptr %702, ptr %709, align 8
%710 = getelementptr ptr, ptr %708, i64 1
store ptr %703, ptr %710, align 8
%711 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%712 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %711, i32 0, i32 0
store ptr %708, ptr %712, align 8
%713 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %711, i32 0, i32 1
store i64 2, ptr %713, align 4
%714 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %711, i32 0, i32 2
store i64 2, ptr %714, align 4
%715 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %711, align 8
%716 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16)
%717 = getelementptr ptr, ptr %716, i64 0
store ptr %704, ptr %717, align 8
%718 = getelementptr ptr, ptr %716, i64 1
store ptr %705, ptr %718, align 8
%719 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%720 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %719, i32 0, i32 0
store ptr %716, ptr %720, align 8
%721 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %719, i32 0, i32 1
store i64 2, ptr %721, align 4
%722 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %719, i32 0, i32 2
store i64 2, ptr %722, align 4
%723 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %719, align 8
%724 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %715, %"github.com/goplus/llgo/internal/runtime.Slice" %723, i1 false)
store ptr %724, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8
br label %_llgo_50
_llgo_50: ; preds = %_llgo_49, %_llgo_48
%725 = load ptr, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8
%726 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%727 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %726, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %701, ptr %727, align 8
%728 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %726, i32 0, i32 1
store ptr %725, ptr %728, align 8
%729 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %726, i32 0, i32 2
store ptr @"main.(*stringReader).Seek", ptr %729, align 8
%730 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %726, i32 0, i32 3
store ptr @"main.(*stringReader).Seek", ptr %730, align 8
%731 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %726, align 8
%732 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%733 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %732, i32 0, i32 0
store ptr @26, ptr %733, align 8
%734 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %732, i32 0, i32 1
store i64 4, ptr %734, align 4
%735 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %732, align 8
%736 = load ptr, ptr @_llgo_int64, align 8
%737 = load ptr, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8
%738 = icmp eq ptr %737, null
br i1 %738, label %_llgo_51, label %_llgo_52
_llgo_51: ; preds = %_llgo_50
%739 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%740 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%741 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %740, i32 0, i32 0
store ptr %739, ptr %741, align 8
%742 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %740, i32 0, i32 1
store i64 0, ptr %742, align 4
%743 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %740, i32 0, i32 2
store i64 0, ptr %743, align 4
%744 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %740, align 8
%745 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8)
%746 = getelementptr ptr, ptr %745, i64 0
store ptr %736, ptr %746, align 8
%747 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%748 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %747, i32 0, i32 0
store ptr %745, ptr %748, align 8
%749 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %747, i32 0, i32 1
store i64 1, ptr %749, align 4
%750 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %747, i32 0, i32 2
store i64 1, ptr %750, align 4
%751 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %747, align 8
%752 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %744, %"github.com/goplus/llgo/internal/runtime.Slice" %751, i1 false)
store ptr %752, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8
br label %_llgo_52
_llgo_52: ; preds = %_llgo_51, %_llgo_50
%753 = load ptr, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8
%754 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%755 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %754, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %735, ptr %755, align 8
%756 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %754, i32 0, i32 1
store ptr %753, ptr %756, align 8
%757 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %754, i32 0, i32 2
store ptr @"main.(*stringReader).Size", ptr %757, align 8
%758 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %754, i32 0, i32 3
store ptr @"main.(*stringReader).Size", ptr %758, align 8
%759 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %754, align 8
%760 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%761 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %760, i32 0, i32 0
store ptr @27, ptr %761, align 8
%762 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %760, i32 0, i32 1
store i64 10, ptr %762, align 4
%763 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %760, align 8
%764 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8
%765 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%766 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %765, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %763, ptr %766, align 8
%767 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %765, i32 0, i32 1
store ptr %764, ptr %767, align 8
%768 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %765, i32 0, i32 2
store ptr @"main.(*stringReader).UnreadByte", ptr %768, align 8
%769 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %765, i32 0, i32 3
store ptr @"main.(*stringReader).UnreadByte", ptr %769, align 8
%770 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %765, align 8
%771 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%772 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %771, i32 0, i32 0
store ptr @28, ptr %772, align 8
%773 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %771, i32 0, i32 1
store i64 10, ptr %773, align 4
%774 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %771, align 8
%775 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8
%776 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%777 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %776, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %774, ptr %777, align 8
%778 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %776, i32 0, i32 1
store ptr %775, ptr %778, align 8
%779 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %776, i32 0, i32 2
store ptr @"main.(*stringReader).UnreadRune", ptr %779, align 8
%780 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %776, i32 0, i32 3
store ptr @"main.(*stringReader).UnreadRune", ptr %780, align 8
%781 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %776, align 8
%782 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%783 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %782, i32 0, i32 0
store ptr @5, ptr %783, align 8
%784 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %782, i32 0, i32 1
store i64 7, ptr %784, align 4
%785 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %782, align 8
%786 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8
%787 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%788 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %787, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %785, ptr %788, align 8
%789 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %787, i32 0, i32 1
store ptr %786, ptr %789, align 8
%790 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %787, i32 0, i32 2
store ptr @"main.(*stringReader).WriteTo", ptr %790, align 8
%791 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %787, i32 0, i32 3
store ptr @"main.(*stringReader).WriteTo", ptr %791, align 8
%792 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %787, align 8
%793 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 400)
%794 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %578, ptr %794, align 8
%795 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 1
store %"github.com/goplus/llgo/internal/abi.Method" %589, ptr %795, align 8
%796 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 2
store %"github.com/goplus/llgo/internal/abi.Method" %623, ptr %796, align 8
%797 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 3
store %"github.com/goplus/llgo/internal/abi.Method" %659, ptr %797, align 8
%798 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 4
store %"github.com/goplus/llgo/internal/abi.Method" %697, ptr %798, align 8
%799 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 5
store %"github.com/goplus/llgo/internal/abi.Method" %731, ptr %799, align 8
%800 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 6
store %"github.com/goplus/llgo/internal/abi.Method" %759, ptr %800, align 8
%801 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 7
store %"github.com/goplus/llgo/internal/abi.Method" %770, ptr %801, align 8
%802 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 8
store %"github.com/goplus/llgo/internal/abi.Method" %781, ptr %802, align 8
%803 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 9
store %"github.com/goplus/llgo/internal/abi.Method" %792, ptr %803, align 8
%804 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%805 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %804, i32 0, i32 0
store ptr %793, ptr %805, align 8
%806 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %804, i32 0, i32 1
store i64 10, ptr %806, align 4
%807 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %804, i32 0, i32 2
store i64 10, ptr %807, align 4
%808 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %804, align 8
%809 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%810 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %809, i32 0, i32 0
store ptr @1, ptr %810, align 8
%811 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %809, i32 0, i32 1
store i64 4, ptr %811, align 4
%812 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %809, align 8
%813 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%814 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %813, i32 0, i32 0
store ptr @29, ptr %814, align 8
%815 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %813, i32 0, i32 1
store i64 12, ptr %815, align 4
%816 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %813, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %505, %"github.com/goplus/llgo/internal/runtime.String" %812, %"github.com/goplus/llgo/internal/runtime.String" %816, ptr %550, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %808)
%817 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %505)
store ptr %817, ptr @"*_llgo_main.stringReader", align 8
%818 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8
%819 = load ptr, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8
%820 = icmp eq ptr %819, null
br i1 %820, label %_llgo_53, label %_llgo_54
_llgo_53: ; preds = %_llgo_52
%821 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%822 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %821, i32 0, i32 0
store ptr @7, ptr %822, align 8
%823 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %821, i32 0, i32 1
store i64 4, ptr %823, align 4
%824 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %821, align 8
%825 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%826 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %825, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %824, ptr %826, align 8
%827 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %825, i32 0, i32 1
store ptr %818, ptr %827, align 8
%828 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %825, align 8
%829 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24)
%830 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %829, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %828, ptr %830, align 8
%831 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%832 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %831, i32 0, i32 0
store ptr %829, ptr %832, align 8
%833 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %831, i32 0, i32 1
store i64 1, ptr %833, align 4
%834 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %831, i32 0, i32 2
store i64 1, ptr %834, align 4
%835 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %831, align 8
%836 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%837 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %836, i32 0, i32 0
store ptr @1, ptr %837, align 8
%838 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %836, i32 0, i32 1
store i64 4, ptr %838, align 4
%839 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %836, align 8
%840 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%841 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %840, i32 0, i32 0
store ptr null, ptr %841, align 8
%842 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %840, i32 0, i32 1
store i64 0, ptr %842, align 4
%843 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %840, align 8
%844 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %839, %"github.com/goplus/llgo/internal/runtime.String" %843, %"github.com/goplus/llgo/internal/runtime.Slice" %835)
store ptr %844, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8
br label %_llgo_54
_llgo_54: ; preds = %_llgo_53, %_llgo_52
%845 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 1)
store ptr %845, ptr @_llgo_main.errorString, align 8
%846 = load ptr, ptr @_llgo_string, align 8
%847 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%848 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %847, i32 0, i32 0
store ptr @18, ptr %848, align 8
%849 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %847, i32 0, i32 1
store i64 1, ptr %849, align 4
%850 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %847, align 8
%851 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%852 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %851, i32 0, i32 0
store ptr null, ptr %852, align 8
%853 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %851, i32 0, i32 1
store i64 0, ptr %853, align 4
%854 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %851, align 8
%855 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %850, ptr %846, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %854, i1 false)
%856 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%857 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %856, i32 0, i32 0
store ptr @1, ptr %857, align 8
%858 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %856, i32 0, i32 1
store i64 4, ptr %858, align 4
%859 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %856, align 8
%860 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56)
%861 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %860, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %855, ptr %861, align 8
%862 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%863 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %862, i32 0, i32 0
store ptr %860, ptr %863, align 8
%864 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %862, i32 0, i32 1
store i64 1, ptr %864, align 4
%865 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %862, i32 0, i32 2
store i64 1, ptr %865, align 4
%866 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %862, align 8
%867 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %859, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %866)
store ptr %867, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8
%868 = load ptr, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8
%869 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%870 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %869, i32 0, i32 0
store ptr @0, ptr %870, align 8
%871 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %869, i32 0, i32 1
store i64 5, ptr %871, align 4
%872 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %869, align 8
%873 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
%874 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%875 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %874, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %872, ptr %875, align 8
%876 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %874, i32 0, i32 1
store ptr %873, ptr %876, align 8
%877 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %874, i32 0, i32 2
store ptr @"main.(*errorString).Error", ptr %877, align 8
%878 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %874, i32 0, i32 3
store ptr @"main.(*errorString).Error", ptr %878, align 8
%879 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %874, align 8
%880 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%881 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %880, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %879, ptr %881, align 8
%882 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%883 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %882, i32 0, i32 0
store ptr %880, ptr %883, align 8
%884 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %882, i32 0, i32 1
store i64 1, ptr %884, align 4
%885 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %882, i32 0, i32 2
store i64 1, ptr %885, align 4
%886 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %882, align 8
%887 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%888 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %887, i32 0, i32 0
store ptr @1, ptr %888, align 8
%889 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %887, i32 0, i32 1
store i64 4, ptr %889, align 4
%890 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %887, align 8
%891 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%892 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %891, i32 0, i32 0
store ptr @30, ptr %892, align 8
%893 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %891, i32 0, i32 1
store i64 11, ptr %893, align 4
%894 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %891, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %845, %"github.com/goplus/llgo/internal/runtime.String" %890, %"github.com/goplus/llgo/internal/runtime.String" %894, ptr %868, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %886)
%895 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %845)
store ptr %895, ptr @"*_llgo_main.errorString", align 8
%896 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8
%897 = load ptr, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8
%898 = icmp eq ptr %897, null
br i1 %898, label %_llgo_55, label %_llgo_56
_llgo_55: ; preds = %_llgo_54
%899 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%900 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %899, i32 0, i32 0
store ptr @0, ptr %900, align 8
%901 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %899, i32 0, i32 1
store i64 5, ptr %901, align 4
%902 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %899, align 8
%903 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8
%904 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %903, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %902, ptr %904, align 8
%905 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %903, i32 0, i32 1
store ptr %896, ptr %905, align 8
%906 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %903, align 8
%907 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24)
%908 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %907, i64 0
store %"github.com/goplus/llgo/internal/abi.Imethod" %906, ptr %908, align 8
%909 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%910 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %909, i32 0, i32 0
store ptr %907, ptr %910, align 8
%911 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %909, i32 0, i32 1
store i64 1, ptr %911, align 4
%912 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %909, i32 0, i32 2
store i64 1, ptr %912, align 4
%913 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %909, align 8
%914 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%915 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %914, i32 0, i32 0
store ptr @1, ptr %915, align 8
%916 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %914, i32 0, i32 1
store i64 4, ptr %916, align 4
%917 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %914, align 8
%918 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%919 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %918, i32 0, i32 0
store ptr null, ptr %919, align 8
%920 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %918, i32 0, i32 1
store i64 0, ptr %920, align 4
%921 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %918, align 8
%922 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %917, %"github.com/goplus/llgo/internal/runtime.String" %921, %"github.com/goplus/llgo/internal/runtime.Slice" %913)
store ptr %922, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8
br label %_llgo_56
_llgo_56: ; preds = %_llgo_55, %_llgo_54
ret void
}

View File

@@ -13,6 +13,7 @@ source_filename = "main"
@"main.init$guard" = global i1 false, align 1
@"_llgo_github.com/goplus/llgo/cl/internal/foo.Foo" = linkonce global ptr null, align 8
@"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs" = global ptr null, align 8
@_llgo_byte = linkonce global ptr null, align 8
@"*_llgo_byte" = linkonce global ptr null, align 8
@_llgo_float32 = linkonce global ptr null, align 8
@0 = private unnamed_addr constant [2 x i8] c"pb", align 1
@@ -190,254 +191,268 @@ _llgo_1: ; preds = %_llgo_0
br label %_llgo_2
_llgo_2: ; preds = %_llgo_1, %_llgo_0
%3 = load ptr, ptr @"*_llgo_byte", align 8
%3 = load ptr, ptr @_llgo_byte, 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 8)
%6 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %5)
store ptr %6, ptr @"*_llgo_byte", align 8
%6 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %5, i32 0, i32 6
%7 = load i8, ptr %6, align 1
%8 = or i8 %7, 32
store i8 %8, ptr %6, align 1
store ptr %5, ptr @_llgo_byte, align 8
br label %_llgo_4
_llgo_4: ; preds = %_llgo_3, %_llgo_2
%7 = load ptr, ptr @"*_llgo_byte", align 8
%8 = load ptr, ptr @_llgo_float32, align 8
%9 = icmp eq ptr %8, null
br i1 %9, label %_llgo_5, label %_llgo_6
%9 = load ptr, ptr @"*_llgo_byte", align 8
%10 = icmp eq ptr %9, null
br i1 %10, label %_llgo_5, label %_llgo_6
_llgo_5: ; preds = %_llgo_4
%10 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13)
%11 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %10, i32 0, i32 6
%12 = load i8, ptr %11, align 1
%13 = or i8 %12, 32
store i8 %13, ptr %11, align 1
store ptr %10, ptr @_llgo_float32, align 8
%11 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8)
%12 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %11)
store ptr %12, ptr @"*_llgo_byte", align 8
br label %_llgo_6
_llgo_6: ; preds = %_llgo_5, %_llgo_4
%13 = load ptr, ptr @"*_llgo_byte", align 8
%14 = load ptr, ptr @_llgo_float32, align 8
%15 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %15, i32 0, i32 0
store ptr @0, ptr %16, align 8
%17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %15, i32 0, i32 1
store i64 2, ptr %17, align 4
%18 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %15, align 8
%19 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%20 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %19, i32 0, i32 0
store ptr null, ptr %20, align 8
%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 %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %18, ptr %7, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %22, i1 false)
%24 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%25 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 0
store ptr @1, ptr %25, align 8
%26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 1
store i64 1, ptr %26, align 4
%27 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %24, align 8
%28 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %28, i32 0, i32 0
store ptr null, ptr %29, align 8
%30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %28, i32 0, i32 1
store i64 0, ptr %30, align 4
%31 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %28, align 8
%32 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %27, ptr %14, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %31, i1 false)
%33 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %33, i32 0, i32 0
store ptr @2, ptr %34, align 8
%35 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %33, i32 0, i32 1
store i64 4, ptr %35, align 4
%36 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %33, align 8
%37 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112)
%38 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %37, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %23, ptr %38, align 8
%39 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %37, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %32, ptr %39, align 8
%40 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %40, i32 0, i32 0
store ptr %37, ptr %41, align 8
%42 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %40, i32 0, i32 1
store i64 2, ptr %42, align 4
%43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %40, i32 0, i32 2
store i64 2, ptr %43, align 4
%44 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %40, align 8
%45 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %36, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %44)
store ptr %45, ptr @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs", align 8
%46 = load ptr, ptr @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs", align 8
br i1 %1, label %_llgo_7, label %_llgo_8
%15 = icmp eq ptr %14, null
br i1 %15, label %_llgo_7, label %_llgo_8
_llgo_7: ; preds = %_llgo_6
%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
store ptr @3, ptr %48, align 8
%49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %47, i32 0, i32 1
store i64 2, ptr %49, align 4
%50 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %47, align 8
%51 = load ptr, ptr @"*_llgo_byte", align 8
%52 = load ptr, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8
%53 = icmp eq ptr %52, null
br i1 %53, label %_llgo_9, label %_llgo_10
%16 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13)
%17 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %16, i32 0, i32 6
%18 = load i8, ptr %17, align 1
%19 = or i8 %18, 32
store i8 %19, ptr %17, align 1
store ptr %16, ptr @_llgo_float32, align 8
br label %_llgo_8
_llgo_8: ; preds = %_llgo_10, %_llgo_6
%54 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 0)
store ptr %54, ptr @_llgo_main.bar, align 8
%55 = load ptr, ptr @"*_llgo_byte", align 8
%56 = load ptr, ptr @_llgo_float32, align 8
%57 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%58 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %57, i32 0, i32 0
store ptr @0, ptr %58, align 8
%59 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %57, i32 0, i32 1
store i64 2, ptr %59, align 4
%60 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %57, align 8
%61 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%62 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %61, i32 0, i32 0
store ptr null, ptr %62, align 8
%63 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %61, i32 0, i32 1
store i64 0, ptr %63, align 4
%64 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %61, align 8
%65 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %60, ptr %55, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %64, i1 false)
%66 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%67 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 0
store ptr @6, ptr %67, align 8
%68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 1
store i64 1, ptr %68, align 4
%69 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %66, align 8
%70 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %70, i32 0, i32 0
store ptr null, ptr %71, align 8
%72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %70, i32 0, i32 1
store i64 0, ptr %72, align 4
%73 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %70, align 8
%74 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %69, ptr %56, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %73, i1 false)
%75 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%76 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %75, i32 0, i32 0
store ptr @2, ptr %76, align 8
%77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %75, i32 0, i32 1
store i64 4, ptr %77, align 4
%78 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %75, align 8
%79 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112)
%80 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %79, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %65, ptr %80, align 8
%81 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %79, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %74, ptr %81, align 8
%82 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%83 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %82, i32 0, i32 0
store ptr %79, ptr %83, align 8
%84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %82, i32 0, i32 1
store i64 2, ptr %84, align 4
%85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %82, i32 0, i32 2
store i64 2, ptr %85, align 4
%86 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %82, align 8
%87 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %78, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %86)
store ptr %87, ptr @"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo", align 8
%88 = load ptr, ptr @"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo", align 8
%89 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%90 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %89, i32 0, i32 0
store ptr @2, ptr %90, align 8
%91 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %89, i32 0, i32 1
store i64 4, ptr %91, align 4
%92 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %89, align 8
%93 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %93, i32 0, i32 0
store ptr @7, ptr %94, align 8
%95 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %93, i32 0, i32 1
store i64 3, ptr %95, align 4
%96 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %93, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %54, %"github.com/goplus/llgo/internal/runtime.String" %92, %"github.com/goplus/llgo/internal/runtime.String" %96, ptr %88, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
_llgo_8: ; preds = %_llgo_7, %_llgo_6
%20 = load ptr, ptr @_llgo_float32, align 8
%21 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 0
store ptr @0, ptr %22, align 8
%23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 1
store i64 2, ptr %23, align 4
%24 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %21, align 8
%25 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %25, i32 0, i32 0
store ptr null, ptr %26, align 8
%27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %25, i32 0, i32 1
store i64 0, ptr %27, align 4
%28 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %25, align 8
%29 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %24, ptr %13, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %28, i1 false)
%30 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %30, i32 0, i32 0
store ptr @1, ptr %31, align 8
%32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %30, i32 0, i32 1
store i64 1, ptr %32, align 4
%33 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %30, align 8
%34 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%35 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %34, i32 0, i32 0
store ptr null, ptr %35, align 8
%36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %34, i32 0, i32 1
store i64 0, ptr %36, align 4
%37 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %34, align 8
%38 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %33, ptr %20, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %37, i1 false)
%39 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%40 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %39, i32 0, i32 0
store ptr @2, ptr %40, align 8
%41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %39, i32 0, i32 1
store i64 4, ptr %41, align 4
%42 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %39, align 8
%43 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112)
%44 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %43, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %29, ptr %44, align 8
%45 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %43, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %38, ptr %45, align 8
%46 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%47 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 0
store ptr %43, ptr %47, align 8
%48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 1
store i64 2, ptr %48, align 4
%49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 2
store i64 2, ptr %49, align 4
%50 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, align 8
%51 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %42, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %50)
store ptr %51, ptr @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs", align 8
%52 = load ptr, ptr @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs", align 8
br i1 %1, label %_llgo_9, label %_llgo_10
_llgo_9: ; preds = %_llgo_8
%53 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %53, i32 0, i32 0
store ptr @3, ptr %54, align 8
%55 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %53, i32 0, i32 1
store i64 2, ptr %55, align 4
%56 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %53, align 8
%57 = load ptr, ptr @"*_llgo_byte", align 8
%58 = load ptr, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8
%59 = icmp eq ptr %58, null
br i1 %59, label %_llgo_11, label %_llgo_12
_llgo_10: ; preds = %_llgo_12, %_llgo_8
%60 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 0)
store ptr %60, ptr @_llgo_main.bar, align 8
%61 = load ptr, ptr @"*_llgo_byte", align 8
%62 = load ptr, ptr @_llgo_float32, align 8
%63 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %63, i32 0, i32 0
store ptr @0, ptr %64, align 8
%65 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %63, i32 0, i32 1
store i64 2, ptr %65, align 4
%66 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %63, align 8
%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 null, ptr %68, align 8
%69 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %67, i32 0, i32 1
store i64 0, ptr %69, align 4
%70 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %67, align 8
%71 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %66, ptr %61, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %70, i1 false)
%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 @6, 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 %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %75, ptr %62, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %79, i1 false)
%81 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%82 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %81, i32 0, i32 0
store ptr @2, ptr %82, align 8
%83 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %81, i32 0, i32 1
store i64 4, ptr %83, align 4
%84 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %81, align 8
%85 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112)
%86 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %85, i64 0
store %"github.com/goplus/llgo/internal/abi.StructField" %71, ptr %86, align 8
%87 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %85, i64 1
store %"github.com/goplus/llgo/internal/abi.StructField" %80, ptr %87, align 8
%88 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%89 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %88, i32 0, i32 0
store ptr %85, ptr %89, align 8
%90 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %88, i32 0, i32 1
store i64 2, ptr %90, align 4
%91 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %88, i32 0, i32 2
store i64 2, ptr %91, align 4
%92 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %88, align 8
%93 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %84, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %92)
store ptr %93, ptr @"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo", align 8
%94 = load ptr, ptr @"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo", align 8
%95 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%96 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %95, i32 0, i32 0
store ptr @2, ptr %96, align 8
%97 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %95, i32 0, i32 1
store i64 4, ptr %97, align 4
%98 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %95, align 8
%99 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %99, i32 0, i32 0
store ptr @7, ptr %100, align 8
%101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %99, i32 0, i32 1
store i64 3, ptr %101, align 4
%102 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %99, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %60, %"github.com/goplus/llgo/internal/runtime.String" %98, %"github.com/goplus/llgo/internal/runtime.String" %102, ptr %94, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
ret void
_llgo_9: ; preds = %_llgo_7
%97 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%98 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%99 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, i32 0, i32 0
store ptr %97, ptr %99, align 8
%100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, i32 0, i32 1
store i64 0, ptr %100, align 4
%101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, i32 0, i32 2
store i64 0, ptr %101, align 4
%102 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, align 8
%103 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8)
%104 = getelementptr ptr, ptr %103, i64 0
store ptr %51, ptr %104, align 8
%105 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%106 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %105, i32 0, i32 0
store ptr %103, ptr %106, align 8
%107 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %105, i32 0, i32 1
store i64 1, ptr %107, align 4
%108 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %105, i32 0, i32 2
store i64 1, ptr %108, align 4
%109 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %105, align 8
%110 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %102, %"github.com/goplus/llgo/internal/runtime.Slice" %109, i1 false)
store ptr %110, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8
br label %_llgo_10
_llgo_11: ; preds = %_llgo_9
%103 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0)
%104 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%105 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %104, i32 0, i32 0
store ptr %103, ptr %105, align 8
%106 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %104, i32 0, i32 1
store i64 0, ptr %106, align 4
%107 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %104, i32 0, i32 2
store i64 0, ptr %107, align 4
%108 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %104, align 8
%109 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8)
%110 = getelementptr ptr, ptr %109, i64 0
store ptr %57, ptr %110, align 8
%111 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%112 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %111, i32 0, i32 0
store ptr %109, ptr %112, align 8
%113 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %111, i32 0, i32 1
store i64 1, ptr %113, align 4
%114 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %111, i32 0, i32 2
store i64 1, ptr %114, align 4
%115 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %111, align 8
%116 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %108, %"github.com/goplus/llgo/internal/runtime.Slice" %115, i1 false)
store ptr %116, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8
br label %_llgo_12
_llgo_10: ; preds = %_llgo_9, %_llgo_7
%111 = load ptr, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8
%112 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%113 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %112, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %50, ptr %113, align 8
%114 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %112, i32 0, i32 1
store ptr %111, ptr %114, align 8
%115 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %112, i32 0, i32 2
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Foo).Pb", ptr %115, align 8
%116 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %112, i32 0, i32 3
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Foo).Pb", ptr %116, align 8
%117 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %112, align 8
_llgo_12: ; preds = %_llgo_11, %_llgo_9
%117 = load ptr, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8
%118 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%119 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %118, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %50, ptr %119, align 8
store %"github.com/goplus/llgo/internal/runtime.String" %56, ptr %119, align 8
%120 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %118, i32 0, i32 1
store ptr %111, ptr %120, align 8
store ptr %117, ptr %120, align 8
%121 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %118, i32 0, i32 2
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Foo).Pb", ptr %121, align 8
%122 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %118, i32 0, i32 3
store ptr @"github.com/goplus/llgo/cl/internal/foo.Foo.Pb", ptr %122, align 8
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Foo).Pb", ptr %122, align 8
%123 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %118, align 8
%124 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%125 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %123, ptr %125, align 8
%126 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%127 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 0
store ptr %124, ptr %127, align 8
%128 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 1
store i64 1, ptr %128, align 4
%129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 2
store i64 1, ptr %129, align 4
%130 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, 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" %117, 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
%124 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8
%125 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i32 0, i32 0
store %"github.com/goplus/llgo/internal/runtime.String" %56, ptr %125, align 8
%126 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i32 0, i32 1
store ptr %117, ptr %126, align 8
%127 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i32 0, i32 2
store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Foo).Pb", ptr %127, align 8
%128 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i32 0, i32 3
store ptr @"github.com/goplus/llgo/cl/internal/foo.Foo.Pb", ptr %128, align 8
%129 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %124, align 8
%130 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%131 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %130, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %129, ptr %131, align 8
%132 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%133 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, i32 0, i32 0
store ptr %130, ptr %133, align 8
%134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, i32 0, i32 1
store i64 1, ptr %134, align 4
%135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, i32 0, i32 2
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 @4, ptr %139, align 8
%140 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %138, i32 0, i32 1
store i64 38, 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 @5, ptr %143, align 8
%144 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %142, i32 0, i32 1
store i64 3, 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 %2, %"github.com/goplus/llgo/internal/runtime.String" %141, %"github.com/goplus/llgo/internal/runtime.String" %145, ptr %46, %"github.com/goplus/llgo/internal/runtime.Slice" %130, %"github.com/goplus/llgo/internal/runtime.Slice" %137)
br label %_llgo_8
%136 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, align 8
%137 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40)
%138 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %137, i64 0
store %"github.com/goplus/llgo/internal/abi.Method" %123, ptr %138, align 8
%139 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8
%140 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, i32 0, i32 0
store ptr %137, ptr %140, align 8
%141 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, i32 0, i32 1
store i64 1, ptr %141, align 4
%142 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, i32 0, i32 2
store i64 1, ptr %142, align 4
%143 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, align 8
%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 @4, ptr %145, align 8
%146 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %144, i32 0, i32 1
store i64 38, ptr %146, align 4
%147 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %144, align 8
%148 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
%149 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %148, i32 0, i32 0
store ptr @5, ptr %149, align 8
%150 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %148, i32 0, i32 1
store i64 3, ptr %150, align 4
%151 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %148, align 8
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %2, %"github.com/goplus/llgo/internal/runtime.String" %147, %"github.com/goplus/llgo/internal/runtime.String" %151, ptr %52, %"github.com/goplus/llgo/internal/runtime.Slice" %136, %"github.com/goplus/llgo/internal/runtime.Slice" %143)
br label %_llgo_10
}
declare ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64, i64, i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String", i64, %"github.com/goplus/llgo/internal/runtime.Slice")
declare %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1)

56
cl/_testrt/abinamed/in.go Normal file
View File

@@ -0,0 +1,56 @@
package main
import (
"unsafe"
"github.com/goplus/llgo/internal/abi"
)
type T struct {
p *T
t *abi.Type
n uintptr
a []T
}
type eface struct {
typ *abi.Type
data unsafe.Pointer
}
func toEface(i any) *eface {
return (*eface)(unsafe.Pointer(&i))
}
func main() {
e := toEface(T{})
e2 := toEface(abi.Type{})
println(e.typ)
println(e.typ.PtrToThis_)
println(e2.typ)
println(e2.typ.PtrToThis_)
f0 := e.typ.StructType().Fields[0]
if f0.Typ != e.typ.PtrToThis_ {
panic("error field 0")
}
if f0.Typ.Elem() != e.typ {
panic("error field 0 elem")
}
f1 := e.typ.StructType().Fields[1]
if f1.Typ != e2.typ.PtrToThis_ {
panic("error field 1")
}
if f1.Typ.Elem() != e2.typ {
panic("error field 1 elem")
}
f2 := e.typ.StructType().Fields[2]
if f2.Typ != e2.typ.StructType().Fields[0].Typ {
panic("error field 2")
}
f3 := e.typ.StructType().Fields[3]
if f3.Typ.Elem() != e.typ {
panic("error field 3")
}
}

4992
cl/_testrt/abinamed/out.ll Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -6,6 +6,7 @@ source_filename = "main"
%"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
@"*_llgo_int8" = linkonce global ptr null, align 8
@0 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1
@_llgo_string = linkonce global ptr null, align 8
@@ -121,48 +122,62 @@ _llgo_0:
define void @"main.init$after"() {
_llgo_0:
%0 = load ptr, ptr @"*_llgo_int8", align 8
%0 = load ptr, ptr @_llgo_int8, 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.Basic"(i64 3)
%3 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %2)
store ptr %3, ptr @"*_llgo_int8", align 8
%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
store ptr %2, ptr @_llgo_int8, align 8
br label %_llgo_2
_llgo_2: ; preds = %_llgo_1, %_llgo_0
%4 = load ptr, ptr @_llgo_string, align 8
%5 = icmp eq ptr %4, null
br i1 %5, label %_llgo_3, label %_llgo_4
%6 = load ptr, ptr @"*_llgo_int8", align 8
%7 = icmp eq ptr %6, null
br i1 %7, label %_llgo_3, label %_llgo_4
_llgo_3: ; preds = %_llgo_2
%6 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
store ptr %6, ptr @_llgo_string, align 8
%8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
%9 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %8)
store ptr %9, ptr @"*_llgo_int8", align 8
br label %_llgo_4
_llgo_4: ; preds = %_llgo_3, %_llgo_2
%7 = load ptr, ptr @_llgo_int, align 8
%8 = icmp eq ptr %7, null
br i1 %8, label %_llgo_5, label %_llgo_6
%10 = load ptr, ptr @_llgo_string, align 8
%11 = icmp eq ptr %10, null
br i1 %11, label %_llgo_5, label %_llgo_6
_llgo_5: ; preds = %_llgo_4
%9 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
%10 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %9, i32 0, i32 6
%11 = load i8, ptr %10, align 1
%12 = or i8 %11, 32
store i8 %12, ptr %10, align 1
store ptr %9, ptr @_llgo_int, align 8
%12 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
store ptr %12, 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
_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
br label %_llgo_8
_llgo_8: ; preds = %_llgo_7, %_llgo_6
ret void
}
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr)
declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64)
declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(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

@@ -185,15 +185,24 @@ func (b Builder) abiInterfaceOf(pkgPath string, name string, t *types.Interface)
// func NewNamed(kind abi.Kind, methods, ptrMethods int)
func (b Builder) abiNamedOf(t *types.Named) func() Expr {
return func() Expr {
pkg := b.Pkg
tunder := t.Underlying()
kind := int(abi.UnderlyingKind(tunder))
numMethods, numPtrMethods := b.abiMethods(t)
newNamed := pkg.rtFunc("NewNamed")
return b.Call(newNamed, b.Prog.Val(kind), b.Prog.Val(numMethods), b.Prog.Val(numPtrMethods))
return b.abiNamed(t)
}
}
func (b Builder) abiNamed(t *types.Named) Expr {
if expr, ok := b.Pkg.named[t]; ok {
return expr
}
pkg := b.Pkg
tunder := t.Underlying()
kind := int(abi.UnderlyingKind(tunder))
numMethods, numPtrMethods := b.abiMethods(t)
newNamed := pkg.rtFunc("NewNamed")
expr := b.Call(newNamed, b.Prog.Val(kind), b.Prog.Val(numMethods), b.Prog.Val(numPtrMethods))
b.Pkg.named[t] = expr
return expr
}
// func InitNamed(ret *Type, pkgPath, name string, underlying *Type, methods, ptrMethods []Method)
func (b Builder) abiInitNamed(ret Expr, t *types.Named) func() Expr {
under := b.abiType(t.Underlying())
@@ -359,6 +368,15 @@ func (p Package) abiTypeInit(g Global, t types.Type, pub bool) {
// abiType returns the abi type of the specified type.
func (b Builder) abiType(t types.Type) Expr {
switch t := t.(type) {
case *types.Pointer:
b.loadType(t.Elem())
}
g := b.loadType(t)
return b.Load(g.Expr)
}
func (b Builder) loadType(t types.Type) Global {
pkg := b.Pkg
name, pub := pkg.abi.TypeName(t)
g := pkg.VarOf(name)
@@ -371,7 +389,7 @@ func (b Builder) abiType(t types.Type) Expr {
}
pkg.abiTypeInit(g, t, pub)
}
return b.Load(g.Expr)
return g
}
// -----------------------------------------------------------------------------

View File

@@ -316,12 +316,13 @@ func (p Program) NewPackage(name, pkgPath string) Package {
pyobjs := make(map[string]PyObjRef)
pymods := make(map[string]Global)
strs := make(map[string]llvm.Value)
named := make(map[types.Type]Expr)
p.NeedRuntime = false
// Don't need reset p.needPyInit here
// p.needPyInit = false
ret := &aPackage{
mod: mod, vars: gbls, fns: fns, stubs: stubs,
pyobjs: pyobjs, pymods: pymods, strs: strs, Prog: p}
pyobjs: pyobjs, pymods: pymods, strs: strs, named: named, Prog: p}
ret.abi.Init(pkgPath)
return ret
}
@@ -565,6 +566,7 @@ type aPackage struct {
pyobjs map[string]PyObjRef
pymods map[string]Global
strs map[string]llvm.Value
named map[types.Type]Expr
afterb unsafe.Pointer
iRoutine int