From c90b93c1b7f5576acb0da444f4719baf27cc95e8 Mon Sep 17 00:00:00 2001 From: visualfc Date: Thu, 12 Dec 2024 16:29:17 +0800 Subject: [PATCH 01/12] internal/lib/reflect: convertOp --- c/bitcast/_cast/cast.c | 12 + c/bitcast/bitcast.go | 6 + compiler/cl/_testgo/reflect/out.ll | 16 +- runtime/internal/clite/bitcast/_cast/cast.c | 12 + runtime/internal/clite/bitcast/bitcast.go | 6 + runtime/internal/lib/reflect/type.go | 11 +- runtime/internal/lib/reflect/value.go | 372 ++++++++++++++++++++ 7 files changed, 420 insertions(+), 15 deletions(-) diff --git a/c/bitcast/_cast/cast.c b/c/bitcast/_cast/cast.c index bcc90d64..2d7eeffc 100644 --- a/c/bitcast/_cast/cast.c +++ b/c/bitcast/_cast/cast.c @@ -15,3 +15,15 @@ float llgoToFloat32(long v) { k.v = v; return k.f; } + +long llgoFromFloat64(double v) { + castUnion k; + k.d = v; + return k.v; +} + +long llgoFromFloat32(float v) { + castUnion k; + k.f = v; + return k.v; +} diff --git a/c/bitcast/bitcast.go b/c/bitcast/bitcast.go index f6d12351..f988fa90 100644 --- a/c/bitcast/bitcast.go +++ b/c/bitcast/bitcast.go @@ -28,3 +28,9 @@ func ToFloat64(v uintptr) float64 //go:linkname ToFloat32 C.llgoToFloat32 func ToFloat32(v uintptr) float32 + +//go:linkname FromFloat64 C.llgoFromFloat64 +func FromFloat64(v float64) uintptr + +//go:linkname FromFloat32 C.llgoFromFloat32 +func FromFloat32(v float32) uintptr diff --git a/compiler/cl/_testgo/reflect/out.ll b/compiler/cl/_testgo/reflect/out.ll index c25ba795..9a6bbf60 100644 --- a/compiler/cl/_testgo/reflect/out.ll +++ b/compiler/cl/_testgo/reflect/out.ll @@ -90,7 +90,7 @@ _llgo_0: %13 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %11) %14 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %13) %15 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %13, 0 - %16 = getelementptr ptr, ptr %15, i64 37 + %16 = getelementptr ptr, ptr %15, i64 31 %17 = load ptr, ptr %16, align 8 %18 = insertvalue { ptr, ptr } undef, ptr %17, 0 %19 = insertvalue { ptr, ptr } %18, ptr %14, 1 @@ -185,7 +185,7 @@ _llgo_0: %6 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %4) %7 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %6) %8 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %6, 0 - %9 = getelementptr ptr, ptr %8, i64 37 + %9 = getelementptr ptr, ptr %8, i64 31 %10 = load ptr, ptr %9, align 8 %11 = insertvalue { ptr, ptr } undef, ptr %10, 0 %12 = insertvalue { ptr, ptr } %11, ptr %7, 1 @@ -286,7 +286,7 @@ _llgo_0: %16 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %14) %17 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %16) %18 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %16, 0 - %19 = getelementptr ptr, ptr %18, i64 37 + %19 = getelementptr ptr, ptr %18, i64 31 %20 = load ptr, ptr %19, align 8 %21 = insertvalue { ptr, ptr } undef, ptr %20, 0 %22 = insertvalue { ptr, ptr } %21, ptr %17, 1 @@ -393,7 +393,7 @@ _llgo_0: %8 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %6) %9 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %8) %10 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %8, 0 - %11 = getelementptr ptr, ptr %10, i64 37 + %11 = getelementptr ptr, ptr %10, i64 31 %12 = load ptr, ptr %11, align 8 %13 = insertvalue { ptr, ptr } undef, ptr %12, 0 %14 = insertvalue { ptr, ptr } %13, ptr %9, 1 @@ -827,7 +827,7 @@ _llgo_9: ; preds = %_llgo_8, %_llgo_7 %60 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %11) %61 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %60) %62 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %60, 0 - %63 = getelementptr ptr, ptr %62, i64 20 + %63 = getelementptr ptr, ptr %62, i64 18 %64 = load ptr, ptr %63, align 8 %65 = insertvalue { ptr, ptr } undef, ptr %64, 0 %66 = insertvalue { ptr, ptr } %65, ptr %61, 1 @@ -839,7 +839,7 @@ _llgo_9: ; preds = %_llgo_8, %_llgo_7 %72 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %11) %73 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %72) %74 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %72, 0 - %75 = getelementptr ptr, ptr %74, i64 11 + %75 = getelementptr ptr, ptr %74, i64 9 %76 = load ptr, ptr %75, align 8 %77 = insertvalue { ptr, ptr } undef, ptr %76, 0 %78 = insertvalue { ptr, ptr } %77, ptr %73, 1 @@ -1009,7 +1009,7 @@ _llgo_9: ; preds = %_llgo_8, %_llgo_7 %77 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %10) %78 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %77) %79 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %77, 0 - %80 = getelementptr ptr, ptr %79, i64 20 + %80 = getelementptr ptr, ptr %79, i64 18 %81 = load ptr, ptr %80, align 8 %82 = insertvalue { ptr, ptr } undef, ptr %81, 0 %83 = insertvalue { ptr, ptr } %82, ptr %78, 1 @@ -1021,7 +1021,7 @@ _llgo_9: ; preds = %_llgo_8, %_llgo_7 %89 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %10) %90 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %89) %91 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %89, 0 - %92 = getelementptr ptr, ptr %91, i64 11 + %92 = getelementptr ptr, ptr %91, i64 9 %93 = load ptr, ptr %92, align 8 %94 = insertvalue { ptr, ptr } undef, ptr %93, 0 %95 = insertvalue { ptr, ptr } %94, ptr %90, 1 diff --git a/runtime/internal/clite/bitcast/_cast/cast.c b/runtime/internal/clite/bitcast/_cast/cast.c index bcc90d64..e948a2c6 100644 --- a/runtime/internal/clite/bitcast/_cast/cast.c +++ b/runtime/internal/clite/bitcast/_cast/cast.c @@ -15,3 +15,15 @@ float llgoToFloat32(long v) { k.v = v; return k.f; } + +long llgoFromFloat64(double v) { + castUnion k; + k.d = v; + return k.v; +} + +long llgoFromFloat32(float v) { + castUnion k; + k.f = v; + return k.v; +} \ No newline at end of file diff --git a/runtime/internal/clite/bitcast/bitcast.go b/runtime/internal/clite/bitcast/bitcast.go index f6d12351..f988fa90 100644 --- a/runtime/internal/clite/bitcast/bitcast.go +++ b/runtime/internal/clite/bitcast/bitcast.go @@ -28,3 +28,9 @@ func ToFloat64(v uintptr) float64 //go:linkname ToFloat32 C.llgoToFloat32 func ToFloat32(v uintptr) float32 + +//go:linkname FromFloat64 C.llgoFromFloat64 +func FromFloat64(v float64) uintptr + +//go:linkname FromFloat32 C.llgoFromFloat32 +func FromFloat32(v float32) uintptr diff --git a/runtime/internal/lib/reflect/type.go b/runtime/internal/lib/reflect/type.go index e0b1dfc5..4df7b4fb 100644 --- a/runtime/internal/lib/reflect/type.go +++ b/runtime/internal/lib/reflect/type.go @@ -924,13 +924,10 @@ func (t *rtype) AssignableTo(u Type) bool { } func (t *rtype) ConvertibleTo(u Type) bool { - /* - if u == nil { - panic("reflect: nil type passed to Type.ConvertibleTo") - } - return convertOp(u.common(), t.common()) != nil - */ - panic("todo: reflect.rtype.ConvertibleTo") + if u == nil { + panic("reflect: nil type passed to Type.ConvertibleTo") + } + return convertOp(u.common(), t.common()) != nil } func (t *rtype) Comparable() bool { diff --git a/runtime/internal/lib/reflect/value.go b/runtime/internal/lib/reflect/value.go index 5fa579b2..0a54d470 100644 --- a/runtime/internal/lib/reflect/value.go +++ b/runtime/internal/lib/reflect/value.go @@ -28,6 +28,7 @@ import ( "github.com/goplus/llgo/runtime/abi" "github.com/goplus/llgo/runtime/internal/clite/bitcast" "github.com/goplus/llgo/runtime/internal/ffi" + "github.com/goplus/llgo/runtime/internal/lib/internal/itoa" "github.com/goplus/llgo/runtime/internal/runtime" "github.com/goplus/llgo/runtime/internal/runtime/goarch" ) @@ -1856,6 +1857,43 @@ func (v Value) assignTo(context string, dst *abi.Type, target unsafe.Pointer) Va panic(context + ": value of type " + stringFor(v.typ()) + " is not assignable to type " + stringFor(dst)) } +// Convert returns the value v converted to type t. +// If the usual Go conversion rules do not allow conversion +// of the value v to type t, or if converting v to type t panics, Convert panics. +func (v Value) Convert(t Type) Value { + if v.flag&flagMethod != 0 { + v = makeMethodValue("Convert", v) + } + op := convertOp(t.common(), v.typ()) + if op == nil { + panic("reflect.Value.Convert: value of type " + stringFor(v.typ()) + " cannot be converted to type " + t.String()) + } + return op(v, t) +} + +// CanConvert reports whether the value v can be converted to type t. +// If v.CanConvert(t) returns true then v.Convert(t) will not panic. +func (v Value) CanConvert(t Type) bool { + vt := v.Type() + if !vt.ConvertibleTo(t) { + return false + } + // Converting from slice to array or to pointer-to-array can panic + // depending on the value. + switch { + case vt.Kind() == Slice && t.Kind() == Array: + if t.Len() > v.Len() { + return false + } + case vt.Kind() == Slice && t.Kind() == Pointer && t.Elem().Kind() == Array: + n := t.Elem().Len() + if n > v.Len() { + return false + } + } + return true +} + // memmove copies size bytes to dst from src. No write barriers are used. // //go:linkname memmove C.memmove @@ -2581,6 +2619,340 @@ func methodReceiver(op string, v Value, methodIndex int) (rcvrtype *abi.Type, t return } +// convertOp returns the function to convert a value of type src +// to a value of type dst. If the conversion is illegal, convertOp returns nil. +func convertOp(dst, src *abi.Type) func(Value, Type) Value { + switch Kind(src.Kind()) { + case Int, Int8, Int16, Int32, Int64: + switch Kind(dst.Kind()) { + case Int, Int8, Int16, Int32, Int64, Uint, Uint8, Uint16, Uint32, Uint64, Uintptr: + return cvtInt + case Float32, Float64: + return cvtIntFloat + case String: + return cvtIntString + } + + case Uint, Uint8, Uint16, Uint32, Uint64, Uintptr: + switch Kind(dst.Kind()) { + case Int, Int8, Int16, Int32, Int64, Uint, Uint8, Uint16, Uint32, Uint64, Uintptr: + return cvtUint + case Float32, Float64: + return cvtUintFloat + case String: + return cvtUintString + } + + case Float32, Float64: + switch Kind(dst.Kind()) { + case Int, Int8, Int16, Int32, Int64: + return cvtFloatInt + case Uint, Uint8, Uint16, Uint32, Uint64, Uintptr: + return cvtFloatUint + case Float32, Float64: + return cvtFloat + } + + case Complex64, Complex128: + switch Kind(dst.Kind()) { + case Complex64, Complex128: + return cvtComplex + } + + case String: + if dst.Kind() == abi.Slice && pkgPathFor(dst.Elem()) == "" { + switch Kind(dst.Elem().Kind()) { + case Uint8: + return cvtStringBytes + case Int32: + return cvtStringRunes + } + } + + case Slice: + if dst.Kind() == abi.String && pkgPathFor(src.Elem()) == "" { + switch Kind(src.Elem().Kind()) { + case Uint8: + return cvtBytesString + case Int32: + return cvtRunesString + } + } + // "x is a slice, T is a pointer-to-array type, + // and the slice and array types have identical element types." + if dst.Kind() == abi.Pointer && dst.Elem().Kind() == abi.Array && src.Elem() == dst.Elem().Elem() { + return cvtSliceArrayPtr + } + // "x is a slice, T is an array type, + // and the slice and array types have identical element types." + if dst.Kind() == abi.Array && src.Elem() == dst.Elem() { + return cvtSliceArray + } + + case Chan: + if dst.Kind() == abi.Chan && specialChannelAssignability(dst, src) { + return cvtDirect + } + } + + // dst and src have same underlying type. + if haveIdenticalUnderlyingType(dst, src, false) { + return cvtDirect + } + + // dst and src are non-defined pointer types with same underlying base type. + if dst.Kind() == abi.Pointer && nameFor(dst) == "" && + src.Kind() == abi.Pointer && nameFor(src) == "" && + haveIdenticalUnderlyingType(elem(dst), elem(src), false) { + return cvtDirect + } + + if implements(dst, src) { + if src.Kind() == abi.Interface { + return cvtI2I + } + return cvtT2I + } + + return nil +} + +// _64bit = true on 64-bit systems, false on 32-bit systems +const is64bit = (1 << (^uintptr(0) >> 63) / 2) == 1 + +// makeInt returns a Value of type t equal to bits (possibly truncated), +// where t is a signed or unsigned int type. +func makeInt(f flag, bits uint64, t Type) Value { + typ := t.common() + var ptr unsafe.Pointer + switch typ.Size() { + case 1, 2, 4: + ptr = unsafe.Pointer(uintptr(bits)) + case 8: + if is64bit { + ptr = unsafe.Pointer(uintptr(bits)) + } else { + ptr = unsafe_New(typ) + *(*uint64)(ptr) = bits + f |= flagIndir + } + } + return Value{typ, ptr, f | flag(typ.Kind())} +} + +// makeFloat returns a Value of type t equal to v (possibly truncated to float32), +// where t is a float32 or float64 type. +func makeFloat(f flag, v float64, t Type) Value { + typ := t.common() + var ptr unsafe.Pointer + switch typ.Size() { + case 4: + ptr = unsafe.Pointer(bitcast.FromFloat32(float32(v))) + case 8: + if is64bit { + ptr = unsafe.Pointer(bitcast.FromFloat64(v)) + } else { + ptr = unsafe_New(typ) + *(*float64)(ptr) = v + f |= flagIndir + } + } + return Value{typ, ptr, f | flag(typ.Kind())} +} + +// makeFloat32 returns a Value of type t equal to v, where t is a float32 type. +func makeFloat32(f flag, ptr unsafe.Pointer, t Type) Value { + typ := t.common() + return Value{typ, ptr, f | flag(typ.Kind())} +} + +// makeComplex returns a Value of type t equal to v (possibly truncated to complex64), +// where t is a complex64 or complex128 type. +func makeComplex(f flag, v complex128, t Type) Value { + typ := t.common() + ptr := unsafe_New(typ) + switch typ.Size() { + case 8: + *(*complex64)(ptr) = complex64(v) + case 16: + *(*complex128)(ptr) = v + } + return Value{typ, ptr, f | flagIndir | flag(typ.Kind())} +} + +func makeString(f flag, v string, t Type) Value { + ret := New(t).Elem() + ret.SetString(v) + ret.flag = ret.flag&^flagAddr | f + return ret +} + +func makeBytes(f flag, v []byte, t Type) Value { + ret := New(t).Elem() + ret.SetBytes(v) + ret.flag = ret.flag&^flagAddr | f + return ret +} + +func makeRunes(f flag, v []rune, t Type) Value { + ret := New(t).Elem() + ret.setRunes(v) + ret.flag = ret.flag&^flagAddr | f + return ret +} + +// These conversion functions are returned by convertOp +// for classes of conversions. For example, the first function, cvtInt, +// takes any value v of signed int type and returns the value converted +// to type t, where t is any signed or unsigned int type. + +// convertOp: intXX -> [u]intXX +func cvtInt(v Value, t Type) Value { + return makeInt(v.flag.ro(), uint64(v.Int()), t) +} + +// convertOp: uintXX -> [u]intXX +func cvtUint(v Value, t Type) Value { + return makeInt(v.flag.ro(), v.Uint(), t) +} + +// convertOp: floatXX -> intXX +func cvtFloatInt(v Value, t Type) Value { + return makeInt(v.flag.ro(), uint64(int64(v.Float())), t) +} + +// convertOp: floatXX -> uintXX +func cvtFloatUint(v Value, t Type) Value { + return makeInt(v.flag.ro(), uint64(v.Float()), t) +} + +// convertOp: intXX -> floatXX +func cvtIntFloat(v Value, t Type) Value { + return makeFloat(v.flag.ro(), float64(v.Int()), t) +} + +// convertOp: uintXX -> floatXX +func cvtUintFloat(v Value, t Type) Value { + return makeFloat(v.flag.ro(), float64(v.Uint()), t) +} + +// convertOp: floatXX -> floatXX +func cvtFloat(v Value, t Type) Value { + if v.Type().Kind() == Float32 && t.Kind() == Float32 { + // Don't do any conversion if both types have underlying type float32. + // This avoids converting to float64 and back, which will + // convert a signaling NaN to a quiet NaN. See issue 36400. + return makeFloat32(v.flag.ro(), v.ptr, t) + } + return makeFloat(v.flag.ro(), v.Float(), t) +} + +// convertOp: complexXX -> complexXX +func cvtComplex(v Value, t Type) Value { + return makeComplex(v.flag.ro(), v.Complex(), t) +} + +// convertOp: intXX -> string +func cvtIntString(v Value, t Type) Value { + s := "\uFFFD" + if x := v.Int(); int64(rune(x)) == x { + s = string(rune(x)) + } + return makeString(v.flag.ro(), s, t) +} + +// convertOp: uintXX -> string +func cvtUintString(v Value, t Type) Value { + s := "\uFFFD" + if x := v.Uint(); uint64(rune(x)) == x { + s = string(rune(x)) + } + return makeString(v.flag.ro(), s, t) +} + +// convertOp: []byte -> string +func cvtBytesString(v Value, t Type) Value { + return makeString(v.flag.ro(), string(v.Bytes()), t) +} + +// convertOp: string -> []byte +func cvtStringBytes(v Value, t Type) Value { + return makeBytes(v.flag.ro(), []byte(v.String()), t) +} + +// convertOp: []rune -> string +func cvtRunesString(v Value, t Type) Value { + return makeString(v.flag.ro(), string(v.runes()), t) +} + +// convertOp: string -> []rune +func cvtStringRunes(v Value, t Type) Value { + return makeRunes(v.flag.ro(), []rune(v.String()), t) +} + +// convertOp: []T -> *[N]T +func cvtSliceArrayPtr(v Value, t Type) Value { + n := t.Elem().Len() + if n > v.Len() { + panic("reflect: cannot convert slice with length " + itoa.Itoa(v.Len()) + " to pointer to array with length " + itoa.Itoa(n)) + } + h := (*unsafeheaderSlice)(v.ptr) + return Value{t.common(), h.Data, v.flag&^(flagIndir|flagAddr|flagKindMask) | flag(Pointer)} +} + +// convertOp: []T -> [N]T +func cvtSliceArray(v Value, t Type) Value { + n := t.Len() + if n > v.Len() { + panic("reflect: cannot convert slice with length " + itoa.Itoa(v.Len()) + " to array with length " + itoa.Itoa(n)) + } + h := (*unsafeheaderSlice)(v.ptr) + typ := t.common() + ptr := h.Data + c := unsafe_New(typ) + typedmemmove(typ, c, ptr) + ptr = c + + return Value{typ, ptr, v.flag&^(flagAddr|flagKindMask) | flag(Array)} +} + +// convertOp: direct copy +func cvtDirect(v Value, typ Type) Value { + f := v.flag + t := typ.common() + ptr := v.ptr + if f&flagAddr != 0 { + // indirect, mutable word - make a copy + c := unsafe_New(t) + typedmemmove(t, c, ptr) + ptr = c + f &^= flagAddr + } + return Value{t, ptr, v.flag.ro() | f} // v.flag.ro()|f == f? +} + +// convertOp: concrete -> interface +func cvtT2I(v Value, typ Type) Value { + target := unsafe_New(typ.common()) + x := valueInterface(v, false) + if typ.NumMethod() == 0 { + *(*any)(target) = x + } else { + ifaceE2I(typ.common(), x, target) + } + return Value{typ.common(), target, v.flag.ro() | flagIndir | flag(Interface)} +} + +// convertOp: interface -> interface +func cvtI2I(v Value, typ Type) Value { + if v.IsNil() { + ret := Zero(typ) + ret.flag |= v.flag.ro() + return ret + } + return cvtT2I(v.Elem(), typ) +} + //go:linkname chancap github.com/goplus/llgo/runtime/internal/runtime.ChanCap func chancap(ch unsafe.Pointer) int From 0c2f6c46f6f83286624b45b4f71544085bf7498b Mon Sep 17 00:00:00 2001 From: visualfc Date: Fri, 13 Dec 2024 11:01:06 +0800 Subject: [PATCH 02/12] internal/runtime: newPointer set KindDirectIface --- runtime/internal/runtime/z_type.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/internal/runtime/z_type.go b/runtime/internal/runtime/z_type.go index 6e48b31d..5b7d3310 100644 --- a/runtime/internal/runtime/z_type.go +++ b/runtime/internal/runtime/z_type.go @@ -235,7 +235,7 @@ func newPointer(elem *Type) *Type { Hash: 9067 + 2*elem.Hash, Align_: pointerAlign, FieldAlign_: pointerAlign, - Kind_: uint8(abi.Pointer), + Kind_: uint8(abi.Pointer) | abi.KindDirectIface, Equal: memequalptr, TFlag: abi.TFlagRegularMemory, }, From d2d8bd550aae3d3a4ce832cfd9a22ca31f0c0f37 Mon Sep 17 00:00:00 2001 From: visualfc Date: Fri, 13 Dec 2024 11:04:19 +0800 Subject: [PATCH 03/12] internal/lib/reflect: fix Int/Uint/Float flagIndir --- .../internal/lib/internal/bytealg/bytealg.go | 4 +- runtime/internal/lib/reflect/value.go | 44 ++++++++++--------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/runtime/internal/lib/internal/bytealg/bytealg.go b/runtime/internal/lib/internal/bytealg/bytealg.go index 95ea17d4..a61da7a3 100644 --- a/runtime/internal/lib/internal/bytealg/bytealg.go +++ b/runtime/internal/lib/internal/bytealg/bytealg.go @@ -64,14 +64,14 @@ func CountString(s string, c byte) (n int) { // Requires 2 <= len(b) <= MaxLen. func Index(a, b []byte) int { for i := 0; i <= len(a)-len(b); i++ { - if equal(a[i:i+len(b)], b) { + if Equal(a[i:i+len(b)], b) { return i } } return -1 } -func equal(a, b []byte) bool { +func Equal(a, b []byte) bool { if n := len(a); n == len(b) { return c.Memcmp(unsafe.Pointer(unsafe.SliceData(a)), unsafe.Pointer(unsafe.SliceData(b)), uintptr(n)) == 0 } diff --git a/runtime/internal/lib/reflect/value.go b/runtime/internal/lib/reflect/value.go index 0a54d470..5ebd6e0d 100644 --- a/runtime/internal/lib/reflect/value.go +++ b/runtime/internal/lib/reflect/value.go @@ -623,7 +623,7 @@ func (v Value) CanFloat() bool { // It panics if v's Kind is not Float32 or Float64 func (v Value) Float() float64 { k := v.kind() - if v.flag&flagAddr != 0 { + if v.flag&flagIndir != 0 { switch k { case Float32: return float64(*(*float32)(v.ptr)) @@ -635,7 +635,11 @@ func (v Value) Float() float64 { case Float32: return float64(bitcast.ToFloat32(uintptr(v.ptr))) case Float64: - return bitcast.ToFloat64(uintptr(v.ptr)) + if is64bit { + return bitcast.ToFloat64(uintptr(v.ptr)) + } else { + return *(*float64)(v.ptr) + } } } panic(&ValueError{"reflect.Value.Float", v.kind()}) @@ -705,7 +709,7 @@ func (v Value) Int() int64 { f := v.flag k := f.kind() p := v.ptr - if f&flagAddr != 0 { + if f&flagIndir != 0 { switch k { case Int: return int64(*(*int)(p)) @@ -718,16 +722,16 @@ func (v Value) Int() int64 { case Int64: return *(*int64)(p) } - } else if unsafe.Sizeof(uintptr(0)) == 8 { - if k >= Int && k <= Int64 { - return int64(uintptr(p)) - } } else { - if k >= Int && k <= Int32 { + switch k { + case Int, Int8, Int16, Int32: return int64(uintptr(p)) - } - if k == Int64 { - return *(*int64)(p) + case Int64: + if is64bit { + return int64(uintptr(p)) + } else { + return *(*int64)(p) + } } } panic(&ValueError{"reflect.Value.Int", v.kind()}) @@ -1558,7 +1562,7 @@ func (v Value) Uint() uint64 { f := v.flag k := v.kind() p := v.ptr - if f&flagAddr != 0 { + if f&flagIndir != 0 { switch k { case Uint: return uint64(*(*uint)(p)) @@ -1573,16 +1577,16 @@ func (v Value) Uint() uint64 { case Uintptr: return uint64(*(*uintptr)(p)) } - } else if unsafe.Sizeof(uintptr(0)) == 8 { - if k >= Uint && k <= Uintptr { - return uint64(uintptr(p)) - } } else { - if k >= Uint && k <= Uint32 { + switch k { + case Uint, Uint8, Uint16, Uint32: return uint64(uintptr(p)) - } - if k == Uint64 || k == Uintptr { - return *(*uint64)(p) + case Uint64, Uintptr: + if is64bit { + return uint64(uintptr(p)) + } else { + return *(*uint64)(p) + } } } panic(&ValueError{"reflect.Value.Uint", v.kind()}) From 71766d9c55ab9df5c356b54c76f66c21f688ab50 Mon Sep 17 00:00:00 2001 From: visualfc Date: Fri, 13 Dec 2024 15:59:42 +0800 Subject: [PATCH 04/12] ssa/abi: StructName not pub --- compiler/ssa/abi/abi.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/ssa/abi/abi.go b/compiler/ssa/abi/abi.go index 193034a0..45fb177a 100644 --- a/compiler/ssa/abi/abi.go +++ b/compiler/ssa/abi/abi.go @@ -308,7 +308,7 @@ func (b *Builder) StructName(t *types.Struct) (ret string, pub bool) { if private { return b.Pkg + ".struct$" + hashStr, false } - return "_llgo_struct$" + hashStr, true + return "_llgo_struct$" + hashStr, false } func (b *Builder) structHash(t *types.Struct) (ret []byte, private bool) { From ec549a6a25f77e92409177131619f1050b2d6445 Mon Sep 17 00:00:00 2001 From: visualfc Date: Fri, 13 Dec 2024 19:11:52 +0800 Subject: [PATCH 05/12] internal/lib/reflect: value.convert check func --- runtime/internal/lib/reflect/value.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/runtime/internal/lib/reflect/value.go b/runtime/internal/lib/reflect/value.go index 5ebd6e0d..9204f093 100644 --- a/runtime/internal/lib/reflect/value.go +++ b/runtime/internal/lib/reflect/value.go @@ -1868,7 +1868,12 @@ func (v Value) Convert(t Type) Value { if v.flag&flagMethod != 0 { v = makeMethodValue("Convert", v) } - op := convertOp(t.common(), v.typ()) + var op func(Value, Type) Value + if kind := v.Kind(); kind == Func && kind == t.Kind() { + op = convertOp(t.common(), v.Type().common()) + } else { + op = convertOp(t.common(), v.typ()) + } if op == nil { panic("reflect.Value.Convert: value of type " + stringFor(v.typ()) + " cannot be converted to type " + t.String()) } From 46492009a1e07d14230007dc2887abb11d16b141 Mon Sep 17 00:00:00 2001 From: visualfc Date: Sat, 14 Dec 2024 10:05:26 +0800 Subject: [PATCH 06/12] internal/lib/reflect: specialChannelAssignability --- runtime/internal/lib/reflect/type.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/runtime/internal/lib/reflect/type.go b/runtime/internal/lib/reflect/type.go index 4df7b4fb..669d4c15 100644 --- a/runtime/internal/lib/reflect/type.go +++ b/runtime/internal/lib/reflect/type.go @@ -944,14 +944,11 @@ func implements(T, V *abi.Type) bool // https://golang.org/doc/go_spec.html#Assignability // T and V must be both of Chan kind. func specialChannelAssignability(T, V *abi.Type) bool { - /* - // Special case: - // x is a bidirectional channel value, T is a channel type, - // x's type V and T have identical element types, - // and at least one of V or T is not a defined type. - return V.ChanDir() == abi.BothDir && (nameFor(T) == "" || nameFor(V) == "") && haveIdenticalType(T.Elem(), V.Elem(), true) - */ - panic("todo: reflect.specialChannelAssignability") + // Special case: + // x is a bidirectional channel value, T is a channel type, + // x's type V and T have identical element types, + // and at least one of V or T is not a defined type. + return V.ChanDir() == abi.BothDir && (nameFor(T) == "" || nameFor(V) == "") && haveIdenticalType(T.Elem(), V.Elem(), true) } // directlyAssignable reports whether a value x of type V can be directly From 281d29a100c32e7c20ccb07d87a59f164e0b7458 Mon Sep 17 00:00:00 2001 From: visualfc Date: Tue, 17 Dec 2024 10:14:04 +0800 Subject: [PATCH 07/12] internal/lib/reflect: DeepEqual --- runtime/internal/lib/reflect/deepequal.go | 239 ++++++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 runtime/internal/lib/reflect/deepequal.go diff --git a/runtime/internal/lib/reflect/deepequal.go b/runtime/internal/lib/reflect/deepequal.go new file mode 100644 index 00000000..c6f76d02 --- /dev/null +++ b/runtime/internal/lib/reflect/deepequal.go @@ -0,0 +1,239 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Deep equality test via reflection + +package reflect + +import ( + "unsafe" + + "github.com/goplus/llgo/runtime/internal/lib/internal/bytealg" +) + +// During deepValueEqual, must keep track of checks that are +// in progress. The comparison algorithm assumes that all +// checks in progress are true when it reencounters them. +// Visited comparisons are stored in a map indexed by visit. +type visit struct { + a1 unsafe.Pointer + a2 unsafe.Pointer + typ Type +} + +// Tests for deep equality using reflected types. The map argument tracks +// comparisons that have already been seen, which allows short circuiting on +// recursive types. +func deepValueEqual(v1, v2 Value, visited map[visit]bool) bool { + if !v1.IsValid() || !v2.IsValid() { + return v1.IsValid() == v2.IsValid() + } + if v1.Type() != v2.Type() { + return false + } + + // We want to avoid putting more in the visited map than we need to. + // For any possible reference cycle that might be encountered, + // hard(v1, v2) needs to return true for at least one of the types in the cycle, + // and it's safe and valid to get Value's internal pointer. + hard := func(v1, v2 Value) bool { + switch v1.Kind() { + case Pointer: + if v1.typ().PtrBytes == 0 { + // not-in-heap pointers can't be cyclic. + // At least, all of our current uses of runtime/internal/sys.NotInHeap + // have that property. The runtime ones aren't cyclic (and we don't use + // DeepEqual on them anyway), and the cgo-generated ones are + // all empty structs. + return false + } + fallthrough + case Map, Slice, Interface: + // Nil pointers cannot be cyclic. Avoid putting them in the visited map. + return !v1.IsNil() && !v2.IsNil() + } + return false + } + + if hard(v1, v2) { + // For a Pointer or Map value, we need to check flagIndir, + // which we do by calling the pointer method. + // For Slice or Interface, flagIndir is always set, + // and using v.ptr suffices. + ptrval := func(v Value) unsafe.Pointer { + switch v.Kind() { + case Pointer, Map: + return v.pointer() + default: + return v.ptr + } + } + addr1 := ptrval(v1) + addr2 := ptrval(v2) + if uintptr(addr1) > uintptr(addr2) { + // Canonicalize order to reduce number of entries in visited. + // Assumes non-moving garbage collector. + addr1, addr2 = addr2, addr1 + } + + // Short circuit if references are already seen. + typ := v1.Type() + v := visit{addr1, addr2, typ} + if visited[v] { + return true + } + + // Remember for later. + visited[v] = true + } + + switch v1.Kind() { + case Array: + for i := 0; i < v1.Len(); i++ { + if !deepValueEqual(v1.Index(i), v2.Index(i), visited) { + return false + } + } + return true + case Slice: + if v1.IsNil() != v2.IsNil() { + return false + } + if v1.Len() != v2.Len() { + return false + } + if v1.UnsafePointer() == v2.UnsafePointer() { + return true + } + // Special case for []byte, which is common. + if v1.Type().Elem().Kind() == Uint8 { + return bytealg.Equal(v1.Bytes(), v2.Bytes()) + } + for i := 0; i < v1.Len(); i++ { + if !deepValueEqual(v1.Index(i), v2.Index(i), visited) { + return false + } + } + return true + case Interface: + if v1.IsNil() || v2.IsNil() { + return v1.IsNil() == v2.IsNil() + } + return deepValueEqual(v1.Elem(), v2.Elem(), visited) + case Pointer: + if v1.UnsafePointer() == v2.UnsafePointer() { + return true + } + return deepValueEqual(v1.Elem(), v2.Elem(), visited) + case Struct: + for i, n := 0, v1.NumField(); i < n; i++ { + if !deepValueEqual(v1.Field(i), v2.Field(i), visited) { + return false + } + } + return true + case Map: + if v1.IsNil() != v2.IsNil() { + return false + } + if v1.Len() != v2.Len() { + return false + } + if v1.UnsafePointer() == v2.UnsafePointer() { + return true + } + for _, k := range v1.MapKeys() { + val1 := v1.MapIndex(k) + val2 := v2.MapIndex(k) + if !val1.IsValid() || !val2.IsValid() || !deepValueEqual(val1, val2, visited) { + return false + } + } + return true + case Func: + if v1.IsNil() && v2.IsNil() { + return true + } + // Can't do better than this: + return false + case Int, Int8, Int16, Int32, Int64: + return v1.Int() == v2.Int() + case Uint, Uint8, Uint16, Uint32, Uint64, Uintptr: + return v1.Uint() == v2.Uint() + case String: + return v1.String() == v2.String() + case Bool: + return v1.Bool() == v2.Bool() + case Float32, Float64: + return v1.Float() == v2.Float() + case Complex64, Complex128: + return v1.Complex() == v2.Complex() + default: + // Normal equality suffices + return valueInterface(v1, false) == valueInterface(v2, false) + } +} + +// DeepEqual reports whether x and y are “deeply equal,” defined as follows. +// Two values of identical type are deeply equal if one of the following cases applies. +// Values of distinct types are never deeply equal. +// +// Array values are deeply equal when their corresponding elements are deeply equal. +// +// Struct values are deeply equal if their corresponding fields, +// both exported and unexported, are deeply equal. +// +// Func values are deeply equal if both are nil; otherwise they are not deeply equal. +// +// Interface values are deeply equal if they hold deeply equal concrete values. +// +// Map values are deeply equal when all of the following are true: +// they are both nil or both non-nil, they have the same length, +// and either they are the same map object or their corresponding keys +// (matched using Go equality) map to deeply equal values. +// +// Pointer values are deeply equal if they are equal using Go's == operator +// or if they point to deeply equal values. +// +// Slice values are deeply equal when all of the following are true: +// they are both nil or both non-nil, they have the same length, +// and either they point to the same initial entry of the same underlying array +// (that is, &x[0] == &y[0]) or their corresponding elements (up to length) are deeply equal. +// Note that a non-nil empty slice and a nil slice (for example, []byte{} and []byte(nil)) +// are not deeply equal. +// +// Other values - numbers, bools, strings, and channels - are deeply equal +// if they are equal using Go's == operator. +// +// In general DeepEqual is a recursive relaxation of Go's == operator. +// However, this idea is impossible to implement without some inconsistency. +// Specifically, it is possible for a value to be unequal to itself, +// either because it is of func type (uncomparable in general) +// or because it is a floating-point NaN value (not equal to itself in floating-point comparison), +// or because it is an array, struct, or interface containing +// such a value. +// On the other hand, pointer values are always equal to themselves, +// even if they point at or contain such problematic values, +// because they compare equal using Go's == operator, and that +// is a sufficient condition to be deeply equal, regardless of content. +// DeepEqual has been defined so that the same short-cut applies +// to slices and maps: if x and y are the same slice or the same map, +// they are deeply equal regardless of content. +// +// As DeepEqual traverses the data values it may find a cycle. The +// second and subsequent times that DeepEqual compares two pointer +// values that have been compared before, it treats the values as +// equal rather than examining the values to which they point. +// This ensures that DeepEqual terminates. +func DeepEqual(x, y any) bool { + if x == nil || y == nil { + return x == y + } + v1 := ValueOf(x) + v2 := ValueOf(y) + if v1.Type() != v2.Type() { + return false + } + return deepValueEqual(v1, v2, make(map[visit]bool)) +} From d81c5e750db29e08491fbea7caeaaa81fdfd221f Mon Sep 17 00:00:00 2001 From: visualfc Date: Tue, 17 Dec 2024 12:42:30 +0800 Subject: [PATCH 08/12] internal/runtime: impl ifaceE2I --- runtime/internal/lib/reflect/value.go | 7 +-- runtime/internal/runtime/errors.go | 57 +++++++++++++++++++ runtime/internal/runtime/z_face.go | 80 +++++++++++++++++++++++++++ 3 files changed, 140 insertions(+), 4 deletions(-) diff --git a/runtime/internal/lib/reflect/value.go b/runtime/internal/lib/reflect/value.go index 9204f093..4e63cdfd 100644 --- a/runtime/internal/lib/reflect/value.go +++ b/runtime/internal/lib/reflect/value.go @@ -2609,7 +2609,7 @@ func methodReceiver(op string, v Value, methodIndex int) (rcvrtype *abi.Type, t panic("reflect: " + op + " of method on nil interface value") } rcvrtype = iface.itab.typ - fn = unsafe.Pointer(&iface.itab.fun[i]) + fn = unsafe.Pointer(iface.itab.fun[i]) t = (*funcType)(unsafe.Pointer(m.Typ_)) } else { rcvrtype = v.typ() @@ -3058,6 +3058,5 @@ func MakeMapWithSize(typ Type, n int) Value { return Value{t, m, flag(Map)} } -func ifaceE2I(t *abi.Type, src any, dst unsafe.Pointer) { - panic("todo: reflect.ifaceE2I") -} +//go:linkname ifaceE2I github.com/goplus/llgo/runtime/internal/runtime.IfaceE2I +func ifaceE2I(t *abi.Type, src any, dst unsafe.Pointer) diff --git a/runtime/internal/runtime/errors.go b/runtime/internal/runtime/errors.go index 68790dd5..1516b7ad 100644 --- a/runtime/internal/runtime/errors.go +++ b/runtime/internal/runtime/errors.go @@ -4,6 +4,12 @@ package runtime +import ( + "unsafe" + + "github.com/goplus/llgo/runtime/abi" +) + // A boundsError represents an indexing or slicing operation gone wrong. type boundsError struct { x int64 @@ -114,3 +120,54 @@ func itoa(buf []byte, val uint64) []byte { func PanicSliceConvert(x int, y int) { panic(boundsError{x: int64(x), signed: true, y: y, code: boundsConvert}) } + +// A TypeAssertionError explains a failed type assertion. +type TypeAssertionError struct { + _interface *_type + concrete *_type + asserted *_type + missingMethod string // one method needed by Interface, missing from Concrete +} + +func (*TypeAssertionError) RuntimeError() {} + +func (e *TypeAssertionError) Error() string { + inter := "interface" + if e._interface != nil { + inter = e._interface.String() + } + as := e.asserted.String() + if e.concrete == nil { + return "interface conversion: " + inter + " is nil, not " + as + } + cs := e.concrete.String() + if e.missingMethod == "" { + msg := "interface conversion: " + inter + " is " + cs + ", not " + as + if cs == as { + // provide slightly clearer error message + if pkgpath(e.concrete) != pkgpath(e.asserted) { + msg += " (types from different packages)" + } else { + msg += " (types from different scopes)" + } + } + return msg + } + return "interface conversion: " + cs + " is not " + as + + ": missing method " + e.missingMethod +} + +func pkgpath(t *_type) string { + if u := t.Uncommon(); u != nil { + return u.PkgPath_ + } + switch t.Kind() { + case abi.Struct: + st := (*structtype)(unsafe.Pointer(t)) + return st.PkgPath_ + case abi.Interface: + it := (*interfacetype)(unsafe.Pointer(t)) + return it.PkgPath_ + } + return "" +} diff --git a/runtime/internal/runtime/z_face.go b/runtime/internal/runtime/z_face.go index 6a9f37f2..7f1c61c0 100644 --- a/runtime/internal/runtime/z_face.go +++ b/runtime/internal/runtime/z_face.go @@ -21,6 +21,7 @@ import ( "github.com/goplus/llgo/runtime/abi" c "github.com/goplus/llgo/runtime/internal/clite" + "github.com/goplus/llgo/runtime/internal/clite/pthread/sync" ) type eface struct { @@ -306,11 +307,50 @@ func Interface(pkgPath string, methods []Imethod) *InterfaceType { return ret } +var itabTable struct { + mutex + entries []*Itab +} + +type mutex sync.Mutex + +func (m *mutex) Lock() { + if *(*c.Long)(unsafe.Pointer(m)) == 0 { + (*sync.Mutex)(m).Init(nil) + } + (*sync.Mutex)(m).Lock() +} + +func (m *mutex) Unlock() { + (*sync.Mutex)(m).Unlock() +} + +func findItab(inter *InterfaceType, typ *Type) *Itab { + itabTable.Lock() + for _, i := range itabTable.entries { + if i.inter == inter && i._type == typ { + itabTable.Unlock() + return i + } + } + itabTable.Unlock() + return nil +} + +func addItab(i *Itab) { + itabTable.Lock() + itabTable.entries = append(itabTable.entries, i) + itabTable.Unlock() +} + // NewItab returns a new itab. func NewItab(inter *InterfaceType, typ *Type) *Itab { if typ == nil { return nil } + if i := findItab(inter, typ); i != nil { + return i + } n := len(inter.Methods) size := itabHdrSize + uintptr(n)*pointerSize ptr := AllocU(size) @@ -335,6 +375,9 @@ func NewItab(inter *InterfaceType, typ *Type) *Itab { *c.Advance(data, i) = uintptr(fn) } } + if ret.fun[0] != 0 { + addItab(ret) + } return ret } @@ -632,4 +675,41 @@ func shallowHashTuple(tuple []*Type) uint32 { return hash } +func assertE2I(inter *interfacetype, t *_type) *itab { + if t == nil { + // explicit conversions require non-nil interface value. + panic(&TypeAssertionError{nil, nil, &inter.Type, ""}) + } + return getitab(inter, t, false) +} + +func IfaceE2I(inter *interfacetype, e eface, dst *iface) { + *dst = iface{assertE2I(inter, e._type), e.data} +} + +func getitab(inter *interfacetype, typ *_type, canfail bool) *itab { + if len(inter.Methods) == 0 { + panic("internal error - misuse of itab") + } + + // easy case + if typ.TFlag&abi.TFlagUncommon == 0 { + if canfail { + return nil + } + name := inter.Methods[0].Name() + panic(&TypeAssertionError{nil, typ, &inter.Type, name}) + } + + m := NewItab(inter, typ) + + if m.fun[0] != 0 { + return m + } + if canfail { + return nil + } + panic(&TypeAssertionError{concrete: typ, asserted: &inter.Type, missingMethod: ""}) +} + // ----------------------------------------------------------------------------- From 114c6bd6fc877756a4adad3ce8a1d359683ef624 Mon Sep 17 00:00:00 2001 From: visualfc Date: Wed, 18 Dec 2024 09:57:58 +0800 Subject: [PATCH 09/12] internal/lib/reflect: fix call method --- runtime/internal/lib/reflect/value.go | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/runtime/internal/lib/reflect/value.go b/runtime/internal/lib/reflect/value.go index 4e63cdfd..25314ec4 100644 --- a/runtime/internal/lib/reflect/value.go +++ b/runtime/internal/lib/reflect/value.go @@ -2213,11 +2213,9 @@ func (v Value) call(op string, in []Value) (out []Value) { tin = append([]*abi.Type{rcvrtype}, ft.In...) tout = ft.Out ioff = 1 - if v.flag&flagIndir != 0 { - args = append(args, v.ptr) - } else { - args = append(args, unsafe.Pointer(&v.ptr)) - } + var ptr unsafe.Pointer + storeRcvr(v, unsafe.Pointer(&ptr)) + args = append(args, unsafe.Pointer(&ptr)) } else { if v.flag&flagIndir != 0 { fn = *(*unsafe.Pointer)(v.ptr) @@ -2314,6 +2312,23 @@ func (v Value) call(op string, in []Value) (out []Value) { return } +// v is a method receiver. Store at p the word which is used to +// encode that receiver at the start of the argument list. +// Reflect uses the "interface" calling convention for +// methods, which always uses one word to record the receiver. +func storeRcvr(v Value, p unsafe.Pointer) { + t := v.typ() + if t.Kind() == abi.Interface { + // the interface data word becomes the receiver word + iface := (*nonEmptyInterface)(v.ptr) + *(*unsafe.Pointer)(p) = iface.word + } else if v.flag&flagIndir != 0 && !ifaceIndir(t) { + *(*unsafe.Pointer)(p) = *(*unsafe.Pointer)(v.ptr) + } else { + *(*unsafe.Pointer)(p) = v.ptr + } +} + var stringType = rtypeOf("") // MapIndex returns the value associated with key in the map v. From b69abd1058d01e396339d9f75e06fd319b60bf58 Mon Sep 17 00:00:00 2001 From: visualfc Date: Wed, 18 Dec 2024 11:49:39 +0800 Subject: [PATCH 10/12] internal/runtime: find type --- runtime/internal/runtime/z_type.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/internal/runtime/z_type.go b/runtime/internal/runtime/z_type.go index 5b7d3310..6e48b31d 100644 --- a/runtime/internal/runtime/z_type.go +++ b/runtime/internal/runtime/z_type.go @@ -235,7 +235,7 @@ func newPointer(elem *Type) *Type { Hash: 9067 + 2*elem.Hash, Align_: pointerAlign, FieldAlign_: pointerAlign, - Kind_: uint8(abi.Pointer) | abi.KindDirectIface, + Kind_: uint8(abi.Pointer), Equal: memequalptr, TFlag: abi.TFlagRegularMemory, }, From 3caae31374286fab0e58c701b5a9ba859de1d252 Mon Sep 17 00:00:00 2001 From: visualfc Date: Mon, 23 Dec 2024 20:29:00 +0800 Subject: [PATCH 11/12] internal/runtime: pointer set abi.KindDirectIface --- compiler/cl/_testdata/foo/out.ll | 48 +- compiler/cl/_testgo/equal/out.ll | 192 +- compiler/cl/_testgo/ifaceconv/out.ll | 140 +- compiler/cl/_testgo/ifaceprom/out.ll | 242 +- compiler/cl/_testgo/interface/out.ll | 342 ++- compiler/cl/_testgo/reader/out.ll | 912 ++++--- compiler/cl/_testgo/strucintf/out.ll | 28 +- compiler/cl/_testrt/abinamed/out.ll | 3654 +++++++++++++------------- runtime/internal/runtime/z_type.go | 4 +- 9 files changed, 2713 insertions(+), 2849 deletions(-) diff --git a/compiler/cl/_testdata/foo/out.ll b/compiler/cl/_testdata/foo/out.ll index a71b56e3..1d078de0 100644 --- a/compiler/cl/_testdata/foo/out.ll +++ b/compiler/cl/_testdata/foo/out.ll @@ -105,34 +105,26 @@ _llgo_1: ; preds = %_llgo_0 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 - %3 = load ptr, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", 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/runtime/internal/runtime.Basic"(i64 34) - %6 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 1 }, ptr %5, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %7 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) - %8 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %7, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %6, ptr %8, align 8 - %9 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %7, 0 - %10 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %9, i64 1, 1 - %11 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %10, i64 1, 2 - %12 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 48 }, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %11) - store ptr %12, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", align 8 - br label %_llgo_4 - -_llgo_4: ; preds = %_llgo_3, %_llgo_2 - %13 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) - %14 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 1 }, ptr %13, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %15 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) - %16 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %15, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %14, ptr %16, align 8 - %17 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %15, 0 - %18 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %17, i64 1, 1 - %19 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %18, i64 1, 2 - %20 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 48 }, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %19) - store ptr %20, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88", align 8 + %3 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) + %4 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 1 }, ptr %3, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %5 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) + %6 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %5, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %4, ptr %6, align 8 + %7 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %5, 0 + %8 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %7, i64 1, 1 + %9 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %8, i64 1, 2 + %10 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 48 }, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %9) + store ptr %10, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", align 8 + %11 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) + %12 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 1 }, ptr %11, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %13 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) + %14 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %13, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %12, ptr %14, align 8 + %15 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %13, 0 + %16 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %15, i64 1, 1 + %17 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %16, i64 1, 2 + %18 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 48 }, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %17) + store ptr %18, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88", align 8 ret void } diff --git a/compiler/cl/_testgo/equal/out.ll b/compiler/cl/_testgo/equal/out.ll index b9ccb7b4..5e03304f 100644 --- a/compiler/cl/_testgo/equal/out.ll +++ b/compiler/cl/_testgo/equal/out.ll @@ -464,142 +464,126 @@ _llgo_3: ; preds = %_llgo_2 br label %_llgo_4 _llgo_4: ; preds = %_llgo_3, %_llgo_2 - %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 + %6 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %7 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %6, 0 + %8 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %7, i64 0, 1 + %9 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %8, i64 0, 2 + %10 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %9) + store ptr %10, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + %11 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 1 }, i64 25, i64 48, i64 0, i64 0) + %12 = load ptr, ptr @_llgo_main.T, align 8 + %13 = icmp eq ptr %12, null + br i1 %13, label %_llgo_5, label %_llgo_6 _llgo_5: ; preds = %_llgo_4 - %8 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %9 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %8, 0 - %10 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %9, i64 0, 1 - %11 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %10, i64 0, 2 - %12 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %11) - store ptr %12, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + store ptr %11, ptr @_llgo_main.T, align 8 br label %_llgo_6 _llgo_6: ; preds = %_llgo_5, %_llgo_4 - %13 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 1 }, i64 25, i64 48, i64 0, i64 0) - %14 = load ptr, ptr @_llgo_main.T, align 8 + %14 = load ptr, ptr @_llgo_any, align 8 %15 = icmp eq ptr %14, null br i1 %15, label %_llgo_7, label %_llgo_8 _llgo_7: ; preds = %_llgo_6 - store ptr %13, ptr @_llgo_main.T, align 8 + %16 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %17 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %16, 0 + %18 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %17, i64 0, 1 + %19 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %18, i64 0, 2 + %20 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %19) + store ptr %20, ptr @_llgo_any, align 8 br label %_llgo_8 _llgo_8: ; preds = %_llgo_7, %_llgo_6 - %16 = load ptr, ptr @_llgo_any, align 8 - %17 = icmp eq ptr %16, null - br i1 %17, label %_llgo_9, label %_llgo_10 + %21 = load ptr, ptr @_llgo_any, align 8 + %22 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) + %23 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 1 }, ptr %22, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %24 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) + %25 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 1 }, ptr %24, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %26 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %27 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @7, i64 1 }, ptr %26, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %28 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %29 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %28, 0 + %30 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %29, i64 0, 1 + %31 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %30, i64 0, 2 + %32 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %31) + %33 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @8, i64 1 }, ptr %32, i64 32, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %34 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) + %35 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %34, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %23, ptr %35, align 8 + %36 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %34, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %25, ptr %36, align 8 + %37 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %34, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %27, ptr %37, align 8 + %38 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %34, i64 3 + store %"github.com/goplus/llgo/runtime/abi.StructField" %33, ptr %38, align 8 + %39 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %34, 0 + %40 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %39, i64 4, 1 + %41 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %40, i64 4, 2 + %42 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 48, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %41) + store ptr %42, ptr @"_llgo_struct$5D_KhR3tDEp-wpx9caTiVZca43wS-XW6slE9Bsr8rsk", align 8 + %43 = load ptr, ptr @"_llgo_struct$5D_KhR3tDEp-wpx9caTiVZca43wS-XW6slE9Bsr8rsk", align 8 + br i1 %13, label %_llgo_9, label %_llgo_10 _llgo_9: ; preds = %_llgo_8 - %18 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %19 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %18, 0 - %20 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %19, i64 0, 1 - %21 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %20, i64 0, 2 - %22 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %21) - store ptr %22, ptr @_llgo_any, align 8 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %11, ptr %43, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer) br label %_llgo_10 _llgo_10: ; preds = %_llgo_9, %_llgo_8 - %23 = load ptr, ptr @_llgo_any, align 8 - %24 = load ptr, ptr @"_llgo_struct$5D_KhR3tDEp-wpx9caTiVZca43wS-XW6slE9Bsr8rsk", align 8 - %25 = icmp eq ptr %24, null - br i1 %25, label %_llgo_11, label %_llgo_12 + %44 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 1 }, i64 25, i64 0, i64 0, i64 0) + %45 = load ptr, ptr @_llgo_main.N, align 8 + %46 = icmp eq ptr %45, null + br i1 %46, label %_llgo_11, label %_llgo_12 _llgo_11: ; preds = %_llgo_10 - %26 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) - %27 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 1 }, ptr %26, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %28 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) - %29 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 1 }, ptr %28, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %30 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %31 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @7, i64 1 }, ptr %30, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %32 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %33 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %32, 0 - %34 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %33, i64 0, 1 - %35 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %34, i64 0, 2 - %36 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %35) - %37 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @8, i64 1 }, ptr %36, i64 32, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %38 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) - %39 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %38, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %27, ptr %39, align 8 - %40 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %38, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %29, ptr %40, align 8 - %41 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %38, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %31, ptr %41, align 8 - %42 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %38, i64 3 - store %"github.com/goplus/llgo/runtime/abi.StructField" %37, ptr %42, align 8 - %43 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %38, 0 - %44 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %43, i64 4, 1 - %45 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %44, i64 4, 2 - %46 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 48, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %45) - store ptr %46, ptr @"_llgo_struct$5D_KhR3tDEp-wpx9caTiVZca43wS-XW6slE9Bsr8rsk", align 8 + store ptr %44, ptr @_llgo_main.N, align 8 br label %_llgo_12 _llgo_12: ; preds = %_llgo_11, %_llgo_10 - %47 = load ptr, ptr @"_llgo_struct$5D_KhR3tDEp-wpx9caTiVZca43wS-XW6slE9Bsr8rsk", align 8 - br i1 %15, label %_llgo_13, label %_llgo_14 + %47 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + br i1 %46, label %_llgo_13, label %_llgo_14 _llgo_13: ; preds = %_llgo_12 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %13, ptr %47, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer) + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %44, ptr %47, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer) br label %_llgo_14 _llgo_14: ; preds = %_llgo_13, %_llgo_12 - %48 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 1 }, i64 25, i64 0, i64 0, i64 0) - %49 = load ptr, ptr @_llgo_main.N, align 8 - %50 = icmp eq ptr %49, null - br i1 %50, label %_llgo_15, label %_llgo_16 + %48 = load ptr, ptr @"map[_llgo_int]_llgo_string", align 8 + %49 = icmp eq ptr %48, null + br i1 %49, label %_llgo_15, label %_llgo_16 _llgo_15: ; preds = %_llgo_14 - store ptr %48, ptr @_llgo_main.N, align 8 + %50 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) + %51 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %52 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 40) + %53 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.ArrayOf"(i64 8, ptr %52) + %54 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 7 }, ptr %53, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %55 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) + %56 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.ArrayOf"(i64 8, ptr %55) + %57 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @11, i64 4 }, ptr %56, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %58 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %59 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.ArrayOf"(i64 8, ptr %58) + %60 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @12, i64 5 }, ptr %59, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %61 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 58) + %62 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @13, i64 8 }, ptr %61, i64 200, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %63 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) + %64 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %63, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %54, ptr %64, align 8 + %65 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %63, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %57, ptr %65, align 8 + %66 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %63, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %60, ptr %66, align 8 + %67 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %63, i64 3 + store %"github.com/goplus/llgo/runtime/abi.StructField" %62, ptr %67, align 8 + %68 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %63, 0 + %69 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %68, i64 4, 1 + %70 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %69, i64 4, 2 + %71 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 208, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %70) + %72 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.MapOf"(ptr %50, ptr %51, ptr %71, i64 4) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %72) + store ptr %72, ptr @"map[_llgo_int]_llgo_string", align 8 br label %_llgo_16 _llgo_16: ; preds = %_llgo_15, %_llgo_14 - %51 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - br i1 %50, label %_llgo_17, label %_llgo_18 - -_llgo_17: ; preds = %_llgo_16 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %48, ptr %51, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer) - br label %_llgo_18 - -_llgo_18: ; preds = %_llgo_17, %_llgo_16 - %52 = load ptr, ptr @"map[_llgo_int]_llgo_string", align 8 - %53 = icmp eq ptr %52, null - br i1 %53, label %_llgo_19, label %_llgo_20 - -_llgo_19: ; preds = %_llgo_18 - %54 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) - %55 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %56 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 40) - %57 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.ArrayOf"(i64 8, ptr %56) - %58 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 7 }, ptr %57, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %59 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) - %60 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.ArrayOf"(i64 8, ptr %59) - %61 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @11, i64 4 }, ptr %60, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %62 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %63 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.ArrayOf"(i64 8, ptr %62) - %64 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @12, i64 5 }, ptr %63, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %65 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 58) - %66 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @13, i64 8 }, ptr %65, i64 200, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %67 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) - %68 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %67, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %58, ptr %68, align 8 - %69 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %67, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %61, ptr %69, align 8 - %70 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %67, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %64, ptr %70, align 8 - %71 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %67, i64 3 - store %"github.com/goplus/llgo/runtime/abi.StructField" %66, ptr %71, align 8 - %72 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %67, 0 - %73 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %72, i64 4, 1 - %74 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %73, i64 4, 2 - %75 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 208, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %74) - %76 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.MapOf"(ptr %54, ptr %55, ptr %75, i64 4) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %76) - store ptr %76, ptr @"map[_llgo_int]_llgo_string", align 8 - br label %_llgo_20 - -_llgo_20: ; preds = %_llgo_19, %_llgo_18 ret void } diff --git a/compiler/cl/_testgo/ifaceconv/out.ll b/compiler/cl/_testgo/ifaceconv/out.ll index 0c0d6b7c..d5903cff 100644 --- a/compiler/cl/_testgo/ifaceconv/out.ll +++ b/compiler/cl/_testgo/ifaceconv/out.ll @@ -611,95 +611,87 @@ _llgo_17: ; preds = %_llgo_16 br label %_llgo_18 _llgo_18: ; preds = %_llgo_17, %_llgo_16 - %66 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - %67 = icmp eq ptr %66, null - br i1 %67, label %_llgo_19, label %_llgo_20 + %66 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %67 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %66, 0 + %68 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %67, i64 0, 1 + %69 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %68, i64 0, 2 + %70 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %69) + store ptr %70, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + %71 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + br i1 %65, label %_llgo_19, label %_llgo_20 _llgo_19: ; preds = %_llgo_18 - %68 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %69 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %68, 0 - %70 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %69, i64 0, 1 - %71 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %70, i64 0, 2 - %72 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %71) - store ptr %72, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + %72 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %73 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %72, 1 + %74 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %73, ptr @"main.(*C1).f", 2 + %75 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %74, ptr @"main.(*C1).f", 3 + %76 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %72, 1 + %77 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %76, ptr @"main.(*C1).f", 2 + %78 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %77, ptr @main.C1.f, 3 + %79 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) + %80 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %79, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %78, ptr %80, align 8 + %81 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %79, 0 + %82 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %81, i64 1, 1 + %83 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %82, i64 1, 2 + %84 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) + %85 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %84, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %75, ptr %85, align 8 + %86 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %84, 0 + %87 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %86, i64 1, 1 + %88 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %87, i64 1, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %63, ptr %71, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %83, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %88) br label %_llgo_20 _llgo_20: ; preds = %_llgo_19, %_llgo_18 - %73 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - br i1 %65, label %_llgo_21, label %_llgo_22 + %89 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @14, i64 2 }, i64 25, i64 0, i64 2, i64 2) + %90 = load ptr, ptr @_llgo_main.C2, align 8 + %91 = icmp eq ptr %90, null + br i1 %91, label %_llgo_21, label %_llgo_22 _llgo_21: ; preds = %_llgo_20 - %74 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %75 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %74, 1 - %76 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %75, ptr @"main.(*C1).f", 2 - %77 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %76, ptr @"main.(*C1).f", 3 - %78 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %74, 1 - %79 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %78, ptr @"main.(*C1).f", 2 - %80 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %79, ptr @main.C1.f, 3 - %81 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) - %82 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %81, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %80, ptr %82, align 8 - %83 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %81, 0 - %84 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %83, i64 1, 1 - %85 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %84, i64 1, 2 - %86 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) - %87 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %86, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %77, ptr %87, align 8 - %88 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %86, 0 - %89 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %88, i64 1, 1 - %90 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %89, i64 1, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %63, ptr %73, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %85, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %90) + store ptr %89, ptr @_llgo_main.C2, align 8 br label %_llgo_22 _llgo_22: ; preds = %_llgo_21, %_llgo_20 - %91 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @14, i64 2 }, i64 25, i64 0, i64 2, i64 2) - %92 = load ptr, ptr @_llgo_main.C2, align 8 - %93 = icmp eq ptr %92, null - br i1 %93, label %_llgo_23, label %_llgo_24 + %92 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + br i1 %91, label %_llgo_23, label %_llgo_24 _llgo_23: ; preds = %_llgo_22 - store ptr %91, ptr @_llgo_main.C2, align 8 + %93 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %94 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %93, 1 + %95 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %94, ptr @"main.(*C2).f", 2 + %96 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %95, ptr @"main.(*C2).f", 3 + %97 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %93, 1 + %98 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %97, ptr @"main.(*C2).f", 2 + %99 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %98, ptr @main.C2.f, 3 + %100 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %101 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @7, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %100, 1 + %102 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %101, ptr @"main.(*C2).g", 2 + %103 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %102, ptr @"main.(*C2).g", 3 + %104 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @7, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %100, 1 + %105 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %104, ptr @"main.(*C2).g", 2 + %106 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %105, ptr @main.C2.g, 3 + %107 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) + %108 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %107, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %99, ptr %108, align 8 + %109 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %107, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %106, ptr %109, align 8 + %110 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %107, 0 + %111 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %110, i64 2, 1 + %112 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %111, i64 2, 2 + %113 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) + %114 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %113, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %96, ptr %114, align 8 + %115 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %113, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %103, ptr %115, align 8 + %116 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %113, 0 + %117 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %116, i64 2, 1 + %118 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %117, i64 2, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %89, ptr %92, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %112, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %118) br label %_llgo_24 _llgo_24: ; preds = %_llgo_23, %_llgo_22 - %94 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - br i1 %93, label %_llgo_25, label %_llgo_26 - -_llgo_25: ; preds = %_llgo_24 - %95 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %96 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %95, 1 - %97 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %96, ptr @"main.(*C2).f", 2 - %98 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %97, ptr @"main.(*C2).f", 3 - %99 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %95, 1 - %100 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %99, ptr @"main.(*C2).f", 2 - %101 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %100, ptr @main.C2.f, 3 - %102 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %103 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @7, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %102, 1 - %104 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %103, ptr @"main.(*C2).g", 2 - %105 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %104, ptr @"main.(*C2).g", 3 - %106 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @7, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %102, 1 - %107 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %106, ptr @"main.(*C2).g", 2 - %108 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %107, ptr @main.C2.g, 3 - %109 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) - %110 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %109, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %101, ptr %110, align 8 - %111 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %109, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %108, ptr %111, align 8 - %112 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %109, 0 - %113 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %112, i64 2, 1 - %114 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %113, i64 2, 2 - %115 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) - %116 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %115, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %98, ptr %116, align 8 - %117 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %115, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %105, ptr %117, align 8 - %118 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %115, 0 - %119 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %118, i64 2, 1 - %120 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %119, i64 2, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %91, ptr %94, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %114, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %120) - br label %_llgo_26 - -_llgo_26: ; preds = %_llgo_25, %_llgo_24 ret void } diff --git a/compiler/cl/_testgo/ifaceprom/out.ll b/compiler/cl/_testgo/ifaceprom/out.ll index 6ec1df15..a37ba385 100644 --- a/compiler/cl/_testgo/ifaceprom/out.ll +++ b/compiler/cl/_testgo/ifaceprom/out.ll @@ -439,161 +439,153 @@ define void @"main.init$after"() { _llgo_0: %0 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 4 }, i64 25, i64 0, i64 2, i64 2) store ptr %0, ptr @_llgo_main.impl, align 8 - %1 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - %2 = icmp eq ptr %1, null - br i1 %2, label %_llgo_1, label %_llgo_2 + %1 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %2 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1, 0 + %3 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %2, i64 0, 1 + %4 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %3, i64 0, 2 + %5 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 4 }, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %4) + store ptr %5, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + %6 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + %7 = load ptr, ptr @_llgo_int, align 8 + %8 = icmp eq ptr %7, null + br i1 %8, label %_llgo_1, label %_llgo_2 _llgo_1: ; preds = %_llgo_0 - %3 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %4 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %3, 0 - %5 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %4, i64 0, 1 - %6 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %5, i64 0, 2 - %7 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 4 }, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %6) - store ptr %7, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + %9 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) + store ptr %9, ptr @_llgo_int, align 8 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 - %8 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - %9 = load ptr, ptr @_llgo_int, align 8 - %10 = icmp eq ptr %9, null - br i1 %10, label %_llgo_3, label %_llgo_4 + %10 = load ptr, ptr @_llgo_int, align 8 + %11 = load ptr, ptr @_llgo_int, align 8 + %12 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %13 = icmp eq ptr %12, null + br i1 %13, label %_llgo_3, label %_llgo_4 _llgo_3: ; preds = %_llgo_2 - %11 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) - store ptr %11, ptr @_llgo_int, align 8 + %14 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %15 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %14, 0 + %16 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %15, i64 0, 1 + %17 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %16, i64 0, 2 + %18 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %19 = getelementptr ptr, ptr %18, i64 0 + store ptr %11, ptr %19, align 8 + %20 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %18, 0 + %21 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %20, i64 1, 1 + %22 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %21, i64 1, 2 + %23 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %17, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %22, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %23) + store ptr %23, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 br label %_llgo_4 _llgo_4: ; preds = %_llgo_3, %_llgo_2 - %12 = load ptr, ptr @_llgo_int, align 8 - %13 = load ptr, ptr @_llgo_int, align 8 - %14 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %15 = icmp eq ptr %14, null - br i1 %15, label %_llgo_5, label %_llgo_6 + %24 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %25 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %24, 1 + %26 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %25, ptr @"main.(*impl).one", 2 + %27 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %26, ptr @"main.(*impl).one", 3 + %28 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %24, 1 + %29 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %28, ptr @"main.(*impl).one", 2 + %30 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %29, ptr @main.impl.one, 3 + %31 = load ptr, ptr @_llgo_string, align 8 + %32 = icmp eq ptr %31, null + br i1 %32, label %_llgo_5, label %_llgo_6 _llgo_5: ; preds = %_llgo_4 - %16 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %17 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %16, 0 - %18 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %17, i64 0, 1 - %19 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %18, i64 0, 2 - %20 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %21 = getelementptr ptr, ptr %20, i64 0 - store ptr %13, ptr %21, align 8 - %22 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %20, 0 - %23 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %22, i64 1, 1 - %24 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %23, i64 1, 2 - %25 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %19, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %24, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %25) - store ptr %25, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %33 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + store ptr %33, ptr @_llgo_string, align 8 br label %_llgo_6 _llgo_6: ; preds = %_llgo_5, %_llgo_4 - %26 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %27 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %26, 1 - %28 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %27, ptr @"main.(*impl).one", 2 - %29 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %28, ptr @"main.(*impl).one", 3 - %30 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %26, 1 - %31 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %30, ptr @"main.(*impl).one", 2 - %32 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %31, ptr @main.impl.one, 3 - %33 = load ptr, ptr @_llgo_string, align 8 - %34 = icmp eq ptr %33, null - br i1 %34, label %_llgo_7, label %_llgo_8 + %34 = load ptr, ptr @_llgo_string, align 8 + %35 = load ptr, ptr @_llgo_string, align 8 + %36 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %37 = icmp eq ptr %36, null + br i1 %37, label %_llgo_7, label %_llgo_8 _llgo_7: ; preds = %_llgo_6 - %35 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - store ptr %35, ptr @_llgo_string, align 8 + %38 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %39 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %38, 0 + %40 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %39, i64 0, 1 + %41 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %40, i64 0, 2 + %42 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %43 = getelementptr ptr, ptr %42, i64 0 + store ptr %35, ptr %43, align 8 + %44 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %42, 0 + %45 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %44, i64 1, 1 + %46 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %45, i64 1, 2 + %47 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %41, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %46, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %47) + store ptr %47, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 br label %_llgo_8 _llgo_8: ; preds = %_llgo_7, %_llgo_6 - %36 = load ptr, ptr @_llgo_string, align 8 - %37 = load ptr, ptr @_llgo_string, align 8 - %38 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %39 = icmp eq ptr %38, null - br i1 %39, label %_llgo_9, label %_llgo_10 + %48 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %49 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %48, 1 + %50 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %49, ptr @"main.(*impl).two", 2 + %51 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %50, ptr @"main.(*impl).two", 3 + %52 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %48, 1 + %53 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %52, ptr @"main.(*impl).two", 2 + %54 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %53, ptr @main.impl.two, 3 + %55 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) + %56 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %55, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %30, ptr %56, align 8 + %57 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %55, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %54, ptr %57, align 8 + %58 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %55, 0 + %59 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %58, i64 2, 1 + %60 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %59, i64 2, 2 + %61 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) + %62 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %61, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %27, ptr %62, align 8 + %63 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %61, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %51, ptr %63, align 8 + %64 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %61, 0 + %65 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %64, i64 2, 1 + %66 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %65, i64 2, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %0, ptr %6, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %60, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %66) + %67 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %68 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %69 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 8 }, ptr undef }, ptr %67, 1 + %70 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 8 }, ptr undef }, ptr %68, 1 + %71 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 48) + %72 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %71, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %69, ptr %72, align 8 + %73 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %71, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %70, ptr %73, align 8 + %74 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %71, 0 + %75 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %74, i64 2, 1 + %76 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %75, i64 2, 2 + %77 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %76) + store ptr %77, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 + %78 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamedInterface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 1 }) + %79 = load ptr, ptr @_llgo_main.I, align 8 + %80 = icmp eq ptr %79, null + br i1 %80, label %_llgo_9, label %_llgo_10 _llgo_9: ; preds = %_llgo_8 - %40 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %41 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %40, 0 - %42 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %41, i64 0, 1 - %43 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %42, i64 0, 2 - %44 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %45 = getelementptr ptr, ptr %44, i64 0 - store ptr %37, ptr %45, align 8 - %46 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %44, 0 - %47 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %46, i64 1, 1 - %48 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %47, i64 1, 2 - %49 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %43, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %48, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %49) - store ptr %49, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + store ptr %78, ptr @_llgo_main.I, align 8 br label %_llgo_10 _llgo_10: ; preds = %_llgo_9, %_llgo_8 - %50 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %51 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %50, 1 - %52 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %51, ptr @"main.(*impl).two", 2 - %53 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %52, ptr @"main.(*impl).two", 3 - %54 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %50, 1 - %55 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %54, ptr @"main.(*impl).two", 2 - %56 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %55, ptr @main.impl.two, 3 - %57 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) - %58 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %57, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %32, ptr %58, align 8 - %59 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %57, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %56, ptr %59, align 8 - %60 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %57, 0 - %61 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %60, i64 2, 1 - %62 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %61, i64 2, 2 - %63 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) - %64 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %63, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %29, ptr %64, align 8 - %65 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %63, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %53, ptr %65, align 8 - %66 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %63, 0 - %67 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %66, i64 2, 1 - %68 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %67, i64 2, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %0, ptr %8, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %62, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %68) - %69 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %70 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %71 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 8 }, ptr undef }, ptr %69, 1 - %72 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 8 }, ptr undef }, ptr %70, 1 - %73 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 48) - %74 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %73, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %71, ptr %74, align 8 - %75 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %73, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %72, ptr %75, align 8 - %76 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %73, 0 - %77 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %76, i64 2, 1 - %78 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %77, i64 2, 2 - %79 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %78) - store ptr %79, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 - %80 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamedInterface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 1 }) - %81 = load ptr, ptr @_llgo_main.I, align 8 - %82 = icmp eq ptr %81, null - br i1 %82, label %_llgo_11, label %_llgo_12 + %81 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %82 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + br i1 %80, label %_llgo_11, label %_llgo_12 _llgo_11: ; preds = %_llgo_10 - store ptr %80, ptr @_llgo_main.I, align 8 + %83 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 8 }, ptr undef }, ptr %81, 1 + %84 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 8 }, ptr undef }, ptr %82, 1 + %85 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 48) + %86 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %85, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %83, ptr %86, align 8 + %87 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %85, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %84, ptr %87, align 8 + %88 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %85, 0 + %89 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %88, i64 2, 1 + %90 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %89, i64 2, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamedInterface"(ptr %78, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %90) br label %_llgo_12 _llgo_12: ; preds = %_llgo_11, %_llgo_10 - %83 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %84 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - br i1 %82, label %_llgo_13, label %_llgo_14 - -_llgo_13: ; preds = %_llgo_12 - %85 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 8 }, ptr undef }, ptr %83, 1 - %86 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 8 }, ptr undef }, ptr %84, 1 - %87 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 48) - %88 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %87, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %85, ptr %88, align 8 - %89 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %87, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %86, ptr %89, align 8 - %90 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %87, 0 - %91 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %90, i64 2, 1 - %92 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %91, i64 2, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamedInterface"(ptr %80, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %92) - br label %_llgo_14 - -_llgo_14: ; preds = %_llgo_13, %_llgo_12 ret void } diff --git a/compiler/cl/_testgo/interface/out.ll b/compiler/cl/_testgo/interface/out.ll index 0b7780d8..96ea0a5c 100644 --- a/compiler/cl/_testgo/interface/out.ll +++ b/compiler/cl/_testgo/interface/out.ll @@ -224,225 +224,209 @@ _llgo_3: ; preds = %_llgo_2 br label %_llgo_4 _llgo_4: ; preds = %_llgo_3, %_llgo_2 - %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 + %6 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %7 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %6, 0 + %8 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %7, i64 0, 1 + %9 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %8, i64 0, 2 + %10 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %9) + store ptr %10, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + %11 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + br i1 %5, label %_llgo_5, label %_llgo_6 _llgo_5: ; preds = %_llgo_4 - %8 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %9 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %8, 0 - %10 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %9, i64 0, 1 - %11 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %10, i64 0, 2 - %12 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %11) - store ptr %12, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - br label %_llgo_6 + %12 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %13 = icmp eq ptr %12, null + br i1 %13, label %_llgo_7, label %_llgo_8 -_llgo_6: ; preds = %_llgo_5, %_llgo_4 - %13 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - br i1 %5, label %_llgo_7, label %_llgo_8 +_llgo_6: ; preds = %_llgo_8, %_llgo_4 + %14 = load ptr, ptr @"_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Game", align 8 + %15 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 48 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 0, i64 0, i64 2) + %16 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Game", align 8 + %17 = icmp eq ptr %16, null + br i1 %17, label %_llgo_9, label %_llgo_10 -_llgo_7: ; preds = %_llgo_6 - %14 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %15 = icmp eq ptr %14, null - br i1 %15, label %_llgo_9, label %_llgo_10 - -_llgo_8: ; preds = %_llgo_10, %_llgo_6 - %16 = load ptr, ptr @"_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Game", align 8 - %17 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 48 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 0, i64 0, i64 2) - %18 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Game", align 8 - %19 = icmp eq ptr %18, null - br i1 %19, label %_llgo_11, label %_llgo_12 - -_llgo_9: ; preds = %_llgo_7 - %20 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %21 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %20, 0 - %22 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %21, i64 0, 1 - %23 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %22, i64 0, 2 - %24 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %25 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %24, 0 - %26 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %25, i64 0, 1 - %27 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %26, i64 0, 2 - %28 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %23, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %27, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %28) - store ptr %28, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - br label %_llgo_10 - -_llgo_10: ; preds = %_llgo_9, %_llgo_7 - %29 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %30 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %29, 1 - %31 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %30, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).Load", 2 - %32 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %31, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).Load", 3 - %33 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %34 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 57 }, ptr undef, ptr undef, ptr undef }, ptr %33, 1 - %35 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %34, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).initGame", 2 - %36 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %35, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).initGame", 3 - %37 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) - %38 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %37, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %32, ptr %38, align 8 - %39 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %37, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %36, ptr %39, align 8 - %40 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %37, 0 - %41 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %40, i64 2, 1 - %42 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %41, i64 2, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %3, ptr %13, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %42) +_llgo_7: ; preds = %_llgo_5 + %18 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %19 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %18, 0 + %20 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %19, i64 0, 1 + %21 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %20, i64 0, 2 + %22 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %23 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %22, 0 + %24 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %23, i64 0, 1 + %25 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %24, i64 0, 2 + %26 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %21, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %25, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %26) + store ptr %26, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 br label %_llgo_8 -_llgo_11: ; preds = %_llgo_8 - %43 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %17) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %43) - store ptr %43, ptr @"*_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Game", align 8 +_llgo_8: ; preds = %_llgo_7, %_llgo_5 + %27 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %28 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %27, 1 + %29 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %28, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).Load", 2 + %30 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %29, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).Load", 3 + %31 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %32 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 57 }, ptr undef, ptr undef, ptr undef }, ptr %31, 1 + %33 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %32, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).initGame", 2 + %34 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %33, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).initGame", 3 + %35 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) + %36 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %35, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %30, ptr %36, align 8 + %37 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %35, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %34, ptr %37, align 8 + %38 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %35, 0 + %39 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %38, i64 2, 1 + %40 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %39, i64 2, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %3, ptr %11, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %40) + br label %_llgo_6 + +_llgo_9: ; preds = %_llgo_6 + %41 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %15) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %41) + store ptr %41, ptr @"*_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Game", align 8 + br label %_llgo_10 + +_llgo_10: ; preds = %_llgo_9, %_llgo_6 + %42 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Game", align 8 + %43 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 48 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 0, i64 0, i64 2) + %44 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %43) + %45 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %44, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) + %46 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) + %47 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %46, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %45, ptr %47, align 8 + %48 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %46, 0 + %49 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %48, i64 1, 1 + %50 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %49, i64 1, 2 + %51 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %50) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %51) + store ptr %51, ptr @"_llgo_struct$8pZiNl4ZxK-lZr-eyXOGJ2lgSsNDx-SmrHiChs0Nc-o", align 8 + %52 = load ptr, ptr @"_llgo_struct$8pZiNl4ZxK-lZr-eyXOGJ2lgSsNDx-SmrHiChs0Nc-o", align 8 + br i1 %2, label %_llgo_11, label %_llgo_12 + +_llgo_11: ; preds = %_llgo_10 + %53 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %54 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %53, 1 + %55 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %54, ptr @"main.(*Game1).Load", 2 + %56 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %55, ptr @"main.(*Game1).Load", 3 + %57 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %53, 1 + %58 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %57, ptr @"main.(*Game1).Load", 2 + %59 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %58, ptr @main.Game1.Load, 3 + %60 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %61 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 57 }, ptr undef, ptr undef, ptr undef }, ptr %60, 1 + %62 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %61, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).initGame", 2 + %63 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %62, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).initGame", 3 + %64 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) + %65 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %64, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %59, ptr %65, align 8 + %66 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %64, 0 + %67 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %66, i64 1, 1 + %68 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %67, i64 1, 2 + %69 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) + %70 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %69, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %56, ptr %70, align 8 + %71 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %69, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %63, ptr %71, align 8 + %72 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %69, 0 + %73 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %72, i64 2, 1 + %74 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %73, i64 2, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %0, ptr %52, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %68, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %74) br label %_llgo_12 -_llgo_12: ; preds = %_llgo_11, %_llgo_8 - %44 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Game", align 8 - %45 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 48 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 0, i64 0, i64 2) - %46 = load ptr, ptr @"_llgo_struct$8pZiNl4ZxK-lZr-eyXOGJ2lgSsNDx-SmrHiChs0Nc-o", align 8 - %47 = icmp eq ptr %46, null - br i1 %47, label %_llgo_13, label %_llgo_14 +_llgo_12: ; preds = %_llgo_11, %_llgo_10 + %75 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 5 }, i64 25, i64 8, i64 2, i64 2) + %76 = load ptr, ptr @"*_llgo_main.Game1", align 8 + %77 = icmp eq ptr %76, null + br i1 %77, label %_llgo_13, label %_llgo_14 _llgo_13: ; preds = %_llgo_12 - %48 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %45) - %49 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %48, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) - %50 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) - %51 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %50, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %49, ptr %51, align 8 - %52 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %50, 0 - %53 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %52, i64 1, 1 - %54 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %53, i64 1, 2 - %55 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %54) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %55) - store ptr %55, ptr @"_llgo_struct$8pZiNl4ZxK-lZr-eyXOGJ2lgSsNDx-SmrHiChs0Nc-o", align 8 + %78 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %75) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %78) + store ptr %78, ptr @"*_llgo_main.Game1", align 8 br label %_llgo_14 _llgo_14: ; preds = %_llgo_13, %_llgo_12 - %56 = load ptr, ptr @"_llgo_struct$8pZiNl4ZxK-lZr-eyXOGJ2lgSsNDx-SmrHiChs0Nc-o", align 8 - br i1 %2, label %_llgo_15, label %_llgo_16 + %79 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @7, i64 5 }, i64 25, i64 0, i64 0, i64 1) + %80 = load ptr, ptr @_llgo_main.Game2, align 8 + %81 = icmp eq ptr %80, null + br i1 %81, label %_llgo_15, label %_llgo_16 _llgo_15: ; preds = %_llgo_14 - %57 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %58 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %57, 1 - %59 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %58, ptr @"main.(*Game1).Load", 2 - %60 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %59, ptr @"main.(*Game1).Load", 3 - %61 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %57, 1 - %62 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %61, ptr @"main.(*Game1).Load", 2 - %63 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %62, ptr @main.Game1.Load, 3 - %64 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %65 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 57 }, ptr undef, ptr undef, ptr undef }, ptr %64, 1 - %66 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %65, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).initGame", 2 - %67 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %66, ptr @"github.com/goplus/llgo/compiler/cl/_testdata/foo.(*Game).initGame", 3 - %68 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) - %69 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %68, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %63, ptr %69, align 8 - %70 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %68, 0 - %71 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %70, i64 1, 1 - %72 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %71, i64 1, 2 - %73 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) - %74 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %73, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %60, ptr %74, align 8 - %75 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %73, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %67, ptr %75, align 8 - %76 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %73, 0 - %77 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %76, i64 2, 1 - %78 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %77, i64 2, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %0, ptr %56, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %72, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %78) + store ptr %79, ptr @_llgo_main.Game2, align 8 br label %_llgo_16 _llgo_16: ; preds = %_llgo_15, %_llgo_14 - %79 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 5 }, i64 25, i64 8, i64 2, i64 2) - %80 = load ptr, ptr @"*_llgo_main.Game1", align 8 - %81 = icmp eq ptr %80, null + %82 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 br i1 %81, label %_llgo_17, label %_llgo_18 _llgo_17: ; preds = %_llgo_16 - %82 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %79) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %82) - store ptr %82, ptr @"*_llgo_main.Game1", align 8 + %83 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %84 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @8, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %83, 1 + %85 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %84, ptr @"main.(*Game2).initGame", 2 + %86 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %85, ptr @"main.(*Game2).initGame", 3 + %87 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) + %88 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %87, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %86, ptr %88, align 8 + %89 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %87, 0 + %90 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %89, i64 1, 1 + %91 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %90, i64 1, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %79, ptr %82, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %91) br label %_llgo_18 _llgo_18: ; preds = %_llgo_17, %_llgo_16 - %83 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @7, i64 5 }, i64 25, i64 0, i64 0, i64 1) - %84 = load ptr, ptr @_llgo_main.Game2, align 8 - %85 = icmp eq ptr %84, null - br i1 %85, label %_llgo_19, label %_llgo_20 + %92 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @7, i64 5 }, i64 25, i64 0, i64 0, i64 1) + %93 = load ptr, ptr @"*_llgo_main.Game2", align 8 + %94 = icmp eq ptr %93, null + br i1 %94, label %_llgo_19, label %_llgo_20 _llgo_19: ; preds = %_llgo_18 - store ptr %83, ptr @_llgo_main.Game2, align 8 + %95 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %92) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %95) + store ptr %95, ptr @"*_llgo_main.Game2", align 8 br label %_llgo_20 _llgo_20: ; preds = %_llgo_19, %_llgo_18 - %86 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - br i1 %85, label %_llgo_21, label %_llgo_22 + %96 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamedInterface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 48 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 5 }) + %97 = load ptr, ptr @"_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Gamer", align 8 + %98 = icmp eq ptr %97, null + br i1 %98, label %_llgo_21, label %_llgo_22 _llgo_21: ; preds = %_llgo_20 - %87 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %88 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @8, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %87, 1 - %89 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %88, ptr @"main.(*Game2).initGame", 2 - %90 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %89, ptr @"main.(*Game2).initGame", 3 - %91 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) - %92 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %91, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %90, ptr %92, align 8 - %93 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %91, 0 - %94 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %93, i64 1, 1 - %95 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %94, i64 1, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %83, ptr %86, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %95) + store ptr %96, ptr @"_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Gamer", align 8 br label %_llgo_22 _llgo_22: ; preds = %_llgo_21, %_llgo_20 - %96 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @7, i64 5 }, i64 25, i64 0, i64 0, i64 1) - %97 = load ptr, ptr @"*_llgo_main.Game2", align 8 - %98 = icmp eq ptr %97, null + %99 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %100 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 br i1 %98, label %_llgo_23, label %_llgo_24 _llgo_23: ; preds = %_llgo_22 - %99 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %96) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %99) - store ptr %99, ptr @"*_llgo_main.Game2", align 8 + %101 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 4 }, ptr undef }, ptr %99, 1 + %102 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 57 }, ptr undef }, ptr %100, 1 + %103 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 48) + %104 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %103, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %101, ptr %104, align 8 + %105 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %103, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %102, ptr %105, align 8 + %106 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %103, 0 + %107 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %106, i64 2, 1 + %108 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %107, i64 2, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamedInterface"(ptr %96, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %108) br label %_llgo_24 _llgo_24: ; preds = %_llgo_23, %_llgo_22 - %100 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamedInterface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 48 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 5 }) - %101 = load ptr, ptr @"_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Gamer", align 8 - %102 = icmp eq ptr %101, null - br i1 %102, label %_llgo_25, label %_llgo_26 - -_llgo_25: ; preds = %_llgo_24 - store ptr %100, ptr @"_llgo_github.com/goplus/llgo/compiler/cl/_testdata/foo.Gamer", align 8 - br label %_llgo_26 - -_llgo_26: ; preds = %_llgo_25, %_llgo_24 - %103 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %104 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - br i1 %102, label %_llgo_27, label %_llgo_28 - -_llgo_27: ; preds = %_llgo_26 - %105 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 4 }, ptr undef }, ptr %103, 1 - %106 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 57 }, ptr undef }, ptr %104, 1 - %107 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 48) - %108 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %107, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %105, ptr %108, align 8 - %109 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %107, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %106, ptr %109, align 8 - %110 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %107, 0 - %111 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %110, i64 2, 1 - %112 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %111, i64 2, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamedInterface"(ptr %100, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %112) - br label %_llgo_28 - -_llgo_28: ; preds = %_llgo_27, %_llgo_26 - %113 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %114 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %115 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 4 }, ptr undef }, ptr %113, 1 - %116 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 57 }, ptr undef }, ptr %114, 1 - %117 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 48) - %118 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %117, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %115, ptr %118, align 8 - %119 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %117, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %116, ptr %119, align 8 - %120 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %117, 0 - %121 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %120, i64 2, 1 - %122 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %121, i64 2, 2 - %123 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %122) - store ptr %123, ptr @"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg", align 8 + %109 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %110 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %111 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 4 }, ptr undef }, ptr %109, 1 + %112 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 57 }, ptr undef }, ptr %110, 1 + %113 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 48) + %114 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %113, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %111, ptr %114, align 8 + %115 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %113, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %112, ptr %115, align 8 + %116 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %113, 0 + %117 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %116, i64 2, 1 + %118 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %117, i64 2, 2 + %119 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %118) + store ptr %119, ptr @"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg", align 8 ret void } diff --git a/compiler/cl/_testgo/reader/out.ll b/compiler/cl/_testgo/reader/out.ll index cb8ebdc1..a9b92c20 100644 --- a/compiler/cl/_testgo/reader/out.ll +++ b/compiler/cl/_testgo/reader/out.ll @@ -1189,541 +1189,533 @@ _llgo_33: ; preds = %_llgo_32 _llgo_34: ; preds = %_llgo_33, %_llgo_32 %122 = load ptr, ptr @_llgo_main.Reader, align 8 %123 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamedInterface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @8, i64 6 }) - %124 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 - %125 = icmp eq ptr %124, null - br i1 %125, label %_llgo_35, label %_llgo_36 + %124 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @8, i64 6 }, ptr %123, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) + %125 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) + %126 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %125, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %124, ptr %126, align 8 + %127 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %125, 0 + %128 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %127, i64 1, 1 + %129 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %128, i64 1, 2 + %130 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %129) + store ptr %130, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 + %131 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 + %132 = load ptr, ptr @_llgo_error, align 8 + %133 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %134 = icmp eq ptr %133, null + br i1 %134, label %_llgo_35, label %_llgo_36 _llgo_35: ; preds = %_llgo_34 - %126 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @8, i64 6 }, ptr %123, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) - %127 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) - %128 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %127, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %126, ptr %128, align 8 - %129 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %127, 0 - %130 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %129, i64 1, 1 - %131 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %130, i64 1, 2 - %132 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %131) - store ptr %132, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 + %135 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %136 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %135, 0 + %137 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %136, i64 0, 1 + %138 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %137, i64 0, 2 + %139 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %140 = getelementptr ptr, ptr %139, i64 0 + store ptr %132, ptr %140, align 8 + %141 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %139, 0 + %142 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %141, i64 1, 1 + %143 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %142, i64 1, 2 + %144 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %138, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %143, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %144) + store ptr %144, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 br label %_llgo_36 _llgo_36: ; preds = %_llgo_35, %_llgo_34 - %133 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 - %134 = load ptr, ptr @_llgo_error, align 8 - %135 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - %136 = icmp eq ptr %135, null - br i1 %136, label %_llgo_37, label %_llgo_38 + %145 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %146 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %145, 1 + %147 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %146, ptr @"main.(*nopCloserWriterTo).Close", 2 + %148 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %147, ptr @"main.(*nopCloserWriterTo).Close", 3 + %149 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %145, 1 + %150 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %149, ptr @"main.(*nopCloserWriterTo).Close", 2 + %151 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %150, ptr @main.nopCloserWriterTo.Close, 3 + %152 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %153 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %152, 1 + %154 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %153, ptr @"main.(*nopCloserWriterTo).Read", 2 + %155 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %154, ptr @"main.(*nopCloserWriterTo).Read", 3 + %156 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %152, 1 + %157 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %156, ptr @"main.(*nopCloserWriterTo).Read", 2 + %158 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %157, ptr @main.nopCloserWriterTo.Read, 3 + %159 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 + %160 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %159, 1 + %161 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %160, ptr @"main.(*nopCloserWriterTo).WriteTo", 2 + %162 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %161, ptr @"main.(*nopCloserWriterTo).WriteTo", 3 + %163 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %159, 1 + %164 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %163, ptr @"main.(*nopCloserWriterTo).WriteTo", 2 + %165 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %164, ptr @main.nopCloserWriterTo.WriteTo, 3 + %166 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 120) + %167 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %166, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %151, ptr %167, align 8 + %168 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %166, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %158, ptr %168, align 8 + %169 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %166, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %165, ptr %169, align 8 + %170 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %166, 0 + %171 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %170, i64 3, 1 + %172 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %171, i64 3, 2 + %173 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 120) + %174 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %173, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %148, ptr %174, align 8 + %175 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %173, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %155, ptr %175, align 8 + %176 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %173, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %162, ptr %176, align 8 + %177 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %173, 0 + %178 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %177, i64 3, 1 + %179 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %178, i64 3, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %110, ptr %131, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %172, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %179) + %180 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %181 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %182 = load ptr, ptr @"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I", align 8 + %183 = icmp eq ptr %182, null + br i1 %183, label %_llgo_37, label %_llgo_38 _llgo_37: ; preds = %_llgo_36 - %137 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %138 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %137, 0 - %139 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %138, i64 0, 1 - %140 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %139, i64 0, 2 - %141 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %142 = getelementptr ptr, ptr %141, i64 0 - store ptr %134, ptr %142, align 8 - %143 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %141, 0 - %144 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %143, i64 1, 1 - %145 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %144, i64 1, 2 - %146 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %140, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %145, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %146) - store ptr %146, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %184 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 5 }, ptr undef }, ptr %180, 1 + %185 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef }, ptr %181, 1 + %186 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 48) + %187 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %186, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %184, ptr %187, align 8 + %188 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %186, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %185, ptr %188, align 8 + %189 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %186, 0 + %190 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %189, i64 2, 1 + %191 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %190, i64 2, 2 + %192 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %191) + store ptr %192, ptr @"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I", align 8 br label %_llgo_38 _llgo_38: ; preds = %_llgo_37, %_llgo_36 - %147 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - %148 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %147, 1 - %149 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %148, ptr @"main.(*nopCloserWriterTo).Close", 2 - %150 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %149, ptr @"main.(*nopCloserWriterTo).Close", 3 - %151 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %147, 1 - %152 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %151, ptr @"main.(*nopCloserWriterTo).Close", 2 - %153 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %152, ptr @main.nopCloserWriterTo.Close, 3 - %154 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %155 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %154, 1 - %156 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %155, ptr @"main.(*nopCloserWriterTo).Read", 2 - %157 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %156, ptr @"main.(*nopCloserWriterTo).Read", 3 - %158 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %154, 1 - %159 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %158, ptr @"main.(*nopCloserWriterTo).Read", 2 - %160 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %159, ptr @main.nopCloserWriterTo.Read, 3 - %161 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 - %162 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %161, 1 - %163 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %162, ptr @"main.(*nopCloserWriterTo).WriteTo", 2 - %164 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %163, ptr @"main.(*nopCloserWriterTo).WriteTo", 3 - %165 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %161, 1 - %166 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %165, ptr @"main.(*nopCloserWriterTo).WriteTo", 2 - %167 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %166, ptr @main.nopCloserWriterTo.WriteTo, 3 - %168 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 120) - %169 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %168, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %153, ptr %169, align 8 - %170 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %168, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %160, ptr %170, align 8 - %171 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %168, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %167, ptr %171, align 8 - %172 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %168, 0 - %173 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %172, i64 3, 1 - %174 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %173, i64 3, 2 - %175 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 120) - %176 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %175, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %150, ptr %176, align 8 - %177 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %175, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %157, ptr %177, align 8 - %178 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %175, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %164, ptr %178, align 8 - %179 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %175, 0 - %180 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %179, i64 3, 1 - %181 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %180, i64 3, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %110, ptr %133, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %174, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %181) - %182 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - %183 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %184 = load ptr, ptr @"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I", align 8 - %185 = icmp eq ptr %184, null - br i1 %185, label %_llgo_39, label %_llgo_40 + %193 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @11, i64 9 }, i64 25, i64 16, i64 2, i64 2) + store ptr %193, ptr @_llgo_main.nopCloser, align 8 + %194 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 + %195 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %196 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %195, 1 + %197 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %196, ptr @"main.(*nopCloser).Close", 2 + %198 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %197, ptr @"main.(*nopCloser).Close", 3 + %199 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %195, 1 + %200 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %199, ptr @"main.(*nopCloser).Close", 2 + %201 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %200, ptr @main.nopCloser.Close, 3 + %202 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %203 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %202, 1 + %204 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %203, ptr @"main.(*nopCloser).Read", 2 + %205 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %204, ptr @"main.(*nopCloser).Read", 3 + %206 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %202, 1 + %207 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %206, ptr @"main.(*nopCloser).Read", 2 + %208 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %207, ptr @main.nopCloser.Read, 3 + %209 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) + %210 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %209, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %201, ptr %210, align 8 + %211 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %209, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %208, ptr %211, align 8 + %212 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %209, 0 + %213 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %212, i64 2, 1 + %214 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %213, i64 2, 2 + %215 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) + %216 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %215, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %198, ptr %216, align 8 + %217 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %215, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %205, ptr %217, align 8 + %218 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %215, 0 + %219 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %218, i64 2, 1 + %220 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %219, i64 2, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %193, ptr %194, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %214, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %220) + %221 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamedInterface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @12, i64 12 }) + %222 = load ptr, ptr @_llgo_main.StringWriter, align 8 + %223 = icmp eq ptr %222, null + br i1 %223, label %_llgo_39, label %_llgo_40 _llgo_39: ; preds = %_llgo_38 - %186 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 5 }, ptr undef }, ptr %182, 1 - %187 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef }, ptr %183, 1 - %188 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 48) - %189 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %188, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %186, ptr %189, align 8 - %190 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %188, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %187, ptr %190, align 8 - %191 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %188, 0 - %192 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %191, i64 2, 1 - %193 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %192, i64 2, 2 - %194 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %193) - store ptr %194, ptr @"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I", align 8 + store ptr %221, ptr @_llgo_main.StringWriter, align 8 br label %_llgo_40 _llgo_40: ; preds = %_llgo_39, %_llgo_38 - %195 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @11, i64 9 }, i64 25, i64 16, i64 2, i64 2) - store ptr %195, ptr @_llgo_main.nopCloser, align 8 - %196 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 - %197 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - %198 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %197, 1 - %199 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %198, ptr @"main.(*nopCloser).Close", 2 - %200 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %199, ptr @"main.(*nopCloser).Close", 3 - %201 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @10, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %197, 1 - %202 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %201, ptr @"main.(*nopCloser).Close", 2 - %203 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %202, ptr @main.nopCloser.Close, 3 - %204 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %205 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %204, 1 - %206 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %205, ptr @"main.(*nopCloser).Read", 2 - %207 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %206, ptr @"main.(*nopCloser).Read", 3 - %208 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %204, 1 - %209 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %208, ptr @"main.(*nopCloser).Read", 2 - %210 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %209, ptr @main.nopCloser.Read, 3 - %211 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) - %212 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %211, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %203, ptr %212, align 8 - %213 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %211, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %210, ptr %213, align 8 - %214 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %211, 0 - %215 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %214, i64 2, 1 - %216 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %215, i64 2, 2 - %217 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) - %218 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %217, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %200, ptr %218, align 8 - %219 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %217, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %207, ptr %219, align 8 - %220 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %217, 0 - %221 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %220, i64 2, 1 - %222 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %221, i64 2, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %195, ptr %196, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %216, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %222) - %223 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamedInterface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @12, i64 12 }) - %224 = load ptr, ptr @_llgo_main.StringWriter, align 8 - %225 = icmp eq ptr %224, null - br i1 %225, label %_llgo_41, label %_llgo_42 + %224 = load ptr, ptr @_llgo_string, align 8 + %225 = load ptr, ptr @_llgo_int, align 8 + %226 = load ptr, ptr @_llgo_error, align 8 + %227 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 + %228 = icmp eq ptr %227, null + br i1 %228, label %_llgo_41, label %_llgo_42 _llgo_41: ; preds = %_llgo_40 - store ptr %223, ptr @_llgo_main.StringWriter, align 8 + %229 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %230 = getelementptr ptr, ptr %229, i64 0 + store ptr %224, ptr %230, align 8 + %231 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %229, 0 + %232 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %231, i64 1, 1 + %233 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %232, i64 1, 2 + %234 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) + %235 = getelementptr ptr, ptr %234, i64 0 + store ptr %225, ptr %235, align 8 + %236 = getelementptr ptr, ptr %234, i64 1 + store ptr %226, ptr %236, align 8 + %237 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %234, 0 + %238 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %237, i64 2, 1 + %239 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %238, i64 2, 2 + %240 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %233, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %239, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %240) + store ptr %240, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 br label %_llgo_42 _llgo_42: ; preds = %_llgo_41, %_llgo_40 - %226 = load ptr, ptr @_llgo_string, align 8 - %227 = load ptr, ptr @_llgo_int, align 8 - %228 = load ptr, ptr @_llgo_error, align 8 - %229 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 - %230 = icmp eq ptr %229, null - br i1 %230, label %_llgo_43, label %_llgo_44 + %241 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 + br i1 %223, label %_llgo_43, label %_llgo_44 _llgo_43: ; preds = %_llgo_42 - %231 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %232 = getelementptr ptr, ptr %231, i64 0 - store ptr %226, ptr %232, align 8 - %233 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %231, 0 - %234 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %233, i64 1, 1 - %235 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %234, i64 1, 2 - %236 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) - %237 = getelementptr ptr, ptr %236, i64 0 - store ptr %227, ptr %237, align 8 - %238 = getelementptr ptr, ptr %236, i64 1 - store ptr %228, ptr %238, align 8 - %239 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %236, 0 - %240 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %239, i64 2, 1 - %241 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %240, i64 2, 2 - %242 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %235, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %241, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %242) - store ptr %242, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 + %242 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @13, i64 11 }, ptr undef }, ptr %241, 1 + %243 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 24) + %244 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %243, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %242, ptr %244, align 8 + %245 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %243, 0 + %246 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %245, i64 1, 1 + %247 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %246, i64 1, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamedInterface"(ptr %221, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %247) br label %_llgo_44 _llgo_44: ; preds = %_llgo_43, %_llgo_42 - %243 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 - br i1 %225, label %_llgo_45, label %_llgo_46 + %248 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 + %249 = load ptr, ptr @"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU", align 8 + %250 = icmp eq ptr %249, null + br i1 %250, label %_llgo_45, label %_llgo_46 _llgo_45: ; preds = %_llgo_44 - %244 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @13, i64 11 }, ptr undef }, ptr %243, 1 - %245 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 24) - %246 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %245, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %244, ptr %246, align 8 - %247 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %245, 0 - %248 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %247, i64 1, 1 - %249 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %248, i64 1, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamedInterface"(ptr %223, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %249) + %251 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @13, i64 11 }, ptr undef }, ptr %248, 1 + %252 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 24) + %253 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %252, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %251, ptr %253, align 8 + %254 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %252, 0 + %255 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %254, i64 1, 1 + %256 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %255, i64 1, 2 + %257 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %256) + store ptr %257, ptr @"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU", align 8 br label %_llgo_46 _llgo_46: ; preds = %_llgo_45, %_llgo_44 - %250 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 - %251 = load ptr, ptr @"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU", align 8 - %252 = icmp eq ptr %251, null - br i1 %252, label %_llgo_47, label %_llgo_48 + %258 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 12 }, i64 25, i64 32, i64 0, i64 10) + store ptr %258, ptr @_llgo_main.stringReader, align 8 + %259 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %260 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 1 }, ptr %259, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %261 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 38) + %262 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 1 }, ptr %261, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %263 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) + %264 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @20, i64 8 }, ptr %263, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %265 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 168) + %266 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %265, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %260, ptr %266, align 8 + %267 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %265, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %262, ptr %267, align 8 + %268 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %265, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %264, ptr %268, align 8 + %269 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %265, 0 + %270 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %269, i64 3, 1 + %271 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %270, i64 3, 2 + %272 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 32, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %271) + store ptr %272, ptr @"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk", align 8 + %273 = load ptr, ptr @"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk", align 8 + %274 = load ptr, ptr @_llgo_int, align 8 + %275 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %276 = icmp eq ptr %275, null + br i1 %276, label %_llgo_47, label %_llgo_48 _llgo_47: ; preds = %_llgo_46 - %253 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @13, i64 11 }, ptr undef }, ptr %250, 1 - %254 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 24) - %255 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %254, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %253, ptr %255, align 8 - %256 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %254, 0 - %257 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %256, i64 1, 1 - %258 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %257, i64 1, 2 - %259 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %258) - store ptr %259, ptr @"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU", align 8 + %277 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %278 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %277, 0 + %279 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %278, i64 0, 1 + %280 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %279, i64 0, 2 + %281 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %282 = getelementptr ptr, ptr %281, i64 0 + store ptr %274, ptr %282, align 8 + %283 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %281, 0 + %284 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %283, i64 1, 1 + %285 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %284, i64 1, 2 + %286 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %280, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %285, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %286) + store ptr %286, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 br label %_llgo_48 _llgo_48: ; preds = %_llgo_47, %_llgo_46 - %260 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 12 }, i64 25, i64 32, i64 0, i64 10) - store ptr %260, ptr @_llgo_main.stringReader, align 8 - %261 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %262 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 1 }, ptr %261, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %263 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 38) - %264 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 1 }, ptr %263, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %265 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) - %266 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @20, i64 8 }, ptr %265, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %267 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 168) - %268 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %267, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %262, ptr %268, align 8 - %269 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %267, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %264, ptr %269, align 8 - %270 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %267, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %266, ptr %270, align 8 - %271 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %267, 0 - %272 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %271, i64 3, 1 - %273 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %272, i64 3, 2 - %274 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 32, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %273) - store ptr %274, ptr @"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk", align 8 - %275 = load ptr, ptr @"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk", align 8 - %276 = load ptr, ptr @_llgo_int, align 8 - %277 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %278 = icmp eq ptr %277, null - br i1 %278, label %_llgo_49, label %_llgo_50 + %287 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %288 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %287, 1 + %289 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %288, ptr @"main.(*stringReader).Len", 2 + %290 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %289, ptr @"main.(*stringReader).Len", 3 + %291 = load ptr, ptr @"[]_llgo_byte", align 8 + %292 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %293 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %292, 1 + %294 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %293, ptr @"main.(*stringReader).Read", 2 + %295 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %294, ptr @"main.(*stringReader).Read", 3 + %296 = load ptr, ptr @"[]_llgo_byte", align 8 + %297 = load ptr, ptr @"[]_llgo_byte", align 8 + %298 = load ptr, ptr @_llgo_int64, align 8 + %299 = load ptr, ptr @_llgo_int, align 8 + %300 = load ptr, ptr @_llgo_error, align 8 + %301 = load ptr, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8 + %302 = icmp eq ptr %301, null + br i1 %302, label %_llgo_49, label %_llgo_50 _llgo_49: ; preds = %_llgo_48 - %279 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %280 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %279, 0 - %281 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %280, i64 0, 1 - %282 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %281, i64 0, 2 - %283 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %284 = getelementptr ptr, ptr %283, i64 0 - store ptr %276, ptr %284, align 8 - %285 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %283, 0 - %286 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %285, i64 1, 1 - %287 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %286, i64 1, 2 - %288 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %282, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %287, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %288) - store ptr %288, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %303 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) + %304 = getelementptr ptr, ptr %303, i64 0 + store ptr %297, ptr %304, align 8 + %305 = getelementptr ptr, ptr %303, i64 1 + store ptr %298, ptr %305, align 8 + %306 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %303, 0 + %307 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %306, i64 2, 1 + %308 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %307, i64 2, 2 + %309 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) + %310 = getelementptr ptr, ptr %309, i64 0 + store ptr %299, ptr %310, align 8 + %311 = getelementptr ptr, ptr %309, i64 1 + store ptr %300, ptr %311, align 8 + %312 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %309, 0 + %313 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %312, i64 2, 1 + %314 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %313, i64 2, 2 + %315 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %308, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %314, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %315) + store ptr %315, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8 br label %_llgo_50 _llgo_50: ; preds = %_llgo_49, %_llgo_48 - %289 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %290 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %289, 1 - %291 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %290, ptr @"main.(*stringReader).Len", 2 - %292 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %291, ptr @"main.(*stringReader).Len", 3 - %293 = load ptr, ptr @"[]_llgo_byte", align 8 - %294 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %295 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %294, 1 - %296 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %295, ptr @"main.(*stringReader).Read", 2 - %297 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %296, ptr @"main.(*stringReader).Read", 3 - %298 = load ptr, ptr @"[]_llgo_byte", align 8 - %299 = load ptr, ptr @"[]_llgo_byte", align 8 - %300 = load ptr, ptr @_llgo_int64, align 8 - %301 = load ptr, ptr @_llgo_int, align 8 - %302 = load ptr, ptr @_llgo_error, align 8 - %303 = load ptr, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8 - %304 = icmp eq ptr %303, null - br i1 %304, label %_llgo_51, label %_llgo_52 + %316 = load ptr, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8 + %317 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %316, 1 + %318 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %317, ptr @"main.(*stringReader).ReadAt", 2 + %319 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %318, ptr @"main.(*stringReader).ReadAt", 3 + %320 = load ptr, ptr @_llgo_byte, align 8 + %321 = load ptr, ptr @_llgo_error, align 8 + %322 = load ptr, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8 + %323 = icmp eq ptr %322, null + br i1 %323, label %_llgo_51, label %_llgo_52 _llgo_51: ; preds = %_llgo_50 - %305 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) - %306 = getelementptr ptr, ptr %305, i64 0 - store ptr %299, ptr %306, align 8 - %307 = getelementptr ptr, ptr %305, i64 1 - store ptr %300, ptr %307, align 8 - %308 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %305, 0 - %309 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %308, i64 2, 1 - %310 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %309, i64 2, 2 - %311 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) - %312 = getelementptr ptr, ptr %311, i64 0 - store ptr %301, ptr %312, align 8 - %313 = getelementptr ptr, ptr %311, i64 1 - store ptr %302, ptr %313, align 8 - %314 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %311, 0 - %315 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %314, i64 2, 1 - %316 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %315, i64 2, 2 - %317 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %310, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %316, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %317) - store ptr %317, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8 + %324 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %325 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %324, 0 + %326 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %325, i64 0, 1 + %327 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %326, i64 0, 2 + %328 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) + %329 = getelementptr ptr, ptr %328, i64 0 + store ptr %320, ptr %329, align 8 + %330 = getelementptr ptr, ptr %328, i64 1 + store ptr %321, ptr %330, align 8 + %331 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %328, 0 + %332 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %331, i64 2, 1 + %333 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %332, i64 2, 2 + %334 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %327, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %333, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %334) + store ptr %334, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8 br label %_llgo_52 _llgo_52: ; preds = %_llgo_51, %_llgo_50 - %318 = load ptr, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8 - %319 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %318, 1 - %320 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %319, ptr @"main.(*stringReader).ReadAt", 2 - %321 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %320, ptr @"main.(*stringReader).ReadAt", 3 - %322 = load ptr, ptr @_llgo_byte, align 8 - %323 = load ptr, ptr @_llgo_error, align 8 - %324 = load ptr, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8 - %325 = icmp eq ptr %324, null - br i1 %325, label %_llgo_53, label %_llgo_54 + %335 = load ptr, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8 + %336 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %335, 1 + %337 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %336, ptr @"main.(*stringReader).ReadByte", 2 + %338 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %337, ptr @"main.(*stringReader).ReadByte", 3 + %339 = load ptr, ptr @_llgo_rune, align 8 + %340 = icmp eq ptr %339, null + br i1 %340, label %_llgo_53, label %_llgo_54 _llgo_53: ; preds = %_llgo_52 - %326 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %327 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %326, 0 - %328 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %327, i64 0, 1 - %329 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %328, i64 0, 2 - %330 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) - %331 = getelementptr ptr, ptr %330, i64 0 - store ptr %322, ptr %331, align 8 - %332 = getelementptr ptr, ptr %330, i64 1 - store ptr %323, ptr %332, align 8 - %333 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %330, 0 - %334 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %333, i64 2, 1 - %335 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %334, i64 2, 2 - %336 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %329, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %335, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %336) - store ptr %336, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8 + %341 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 37) + store ptr %341, ptr @_llgo_rune, align 8 br label %_llgo_54 _llgo_54: ; preds = %_llgo_53, %_llgo_52 - %337 = load ptr, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8 - %338 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %337, 1 - %339 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %338, ptr @"main.(*stringReader).ReadByte", 2 - %340 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %339, ptr @"main.(*stringReader).ReadByte", 3 - %341 = load ptr, ptr @_llgo_rune, align 8 - %342 = icmp eq ptr %341, null - br i1 %342, label %_llgo_55, label %_llgo_56 + %342 = load ptr, ptr @_llgo_rune, align 8 + %343 = load ptr, ptr @_llgo_rune, align 8 + %344 = load ptr, ptr @_llgo_int, align 8 + %345 = load ptr, ptr @_llgo_error, align 8 + %346 = load ptr, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8 + %347 = icmp eq ptr %346, null + br i1 %347, label %_llgo_55, label %_llgo_56 _llgo_55: ; preds = %_llgo_54 - %343 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 37) - store ptr %343, ptr @_llgo_rune, align 8 + %348 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %349 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %348, 0 + %350 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %349, i64 0, 1 + %351 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %350, i64 0, 2 + %352 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 24) + %353 = getelementptr ptr, ptr %352, i64 0 + store ptr %343, ptr %353, align 8 + %354 = getelementptr ptr, ptr %352, i64 1 + store ptr %344, ptr %354, align 8 + %355 = getelementptr ptr, ptr %352, i64 2 + store ptr %345, ptr %355, align 8 + %356 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %352, 0 + %357 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %356, i64 3, 1 + %358 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %357, i64 3, 2 + %359 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %351, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %358, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %359) + store ptr %359, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8 br label %_llgo_56 _llgo_56: ; preds = %_llgo_55, %_llgo_54 - %344 = load ptr, ptr @_llgo_rune, align 8 - %345 = load ptr, ptr @_llgo_rune, align 8 - %346 = load ptr, ptr @_llgo_int, align 8 - %347 = load ptr, ptr @_llgo_error, align 8 - %348 = load ptr, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8 - %349 = icmp eq ptr %348, null - br i1 %349, label %_llgo_57, label %_llgo_58 + %360 = load ptr, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8 + %361 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %360, 1 + %362 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %361, ptr @"main.(*stringReader).ReadRune", 2 + %363 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %362, ptr @"main.(*stringReader).ReadRune", 3 + %364 = load ptr, ptr @_llgo_int64, align 8 + %365 = load ptr, ptr @_llgo_int, align 8 + %366 = load ptr, ptr @_llgo_int64, align 8 + %367 = load ptr, ptr @_llgo_error, align 8 + %368 = load ptr, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8 + %369 = icmp eq ptr %368, null + br i1 %369, label %_llgo_57, label %_llgo_58 _llgo_57: ; preds = %_llgo_56 - %350 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %351 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %350, 0 - %352 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %351, i64 0, 1 - %353 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %352, i64 0, 2 - %354 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 24) - %355 = getelementptr ptr, ptr %354, i64 0 - store ptr %345, ptr %355, align 8 - %356 = getelementptr ptr, ptr %354, i64 1 - store ptr %346, ptr %356, align 8 - %357 = getelementptr ptr, ptr %354, i64 2 - store ptr %347, ptr %357, align 8 - %358 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %354, 0 - %359 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %358, i64 3, 1 - %360 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %359, i64 3, 2 - %361 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %353, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %360, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %361) - store ptr %361, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8 + %370 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) + %371 = getelementptr ptr, ptr %370, i64 0 + store ptr %364, ptr %371, align 8 + %372 = getelementptr ptr, ptr %370, i64 1 + store ptr %365, ptr %372, align 8 + %373 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %370, 0 + %374 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %373, i64 2, 1 + %375 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %374, i64 2, 2 + %376 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) + %377 = getelementptr ptr, ptr %376, i64 0 + store ptr %366, ptr %377, align 8 + %378 = getelementptr ptr, ptr %376, i64 1 + store ptr %367, ptr %378, align 8 + %379 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %376, 0 + %380 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %379, i64 2, 1 + %381 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %380, i64 2, 2 + %382 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %375, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %381, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %382) + store ptr %382, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8 br label %_llgo_58 _llgo_58: ; preds = %_llgo_57, %_llgo_56 - %362 = load ptr, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8 - %363 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %362, 1 - %364 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %363, ptr @"main.(*stringReader).ReadRune", 2 - %365 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %364, ptr @"main.(*stringReader).ReadRune", 3 - %366 = load ptr, ptr @_llgo_int64, align 8 - %367 = load ptr, ptr @_llgo_int, align 8 - %368 = load ptr, ptr @_llgo_int64, align 8 - %369 = load ptr, ptr @_llgo_error, align 8 - %370 = load ptr, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8 - %371 = icmp eq ptr %370, null - br i1 %371, label %_llgo_59, label %_llgo_60 + %383 = load ptr, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8 + %384 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @25, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %383, 1 + %385 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %384, ptr @"main.(*stringReader).Seek", 2 + %386 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %385, ptr @"main.(*stringReader).Seek", 3 + %387 = load ptr, ptr @_llgo_int64, align 8 + %388 = load ptr, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8 + %389 = icmp eq ptr %388, null + br i1 %389, label %_llgo_59, label %_llgo_60 _llgo_59: ; preds = %_llgo_58 - %372 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) - %373 = getelementptr ptr, ptr %372, i64 0 - store ptr %366, ptr %373, align 8 - %374 = getelementptr ptr, ptr %372, i64 1 - store ptr %367, ptr %374, align 8 - %375 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %372, 0 - %376 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %375, i64 2, 1 - %377 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %376, i64 2, 2 - %378 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) - %379 = getelementptr ptr, ptr %378, i64 0 - store ptr %368, ptr %379, align 8 - %380 = getelementptr ptr, ptr %378, i64 1 - store ptr %369, ptr %380, align 8 - %381 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %378, 0 - %382 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %381, i64 2, 1 - %383 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %382, i64 2, 2 - %384 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %377, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %383, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %384) - store ptr %384, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8 + %390 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %391 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %390, 0 + %392 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %391, i64 0, 1 + %393 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %392, i64 0, 2 + %394 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %395 = getelementptr ptr, ptr %394, i64 0 + store ptr %387, ptr %395, align 8 + %396 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %394, 0 + %397 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %396, i64 1, 1 + %398 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %397, i64 1, 2 + %399 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %393, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %398, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %399) + store ptr %399, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8 br label %_llgo_60 _llgo_60: ; preds = %_llgo_59, %_llgo_58 - %385 = load ptr, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8 - %386 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @25, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %385, 1 - %387 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %386, ptr @"main.(*stringReader).Seek", 2 - %388 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %387, ptr @"main.(*stringReader).Seek", 3 - %389 = load ptr, ptr @_llgo_int64, align 8 - %390 = load ptr, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8 - %391 = icmp eq ptr %390, null - br i1 %391, label %_llgo_61, label %_llgo_62 + %400 = load ptr, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8 + %401 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %400, 1 + %402 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %401, ptr @"main.(*stringReader).Size", 2 + %403 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %402, ptr @"main.(*stringReader).Size", 3 + %404 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %405 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @27, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %404, 1 + %406 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %405, ptr @"main.(*stringReader).UnreadByte", 2 + %407 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %406, ptr @"main.(*stringReader).UnreadByte", 3 + %408 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %409 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @28, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %408, 1 + %410 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %409, ptr @"main.(*stringReader).UnreadRune", 2 + %411 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %410, ptr @"main.(*stringReader).UnreadRune", 3 + %412 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 + %413 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %412, 1 + %414 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %413, ptr @"main.(*stringReader).WriteTo", 2 + %415 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %414, ptr @"main.(*stringReader).WriteTo", 3 + %416 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 400) + %417 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %416, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %290, ptr %417, align 8 + %418 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %416, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %295, ptr %418, align 8 + %419 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %416, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %319, ptr %419, align 8 + %420 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %416, i64 3 + store %"github.com/goplus/llgo/runtime/abi.Method" %338, ptr %420, align 8 + %421 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %416, i64 4 + store %"github.com/goplus/llgo/runtime/abi.Method" %363, ptr %421, align 8 + %422 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %416, i64 5 + store %"github.com/goplus/llgo/runtime/abi.Method" %386, ptr %422, align 8 + %423 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %416, i64 6 + store %"github.com/goplus/llgo/runtime/abi.Method" %403, ptr %423, align 8 + %424 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %416, i64 7 + store %"github.com/goplus/llgo/runtime/abi.Method" %407, ptr %424, align 8 + %425 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %416, i64 8 + store %"github.com/goplus/llgo/runtime/abi.Method" %411, ptr %425, align 8 + %426 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %416, i64 9 + store %"github.com/goplus/llgo/runtime/abi.Method" %415, ptr %426, align 8 + %427 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %416, 0 + %428 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %427, i64 10, 1 + %429 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %428, i64 10, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %258, ptr %273, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %429) + %430 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 12 }, i64 25, i64 32, i64 0, i64 10) + %431 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %430) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %431) + store ptr %431, ptr @"*_llgo_main.stringReader", align 8 + %432 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %433 = load ptr, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8 + %434 = icmp eq ptr %433, null + br i1 %434, label %_llgo_61, label %_llgo_62 _llgo_61: ; preds = %_llgo_60 - %392 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %393 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %392, 0 - %394 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %393, i64 0, 1 - %395 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %394, i64 0, 2 - %396 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %397 = getelementptr ptr, ptr %396, i64 0 - store ptr %389, ptr %397, align 8 - %398 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %396, 0 - %399 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %398, i64 1, 1 - %400 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %399, i64 1, 2 - %401 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %395, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %400, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %401) - store ptr %401, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8 + %435 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef }, ptr %432, 1 + %436 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 24) + %437 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %436, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %435, ptr %437, align 8 + %438 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %436, 0 + %439 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %438, i64 1, 1 + %440 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %439, i64 1, 2 + %441 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %440) + store ptr %441, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8 br label %_llgo_62 _llgo_62: ; preds = %_llgo_61, %_llgo_60 - %402 = load ptr, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8 - %403 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %402, 1 - %404 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %403, ptr @"main.(*stringReader).Size", 2 - %405 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %404, ptr @"main.(*stringReader).Size", 3 - %406 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - %407 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @27, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %406, 1 - %408 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %407, ptr @"main.(*stringReader).UnreadByte", 2 - %409 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %408, ptr @"main.(*stringReader).UnreadByte", 3 - %410 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - %411 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @28, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %410, 1 - %412 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %411, ptr @"main.(*stringReader).UnreadRune", 2 - %413 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %412, ptr @"main.(*stringReader).UnreadRune", 3 - %414 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 - %415 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %414, 1 - %416 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %415, ptr @"main.(*stringReader).WriteTo", 2 - %417 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %416, ptr @"main.(*stringReader).WriteTo", 3 - %418 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 400) - %419 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %418, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %292, ptr %419, align 8 - %420 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %418, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %297, ptr %420, align 8 - %421 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %418, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %321, ptr %421, align 8 - %422 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %418, i64 3 - store %"github.com/goplus/llgo/runtime/abi.Method" %340, ptr %422, align 8 - %423 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %418, i64 4 - store %"github.com/goplus/llgo/runtime/abi.Method" %365, ptr %423, align 8 - %424 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %418, i64 5 - store %"github.com/goplus/llgo/runtime/abi.Method" %388, ptr %424, align 8 - %425 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %418, i64 6 - store %"github.com/goplus/llgo/runtime/abi.Method" %405, ptr %425, align 8 - %426 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %418, i64 7 - store %"github.com/goplus/llgo/runtime/abi.Method" %409, ptr %426, align 8 - %427 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %418, i64 8 - store %"github.com/goplus/llgo/runtime/abi.Method" %413, ptr %427, align 8 - %428 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %418, i64 9 - store %"github.com/goplus/llgo/runtime/abi.Method" %417, ptr %428, align 8 - %429 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %418, 0 - %430 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %429, i64 10, 1 - %431 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %430, i64 10, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %260, ptr %275, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %431) - %432 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 12 }, i64 25, i64 32, i64 0, i64 10) - %433 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %432) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %433) - store ptr %433, ptr @"*_llgo_main.stringReader", align 8 - %434 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %435 = load ptr, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8 - %436 = icmp eq ptr %435, null - br i1 %436, label %_llgo_63, label %_llgo_64 + %442 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 11 }, i64 25, i64 16, i64 0, i64 1) + store ptr %442, ptr @_llgo_main.errorString, align 8 + %443 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %444 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 1 }, ptr %443, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %445 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) + %446 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %445, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %444, ptr %446, align 8 + %447 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %445, 0 + %448 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %447, i64 1, 1 + %449 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %448, i64 1, 2 + %450 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %449) + store ptr %450, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8 + %451 = load ptr, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8 + %452 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %453 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %452, 1 + %454 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %453, ptr @"main.(*errorString).Error", 2 + %455 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %454, ptr @"main.(*errorString).Error", 3 + %456 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) + %457 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %456, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %455, ptr %457, align 8 + %458 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %456, 0 + %459 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %458, i64 1, 1 + %460 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %459, i64 1, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %442, ptr %451, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %460) + %461 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 11 }, i64 25, i64 16, i64 0, i64 1) + %462 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %461) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %462) + store ptr %462, ptr @"*_llgo_main.errorString", align 8 + %463 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %464 = load ptr, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 + %465 = icmp eq ptr %464, null + br i1 %465, label %_llgo_63, label %_llgo_64 _llgo_63: ; preds = %_llgo_62 - %437 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @9, i64 4 }, ptr undef }, ptr %434, 1 - %438 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 24) - %439 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %438, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %437, ptr %439, align 8 - %440 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %438, 0 - %441 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %440, i64 1, 1 - %442 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %441, i64 1, 2 - %443 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %442) - store ptr %443, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8 + %466 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 5 }, ptr undef }, ptr %463, 1 + %467 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 24) + %468 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %467, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Imethod" %466, ptr %468, align 8 + %469 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %467, 0 + %470 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %469, i64 1, 1 + %471 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %470, i64 1, 2 + %472 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %471) + store ptr %472, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 br label %_llgo_64 _llgo_64: ; preds = %_llgo_63, %_llgo_62 - %444 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 11 }, i64 25, i64 16, i64 0, i64 1) - store ptr %444, ptr @_llgo_main.errorString, align 8 - %445 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %446 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 1 }, ptr %445, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %447 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) - %448 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %447, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %446, ptr %448, align 8 - %449 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %447, 0 - %450 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %449, i64 1, 1 - %451 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %450, i64 1, 2 - %452 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %451) - store ptr %452, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8 - %453 = load ptr, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8 - %454 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %455 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %454, 1 - %456 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %455, ptr @"main.(*errorString).Error", 2 - %457 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %456, ptr @"main.(*errorString).Error", 3 - %458 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) - %459 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %458, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %457, ptr %459, align 8 - %460 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %458, 0 - %461 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %460, i64 1, 1 - %462 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %461, i64 1, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %444, ptr %453, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %462) - %463 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 11 }, i64 25, i64 16, i64 0, i64 1) - %464 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %463) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %464) - store ptr %464, ptr @"*_llgo_main.errorString", align 8 - %465 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %466 = load ptr, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 - %467 = icmp eq ptr %466, null - br i1 %467, label %_llgo_65, label %_llgo_66 - -_llgo_65: ; preds = %_llgo_64 - %468 = insertvalue %"github.com/goplus/llgo/runtime/abi.Imethod" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @4, i64 5 }, ptr undef }, ptr %465, 1 - %469 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 24) - %470 = getelementptr %"github.com/goplus/llgo/runtime/abi.Imethod", ptr %469, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Imethod" %468, ptr %470, align 8 - %471 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %469, 0 - %472 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %471, i64 1, 1 - %473 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %472, i64 1, 2 - %474 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Interface"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %473) - store ptr %474, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 - br label %_llgo_66 - -_llgo_66: ; preds = %_llgo_65, %_llgo_64 ret void } diff --git a/compiler/cl/_testgo/strucintf/out.ll b/compiler/cl/_testgo/strucintf/out.ll index 79c20677..1d238e98 100644 --- a/compiler/cl/_testgo/strucintf/out.ll +++ b/compiler/cl/_testgo/strucintf/out.ll @@ -201,24 +201,16 @@ _llgo_2: ; preds = %_llgo_1, %_llgo_0 %9 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %8, i64 1, 2 %10 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 4 }, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %9) store ptr %10, ptr @"main.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88", align 8 - %11 = load ptr, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", align 8 - %12 = icmp eq ptr %11, null - br i1 %12, label %_llgo_3, label %_llgo_4 - -_llgo_3: ; preds = %_llgo_2 - %13 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) - %14 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 1 }, ptr %13, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %15 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) - %16 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %15, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %14, ptr %16, align 8 - %17 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %15, 0 - %18 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %17, i64 1, 1 - %19 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %18, i64 1, 2 - %20 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 4 }, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %19) - store ptr %20, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", align 8 - br label %_llgo_4 - -_llgo_4: ; preds = %_llgo_3, %_llgo_2 + %11 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) + %12 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 1 }, ptr %11, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %13 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 56) + %14 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %13, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %12, ptr %14, align 8 + %15 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %13, 0 + %16 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %15, i64 1, 1 + %17 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %16, i64 1, 2 + %18 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 4 }, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %17) + store ptr %18, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", align 8 ret void } diff --git a/compiler/cl/_testrt/abinamed/out.ll b/compiler/cl/_testrt/abinamed/out.ll index 7365c383..54665aa1 100644 --- a/compiler/cl/_testrt/abinamed/out.ll +++ b/compiler/cl/_testrt/abinamed/out.ll @@ -721,13 +721,13 @@ _llgo_31: ; preds = %_llgo_30 %165 = icmp eq ptr %164, null br i1 %165, label %_llgo_33, label %_llgo_34 -_llgo_32: ; preds = %_llgo_42, %_llgo_30 +_llgo_32: ; preds = %_llgo_40, %_llgo_30 %166 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 %167 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 %168 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 1 }, i64 25, i64 48, i64 0, i64 0) %169 = load ptr, ptr @"[]_llgo_main.T", align 8 %170 = icmp eq ptr %169, null - br i1 %170, label %_llgo_149, label %_llgo_150 + br i1 %170, label %_llgo_133, label %_llgo_134 _llgo_33: ; preds = %_llgo_31 %171 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 34) @@ -777,2060 +777,1996 @@ _llgo_38: ; preds = %_llgo_37, %_llgo_36 %195 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) %196 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) %197 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %198 = load ptr, ptr @"_llgo_struct$_wxpay9lRP3cWU1eNzUY8uwDJyoHmQ6toXBadyiL6io", align 8 - %199 = icmp eq ptr %198, null - br i1 %199, label %_llgo_39, label %_llgo_40 + %198 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %195, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) + %199 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %196) + %200 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr %199, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %201 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %197) + %202 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @20, i64 5 }, ptr %201, i64 80, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %203 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 44) + %204 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr %203, i64 88, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %205 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) + %206 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %205, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %198, ptr %206, align 8 + %207 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %205, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %200, ptr %207, align 8 + %208 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %205, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %202, ptr %208, align 8 + %209 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %205, i64 3 + store %"github.com/goplus/llgo/runtime/abi.StructField" %204, ptr %209, align 8 + %210 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %205, 0 + %211 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %210, i64 4, 1 + %212 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %211, i64 4, 2 + %213 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 96, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %212) + store ptr %213, ptr @"_llgo_struct$_wxpay9lRP3cWU1eNzUY8uwDJyoHmQ6toXBadyiL6io", align 8 + %214 = load ptr, ptr @"_llgo_struct$_wxpay9lRP3cWU1eNzUY8uwDJyoHmQ6toXBadyiL6io", align 8 + br i1 %192, label %_llgo_39, label %_llgo_40 _llgo_39: ; preds = %_llgo_38 - %200 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %195, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) - %201 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %196) - %202 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr %201, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %203 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %197) - %204 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @20, i64 5 }, ptr %203, i64 80, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %205 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 44) - %206 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr %205, i64 88, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %207 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) - %208 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %207, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %200, ptr %208, align 8 - %209 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %207, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %202, ptr %209, align 8 - %210 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %207, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %204, ptr %210, align 8 - %211 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %207, i64 3 - store %"github.com/goplus/llgo/runtime/abi.StructField" %206, ptr %211, align 8 - %212 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %207, 0 - %213 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %212, i64 4, 1 - %214 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %213, i64 4, 2 - %215 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 96, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %214) - store ptr %215, ptr @"_llgo_struct$_wxpay9lRP3cWU1eNzUY8uwDJyoHmQ6toXBadyiL6io", align 8 - br label %_llgo_40 + %215 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %216 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %215, 1 + %217 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %216, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Align", 2 + %218 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %217, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Align", 3 + %219 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, i64 25, i64 104, i64 0, i64 21) + %220 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 + %221 = icmp eq ptr %220, null + br i1 %221, label %_llgo_41, label %_llgo_42 -_llgo_40: ; preds = %_llgo_39, %_llgo_38 - %216 = load ptr, ptr @"_llgo_struct$_wxpay9lRP3cWU1eNzUY8uwDJyoHmQ6toXBadyiL6io", align 8 - br i1 %192, label %_llgo_41, label %_llgo_42 - -_llgo_41: ; preds = %_llgo_40 - %217 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %218 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %217, 1 - %219 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %218, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Align", 2 - %220 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %219, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Align", 3 - %221 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, i64 25, i64 104, i64 0, i64 21) - %222 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 - %223 = icmp eq ptr %222, null - br i1 %223, label %_llgo_43, label %_llgo_44 - -_llgo_42: ; preds = %_llgo_148, %_llgo_40 - %224 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 - %225 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 - %226 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 - %227 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %226, 1 - %228 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %227, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ArrayType", 2 - %229 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %228, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ArrayType", 3 - %230 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 - %231 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %230, 1 - %232 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %231, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ChanDir", 2 - %233 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %232, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ChanDir", 3 - %234 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %235 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %236 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %235, 1 - %237 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %236, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Common", 2 - %238 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %237, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Common", 3 - %239 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %240 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %241 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %240, 1 - %242 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %241, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Elem", 2 - %243 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %242, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Elem", 3 - %244 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %245 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 - %246 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %245, 1 - %247 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %246, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ExportedMethods", 2 - %248 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %247, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ExportedMethods", 3 - %249 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %250 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %249, 1 - %251 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %250, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).FieldAlign", 2 - %252 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %251, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).FieldAlign", 3 - %253 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %254 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 - %255 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %254, 1 - %256 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %255, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).FuncType", 2 - %257 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %256, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).FuncType", 3 - %258 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %259 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %258, 1 - %260 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %259, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).HasName", 2 - %261 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %260, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).HasName", 3 - %262 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %263 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %262, 1 - %264 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %263, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IfaceIndir", 2 - %265 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %264, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IfaceIndir", 3 - %266 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - %267 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 - %268 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %267, 1 - %269 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %268, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).InterfaceType", 2 - %270 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %269, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).InterfaceType", 3 - %271 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %272 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %271, 1 - %273 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %272, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IsClosure", 2 - %274 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %273, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IsClosure", 3 - %275 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %276 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %275, 1 - %277 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %276, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IsDirectIface", 2 - %278 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %277, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IsDirectIface", 3 - %279 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %280 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %281 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %280, 1 - %282 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %281, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Key", 2 - %283 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %282, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Key", 3 - %284 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 - %285 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %284, 1 - %286 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %285, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Kind", 2 - %287 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %286, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Kind", 3 - %288 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %289 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %288, 1 - %290 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %289, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Len", 2 - %291 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %290, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Len", 3 - %292 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 - %293 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 - %294 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %293, 1 - %295 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %294, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).MapType", 2 - %296 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %295, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).MapType", 3 - %297 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %298 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %297, 1 - %299 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %298, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).NumMethod", 2 - %300 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %299, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).NumMethod", 3 - %301 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %302 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %301, 1 - %303 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %302, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Pointers", 2 - %304 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %303, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Pointers", 3 - %305 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 - %306 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %305, 1 - %307 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %306, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Size", 2 - %308 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %307, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Size", 3 - %309 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %310 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %309, 1 - %311 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %310, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).String", 2 - %312 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %311, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).String", 3 - %313 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - %314 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 - %315 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %314, 1 - %316 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %315, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).StructType", 2 - %317 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %316, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).StructType", 3 - %318 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 - %319 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %318, 1 - %320 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %319, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Uncommon", 2 - %321 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %320, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Uncommon", 3 - %322 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 920) - %323 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %189, ptr %323, align 8 - %324 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %229, ptr %324, align 8 - %325 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %233, ptr %325, align 8 - %326 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 3 - store %"github.com/goplus/llgo/runtime/abi.Method" %238, ptr %326, align 8 - %327 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 4 - store %"github.com/goplus/llgo/runtime/abi.Method" %243, ptr %327, align 8 - %328 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 5 - store %"github.com/goplus/llgo/runtime/abi.Method" %248, ptr %328, align 8 - %329 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 6 - store %"github.com/goplus/llgo/runtime/abi.Method" %252, ptr %329, align 8 - %330 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 7 - store %"github.com/goplus/llgo/runtime/abi.Method" %257, ptr %330, align 8 - %331 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 8 - store %"github.com/goplus/llgo/runtime/abi.Method" %261, ptr %331, align 8 - %332 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 9 - store %"github.com/goplus/llgo/runtime/abi.Method" %265, ptr %332, align 8 - %333 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 10 - store %"github.com/goplus/llgo/runtime/abi.Method" %270, ptr %333, align 8 - %334 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 11 - store %"github.com/goplus/llgo/runtime/abi.Method" %274, ptr %334, align 8 - %335 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 12 - store %"github.com/goplus/llgo/runtime/abi.Method" %278, ptr %335, align 8 - %336 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 13 - store %"github.com/goplus/llgo/runtime/abi.Method" %283, ptr %336, align 8 - %337 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 14 - store %"github.com/goplus/llgo/runtime/abi.Method" %287, ptr %337, align 8 - %338 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 15 - store %"github.com/goplus/llgo/runtime/abi.Method" %291, ptr %338, align 8 - %339 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 16 - store %"github.com/goplus/llgo/runtime/abi.Method" %296, ptr %339, align 8 - %340 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 17 - store %"github.com/goplus/llgo/runtime/abi.Method" %300, ptr %340, align 8 - %341 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 18 - store %"github.com/goplus/llgo/runtime/abi.Method" %304, ptr %341, align 8 - %342 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 19 - store %"github.com/goplus/llgo/runtime/abi.Method" %308, ptr %342, align 8 - %343 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 20 - store %"github.com/goplus/llgo/runtime/abi.Method" %312, ptr %343, align 8 - %344 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 21 - store %"github.com/goplus/llgo/runtime/abi.Method" %317, ptr %344, align 8 - %345 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %322, i64 22 - store %"github.com/goplus/llgo/runtime/abi.Method" %321, ptr %345, align 8 - %346 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %322, 0 - %347 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %346, i64 23, 1 - %348 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %347, i64 23, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %9, ptr %163, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %348) +_llgo_40: ; preds = %_llgo_132, %_llgo_38 + %222 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 + %223 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 + %224 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 + %225 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %224, 1 + %226 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %225, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ArrayType", 2 + %227 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %226, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ArrayType", 3 + %228 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 + %229 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %228, 1 + %230 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %229, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ChanDir", 2 + %231 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %230, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ChanDir", 3 + %232 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %233 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %234 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %233, 1 + %235 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %234, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Common", 2 + %236 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %235, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Common", 3 + %237 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %238 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %239 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %238, 1 + %240 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %239, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Elem", 2 + %241 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %240, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Elem", 3 + %242 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %243 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + %244 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %243, 1 + %245 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %244, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ExportedMethods", 2 + %246 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %245, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).ExportedMethods", 3 + %247 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %248 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %247, 1 + %249 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %248, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).FieldAlign", 2 + %250 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %249, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).FieldAlign", 3 + %251 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %252 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 + %253 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %252, 1 + %254 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %253, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).FuncType", 2 + %255 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %254, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).FuncType", 3 + %256 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %257 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %256, 1 + %258 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %257, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).HasName", 2 + %259 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %258, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).HasName", 3 + %260 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %261 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %260, 1 + %262 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %261, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IfaceIndir", 2 + %263 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %262, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IfaceIndir", 3 + %264 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 + %265 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 + %266 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %265, 1 + %267 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %266, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).InterfaceType", 2 + %268 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %267, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).InterfaceType", 3 + %269 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %270 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %269, 1 + %271 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %270, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IsClosure", 2 + %272 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %271, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IsClosure", 3 + %273 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %274 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %273, 1 + %275 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %274, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IsDirectIface", 2 + %276 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %275, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).IsDirectIface", 3 + %277 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %278 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %279 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %278, 1 + %280 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %279, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Key", 2 + %281 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %280, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Key", 3 + %282 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 + %283 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %282, 1 + %284 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %283, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Kind", 2 + %285 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %284, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Kind", 3 + %286 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %287 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %286, 1 + %288 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %287, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Len", 2 + %289 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %288, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Len", 3 + %290 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 + %291 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 + %292 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %291, 1 + %293 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %292, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).MapType", 2 + %294 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %293, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).MapType", 3 + %295 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %296 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %295, 1 + %297 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %296, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).NumMethod", 2 + %298 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %297, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).NumMethod", 3 + %299 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %300 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %299, 1 + %301 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %300, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Pointers", 2 + %302 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %301, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Pointers", 3 + %303 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 + %304 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %303, 1 + %305 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %304, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Size", 2 + %306 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %305, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Size", 3 + %307 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %308 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %307, 1 + %309 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %308, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).String", 2 + %310 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %309, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).String", 3 + %311 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + %312 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 + %313 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %312, 1 + %314 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %313, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).StructType", 2 + %315 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %314, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).StructType", 3 + %316 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 + %317 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %316, 1 + %318 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %317, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Uncommon", 2 + %319 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %318, ptr @"github.com/goplus/llgo/runtime/abi.(*Type).Uncommon", 3 + %320 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 920) + %321 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %189, ptr %321, align 8 + %322 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %227, ptr %322, align 8 + %323 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %231, ptr %323, align 8 + %324 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 3 + store %"github.com/goplus/llgo/runtime/abi.Method" %236, ptr %324, align 8 + %325 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 4 + store %"github.com/goplus/llgo/runtime/abi.Method" %241, ptr %325, align 8 + %326 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 5 + store %"github.com/goplus/llgo/runtime/abi.Method" %246, ptr %326, align 8 + %327 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 6 + store %"github.com/goplus/llgo/runtime/abi.Method" %250, ptr %327, align 8 + %328 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 7 + store %"github.com/goplus/llgo/runtime/abi.Method" %255, ptr %328, align 8 + %329 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 8 + store %"github.com/goplus/llgo/runtime/abi.Method" %259, ptr %329, align 8 + %330 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 9 + store %"github.com/goplus/llgo/runtime/abi.Method" %263, ptr %330, align 8 + %331 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 10 + store %"github.com/goplus/llgo/runtime/abi.Method" %268, ptr %331, align 8 + %332 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 11 + store %"github.com/goplus/llgo/runtime/abi.Method" %272, ptr %332, align 8 + %333 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 12 + store %"github.com/goplus/llgo/runtime/abi.Method" %276, ptr %333, align 8 + %334 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 13 + store %"github.com/goplus/llgo/runtime/abi.Method" %281, ptr %334, align 8 + %335 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 14 + store %"github.com/goplus/llgo/runtime/abi.Method" %285, ptr %335, align 8 + %336 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 15 + store %"github.com/goplus/llgo/runtime/abi.Method" %289, ptr %336, align 8 + %337 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 16 + store %"github.com/goplus/llgo/runtime/abi.Method" %294, ptr %337, align 8 + %338 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 17 + store %"github.com/goplus/llgo/runtime/abi.Method" %298, ptr %338, align 8 + %339 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 18 + store %"github.com/goplus/llgo/runtime/abi.Method" %302, ptr %339, align 8 + %340 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 19 + store %"github.com/goplus/llgo/runtime/abi.Method" %306, ptr %340, align 8 + %341 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 20 + store %"github.com/goplus/llgo/runtime/abi.Method" %310, ptr %341, align 8 + %342 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 21 + store %"github.com/goplus/llgo/runtime/abi.Method" %315, ptr %342, align 8 + %343 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %320, i64 22 + store %"github.com/goplus/llgo/runtime/abi.Method" %319, ptr %343, align 8 + %344 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %320, 0 + %345 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %344, i64 23, 1 + %346 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %345, i64 23, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %9, ptr %163, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %346) br label %_llgo_32 -_llgo_43: ; preds = %_llgo_41 - %349 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %221) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %349) - store ptr %349, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 +_llgo_41: ; preds = %_llgo_39 + %347 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %219) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %347) + store ptr %347, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 + br label %_llgo_42 + +_llgo_42: ; preds = %_llgo_41, %_llgo_39 + %348 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 + %349 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 + %350 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 + %351 = icmp eq ptr %350, null + br i1 %351, label %_llgo_43, label %_llgo_44 + +_llgo_43: ; preds = %_llgo_42 + %352 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %353 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %352, 0 + %354 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %353, i64 0, 1 + %355 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %354, i64 0, 2 + %356 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %357 = getelementptr ptr, ptr %356, i64 0 + store ptr %349, ptr %357, align 8 + %358 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %356, 0 + %359 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %358, i64 1, 1 + %360 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %359, i64 1, 2 + %361 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %355, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %360, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %361) + store ptr %361, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 br label %_llgo_44 -_llgo_44: ; preds = %_llgo_43, %_llgo_41 - %350 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 - %351 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 - %352 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 - %353 = icmp eq ptr %352, null - br i1 %353, label %_llgo_45, label %_llgo_46 +_llgo_44: ; preds = %_llgo_43, %_llgo_42 + %362 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 + %363 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %362, 1 + %364 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %363, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ArrayType", 2 + %365 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %364, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ArrayType", 3 + %366 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, i64 2, i64 8, i64 0, i64 0) + %367 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.ChanDir", align 8 + %368 = icmp eq ptr %367, null + br i1 %368, label %_llgo_45, label %_llgo_46 _llgo_45: ; preds = %_llgo_44 - %354 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %355 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %354, 0 - %356 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %355, i64 0, 1 - %357 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %356, i64 0, 2 - %358 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %359 = getelementptr ptr, ptr %358, i64 0 - store ptr %351, ptr %359, align 8 - %360 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %358, 0 - %361 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %360, i64 1, 1 - %362 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %361, i64 1, 2 - %363 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %357, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %362, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %363) - store ptr %363, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 + store ptr %366, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.ChanDir", align 8 br label %_llgo_46 _llgo_46: ; preds = %_llgo_45, %_llgo_44 - %364 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 - %365 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %364, 1 - %366 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %365, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ArrayType", 2 - %367 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %366, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ArrayType", 3 - %368 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, i64 2, i64 8, i64 0, i64 0) - %369 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.ChanDir", align 8 - %370 = icmp eq ptr %369, null - br i1 %370, label %_llgo_47, label %_llgo_48 + %369 = load ptr, ptr @_llgo_int, align 8 + br i1 %368, label %_llgo_47, label %_llgo_48 _llgo_47: ; preds = %_llgo_46 - store ptr %368, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.ChanDir", align 8 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %366, ptr %369, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer) br label %_llgo_48 _llgo_48: ; preds = %_llgo_47, %_llgo_46 - %371 = load ptr, ptr @_llgo_int, align 8 - br i1 %370, label %_llgo_49, label %_llgo_50 + %370 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.ChanDir", align 8 + %371 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.ChanDir", align 8 + %372 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 + %373 = icmp eq ptr %372, null + br i1 %373, label %_llgo_49, label %_llgo_50 _llgo_49: ; preds = %_llgo_48 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %368, ptr %371, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer) + %374 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %375 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %374, 0 + %376 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %375, i64 0, 1 + %377 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %376, i64 0, 2 + %378 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %379 = getelementptr ptr, ptr %378, i64 0 + store ptr %371, ptr %379, align 8 + %380 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %378, 0 + %381 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %380, i64 1, 1 + %382 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %381, i64 1, 2 + %383 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %377, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %382, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %383) + store ptr %383, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 br label %_llgo_50 _llgo_50: ; preds = %_llgo_49, %_llgo_48 - %372 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.ChanDir", align 8 - %373 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.ChanDir", align 8 - %374 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 - %375 = icmp eq ptr %374, null - br i1 %375, label %_llgo_51, label %_llgo_52 + %384 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 + %385 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %384, 1 + %386 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %385, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ChanDir", 2 + %387 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %386, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ChanDir", 3 + %388 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %389 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %390 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %391 = icmp eq ptr %390, null + br i1 %391, label %_llgo_51, label %_llgo_52 _llgo_51: ; preds = %_llgo_50 - %376 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %377 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %376, 0 - %378 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %377, i64 0, 1 - %379 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %378, i64 0, 2 - %380 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %381 = getelementptr ptr, ptr %380, i64 0 - store ptr %373, ptr %381, align 8 - %382 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %380, 0 - %383 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %382, i64 1, 1 - %384 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %383, i64 1, 2 - %385 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %379, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %384, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %385) - store ptr %385, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 + %392 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %393 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %392, 0 + %394 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %393, i64 0, 1 + %395 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %394, i64 0, 2 + %396 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %397 = getelementptr ptr, ptr %396, i64 0 + store ptr %389, ptr %397, align 8 + %398 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %396, 0 + %399 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %398, i64 1, 1 + %400 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %399, i64 1, 2 + %401 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %395, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %400, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %401) + store ptr %401, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 br label %_llgo_52 _llgo_52: ; preds = %_llgo_51, %_llgo_50 - %386 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 - %387 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %386, 1 - %388 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %387, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ChanDir", 2 - %389 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %388, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ChanDir", 3 - %390 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %391 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %392 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %393 = icmp eq ptr %392, null - br i1 %393, label %_llgo_53, label %_llgo_54 + %402 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %403 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %402, 1 + %404 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %403, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Common", 2 + %405 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %404, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Common", 3 + %406 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @25, i64 6 }, i64 25, i64 40, i64 0, i64 3) + %407 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %408 = icmp eq ptr %407, null + br i1 %408, label %_llgo_53, label %_llgo_54 _llgo_53: ; preds = %_llgo_52 - %394 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %395 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %394, 0 - %396 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %395, i64 0, 1 - %397 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %396, i64 0, 2 - %398 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %399 = getelementptr ptr, ptr %398, i64 0 - store ptr %391, ptr %399, align 8 - %400 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %398, 0 - %401 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %400, i64 1, 1 - %402 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %401, i64 1, 2 - %403 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %397, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %402, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %403) - store ptr %403, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + store ptr %406, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 br label %_llgo_54 _llgo_54: ; preds = %_llgo_53, %_llgo_52 - %404 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %405 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %404, 1 - %406 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %405, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Common", 2 - %407 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %406, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Common", 3 - %408 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @25, i64 6 }, i64 25, i64 40, i64 0, i64 3) - %409 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %410 = icmp eq ptr %409, null - br i1 %410, label %_llgo_55, label %_llgo_56 + %409 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, i64 25, i64 128, i64 0, i64 24) + %410 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %411 = icmp eq ptr %410, null + br i1 %411, label %_llgo_55, label %_llgo_56 _llgo_55: ; preds = %_llgo_54 - store ptr %408, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + store ptr %409, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 br label %_llgo_56 _llgo_56: ; preds = %_llgo_55, %_llgo_54 - %411 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, i64 25, i64 128, i64 0, i64 24) - %412 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %413 = icmp eq ptr %412, null - br i1 %413, label %_llgo_57, label %_llgo_58 + %412 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %413 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %414 = load ptr, ptr @"[]*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %415 = icmp eq ptr %414, null + br i1 %415, label %_llgo_57, label %_llgo_58 _llgo_57: ; preds = %_llgo_56 - store ptr %411, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %416 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %413) + %417 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %416) + store ptr %417, ptr @"[]*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 br label %_llgo_58 _llgo_58: ; preds = %_llgo_57, %_llgo_56 - %414 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %415 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %416 = load ptr, ptr @"[]*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %417 = icmp eq ptr %416, null - br i1 %417, label %_llgo_59, label %_llgo_60 + %418 = load ptr, ptr @"[]*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %419 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %420 = load ptr, ptr @"[]*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %421 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %422 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %423 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %424 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %421, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) + %425 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %422) + %426 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %425) + %427 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @27, i64 2 }, ptr %426, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %428 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %423) + %429 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %428) + %430 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @28, i64 3 }, ptr %429, i64 96, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %431 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 168) + %432 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %431, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %424, ptr %432, align 8 + %433 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %431, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %427, ptr %433, align 8 + %434 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %431, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %430, ptr %434, align 8 + %435 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %431, 0 + %436 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %435, i64 3, 1 + %437 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %436, i64 3, 2 + %438 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 120, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %437) + store ptr %438, ptr @"_llgo_struct$1ug-gfLTkNOIzG-RN7EFFwGKI01E7iqUGVZBMudT8KA", align 8 + %439 = load ptr, ptr @"_llgo_struct$1ug-gfLTkNOIzG-RN7EFFwGKI01E7iqUGVZBMudT8KA", align 8 + br i1 %411, label %_llgo_59, label %_llgo_60 _llgo_59: ; preds = %_llgo_58 - %418 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %415) - %419 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %418) - store ptr %419, ptr @"[]*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - br label %_llgo_60 + %440 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %441 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %440, 1 + %442 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %441, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Align", 2 + %443 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %442, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Align", 3 + %444 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 + %445 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 + %446 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %445, 1 + %447 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %446, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ArrayType", 2 + %448 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %447, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ArrayType", 3 + %449 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 + %450 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %449, 1 + %451 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %450, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ChanDir", 2 + %452 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %451, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ChanDir", 3 + %453 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %454 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %455 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %454, 1 + %456 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %455, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Common", 2 + %457 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %456, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Common", 3 + %458 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %459 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %460 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %459, 1 + %461 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %460, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Elem", 2 + %462 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %461, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Elem", 3 + %463 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @25, i64 6 }, i64 25, i64 40, i64 0, i64 3) + %464 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %465 = icmp eq ptr %464, null + br i1 %465, label %_llgo_61, label %_llgo_62 -_llgo_60: ; preds = %_llgo_59, %_llgo_58 - %420 = load ptr, ptr @"[]*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %421 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %422 = load ptr, ptr @"[]*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %423 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %424 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %425 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %426 = load ptr, ptr @"_llgo_struct$1ug-gfLTkNOIzG-RN7EFFwGKI01E7iqUGVZBMudT8KA", align 8 - %427 = icmp eq ptr %426, null - br i1 %427, label %_llgo_61, label %_llgo_62 +_llgo_60: ; preds = %_llgo_82, %_llgo_58 + %466 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %467 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %468 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, i64 25, i64 128, i64 0, i64 24) + %469 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %470 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @34, i64 5 }, ptr %469, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %471 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %468) + %472 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @75, i64 5 }, ptr %471, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %473 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 58) + %474 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @76, i64 4 }, ptr %473, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %475 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 58) + %476 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @77, i64 4 }, ptr %475, i64 32, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %477 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) + %478 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %477, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %470, ptr %478, align 8 + %479 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %477, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %472, ptr %479, align 8 + %480 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %477, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %474, ptr %480, align 8 + %481 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %477, i64 3 + store %"github.com/goplus/llgo/runtime/abi.StructField" %476, ptr %481, align 8 + %482 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %477, 0 + %483 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %482, i64 4, 1 + %484 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %483, i64 4, 2 + %485 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 40, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %484) + store ptr %485, ptr @"_llgo_struct$jXUHcnL1PMmNRB-pn2cBRAQ7OYcwCM_YkvLqlL0ZYaE", align 8 + %486 = load ptr, ptr @"_llgo_struct$jXUHcnL1PMmNRB-pn2cBRAQ7OYcwCM_YkvLqlL0ZYaE", align 8 + br i1 %408, label %_llgo_131, label %_llgo_132 -_llgo_61: ; preds = %_llgo_60 - %428 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %423, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) - %429 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %424) - %430 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %429) - %431 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @27, i64 2 }, ptr %430, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %432 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %425) - %433 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %432) - %434 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @28, i64 3 }, ptr %433, i64 96, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %435 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 168) - %436 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %435, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %428, ptr %436, align 8 - %437 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %435, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %431, ptr %437, align 8 - %438 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %435, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %434, ptr %438, align 8 - %439 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %435, 0 - %440 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %439, i64 3, 1 - %441 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %440, i64 3, 2 - %442 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 120, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %441) - store ptr %442, ptr @"_llgo_struct$1ug-gfLTkNOIzG-RN7EFFwGKI01E7iqUGVZBMudT8KA", align 8 +_llgo_61: ; preds = %_llgo_59 + %487 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %463) + store ptr %487, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 br label %_llgo_62 -_llgo_62: ; preds = %_llgo_61, %_llgo_60 - %443 = load ptr, ptr @"_llgo_struct$1ug-gfLTkNOIzG-RN7EFFwGKI01E7iqUGVZBMudT8KA", align 8 - br i1 %413, label %_llgo_63, label %_llgo_64 +_llgo_62: ; preds = %_llgo_61, %_llgo_59 + %488 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %489 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %490 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + %491 = icmp eq ptr %490, null + br i1 %491, label %_llgo_63, label %_llgo_64 _llgo_63: ; preds = %_llgo_62 - %444 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %445 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %444, 1 - %446 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %445, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Align", 2 - %447 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %446, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Align", 3 - %448 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 - %449 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 - %450 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %449, 1 - %451 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %450, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ArrayType", 2 - %452 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %451, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ArrayType", 3 - %453 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 - %454 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %453, 1 - %455 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %454, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ChanDir", 2 - %456 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %455, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ChanDir", 3 - %457 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %458 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %459 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %458, 1 - %460 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %459, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Common", 2 - %461 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %460, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Common", 3 - %462 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %463 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %464 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %463, 1 - %465 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %464, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Elem", 2 - %466 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %465, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Elem", 3 - %467 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @25, i64 6 }, i64 25, i64 40, i64 0, i64 3) - %468 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %469 = icmp eq ptr %468, null - br i1 %469, label %_llgo_65, label %_llgo_66 + %492 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %493 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %492, 0 + %494 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %493, i64 0, 1 + %495 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %494, i64 0, 2 + %496 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %497 = getelementptr ptr, ptr %496, i64 0 + store ptr %489, ptr %497, align 8 + %498 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %496, 0 + %499 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %498, i64 1, 1 + %500 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %499, i64 1, 2 + %501 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %495, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %500, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %501) + store ptr %501, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + br label %_llgo_64 -_llgo_64: ; preds = %_llgo_90, %_llgo_62 - %470 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %471 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %472 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, i64 25, i64 128, i64 0, i64 24) - %473 = load ptr, ptr @"_llgo_struct$jXUHcnL1PMmNRB-pn2cBRAQ7OYcwCM_YkvLqlL0ZYaE", align 8 - %474 = icmp eq ptr %473, null - br i1 %474, label %_llgo_145, label %_llgo_146 +_llgo_64: ; preds = %_llgo_63, %_llgo_62 + %502 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + %503 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %502, 1 + %504 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %503, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ExportedMethods", 2 + %505 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %504, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ExportedMethods", 3 + %506 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %507 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %506, 1 + %508 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %507, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).FieldAlign", 2 + %509 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %508, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).FieldAlign", 3 + %510 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, i64 25, i64 128, i64 0, i64 24) + %511 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %512 = icmp eq ptr %511, null + br i1 %512, label %_llgo_65, label %_llgo_66 -_llgo_65: ; preds = %_llgo_63 - %475 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %467) - store ptr %475, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 +_llgo_65: ; preds = %_llgo_64 + %513 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %510) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %513) + store ptr %513, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 br label %_llgo_66 -_llgo_66: ; preds = %_llgo_65, %_llgo_63 - %476 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %477 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %478 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 - %479 = icmp eq ptr %478, null - br i1 %479, label %_llgo_67, label %_llgo_68 +_llgo_66: ; preds = %_llgo_65, %_llgo_64 + %514 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %515 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %516 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 + %517 = icmp eq ptr %516, null + br i1 %517, label %_llgo_67, label %_llgo_68 _llgo_67: ; preds = %_llgo_66 - %480 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %481 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %480, 0 - %482 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %481, i64 0, 1 - %483 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %482, i64 0, 2 - %484 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %485 = getelementptr ptr, ptr %484, i64 0 - store ptr %477, ptr %485, align 8 - %486 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %484, 0 - %487 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %486, i64 1, 1 - %488 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %487, i64 1, 2 - %489 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %483, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %488, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %489) - store ptr %489, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + %518 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %519 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %518, 0 + %520 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %519, i64 0, 1 + %521 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %520, i64 0, 2 + %522 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %523 = getelementptr ptr, ptr %522, i64 0 + store ptr %515, ptr %523, align 8 + %524 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %522, 0 + %525 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %524, i64 1, 1 + %526 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %525, i64 1, 2 + %527 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %521, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %526, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %527) + store ptr %527, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 br label %_llgo_68 _llgo_68: ; preds = %_llgo_67, %_llgo_66 - %490 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 - %491 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %490, 1 - %492 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %491, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ExportedMethods", 2 - %493 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %492, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).ExportedMethods", 3 - %494 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %495 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %494, 1 - %496 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %495, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).FieldAlign", 2 - %497 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %496, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).FieldAlign", 3 - %498 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, i64 25, i64 128, i64 0, i64 24) - %499 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %500 = icmp eq ptr %499, null - br i1 %500, label %_llgo_69, label %_llgo_70 + %528 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 + %529 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %528, 1 + %530 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %529, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).FuncType", 2 + %531 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %530, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).FuncType", 3 + %532 = load ptr, ptr @_llgo_bool, align 8 + %533 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %534 = icmp eq ptr %533, null + br i1 %534, label %_llgo_69, label %_llgo_70 _llgo_69: ; preds = %_llgo_68 - %501 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %498) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %501) - store ptr %501, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %535 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %536 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %535, 0 + %537 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %536, i64 0, 1 + %538 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %537, i64 0, 2 + %539 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %540 = getelementptr ptr, ptr %539, i64 0 + store ptr %532, ptr %540, align 8 + %541 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %539, 0 + %542 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %541, i64 1, 1 + %543 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %542, i64 1, 2 + %544 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %538, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %543, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %544) + store ptr %544, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 br label %_llgo_70 _llgo_70: ; preds = %_llgo_69, %_llgo_68 - %502 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %503 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %504 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 - %505 = icmp eq ptr %504, null - br i1 %505, label %_llgo_71, label %_llgo_72 + %545 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %546 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %545, 1 + %547 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %546, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).HasName", 2 + %548 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %547, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).HasName", 3 + %549 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %550 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %549, 1 + %551 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %550, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IfaceIndir", 2 + %552 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %551, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IfaceIndir", 3 + %553 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, i64 25, i64 120, i64 0, i64 23) + %554 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 + %555 = icmp eq ptr %554, null + br i1 %555, label %_llgo_71, label %_llgo_72 _llgo_71: ; preds = %_llgo_70 - %506 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %507 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %506, 0 - %508 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %507, i64 0, 1 - %509 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %508, i64 0, 2 - %510 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %511 = getelementptr ptr, ptr %510, i64 0 - store ptr %503, ptr %511, align 8 - %512 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %510, 0 - %513 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %512, i64 1, 1 - %514 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %513, i64 1, 2 - %515 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %509, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %514, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %515) - store ptr %515, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 + store ptr %553, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 br label %_llgo_72 _llgo_72: ; preds = %_llgo_71, %_llgo_70 - %516 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 - %517 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %516, 1 - %518 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %517, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).FuncType", 2 - %519 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %518, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).FuncType", 3 - %520 = load ptr, ptr @_llgo_bool, align 8 - %521 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %522 = icmp eq ptr %521, null - br i1 %522, label %_llgo_73, label %_llgo_74 + %556 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @33, i64 7 }, i64 25, i64 24, i64 0, i64 3) + %557 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 + %558 = icmp eq ptr %557, null + br i1 %558, label %_llgo_73, label %_llgo_74 _llgo_73: ; preds = %_llgo_72 - %523 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %524 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %523, 0 - %525 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %524, i64 0, 1 - %526 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %525, i64 0, 2 - %527 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %528 = getelementptr ptr, ptr %527, i64 0 - store ptr %520, ptr %528, align 8 - %529 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %527, 0 - %530 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %529, i64 1, 1 - %531 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %530, i64 1, 2 - %532 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %526, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %531, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %532) - store ptr %532, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + store ptr %556, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 br label %_llgo_74 _llgo_74: ; preds = %_llgo_73, %_llgo_72 - %533 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %534 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %533, 1 - %535 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %534, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).HasName", 2 - %536 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %535, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).HasName", 3 - %537 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %538 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %537, 1 - %539 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %538, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IfaceIndir", 2 - %540 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %539, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IfaceIndir", 3 - %541 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, i64 25, i64 120, i64 0, i64 23) - %542 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - %543 = icmp eq ptr %542, null - br i1 %543, label %_llgo_75, label %_llgo_76 + %559 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %560 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, i64 25, i64 128, i64 0, i64 24) + %561 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %562 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @34, i64 5 }, ptr %561, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %563 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %560) + %564 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @35, i64 4 }, ptr %563, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %565 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 112) + %566 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %565, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %562, ptr %566, align 8 + %567 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %565, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %564, ptr %567, align 8 + %568 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %565, 0 + %569 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %568, i64 2, 1 + %570 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %569, i64 2, 2 + %571 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %570) + store ptr %571, ptr @"_llgo_struct$nK3p3a0VXRT6CeR0p3-gSrD3XdcHx2I7dlhqG-Zjudw", align 8 + %572 = load ptr, ptr @"_llgo_struct$nK3p3a0VXRT6CeR0p3-gSrD3XdcHx2I7dlhqG-Zjudw", align 8 + br i1 %558, label %_llgo_75, label %_llgo_76 _llgo_75: ; preds = %_llgo_74 - store ptr %541, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - br label %_llgo_76 + %573 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %574 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @36, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %573, 1 + %575 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %574, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).Exported", 2 + %576 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %575, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).Exported", 3 + %577 = load ptr, ptr @_llgo_string, align 8 + %578 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %579 = icmp eq ptr %578, null + br i1 %579, label %_llgo_77, label %_llgo_78 -_llgo_76: ; preds = %_llgo_75, %_llgo_74 - %544 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @33, i64 7 }, i64 25, i64 24, i64 0, i64 3) - %545 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 - %546 = icmp eq ptr %545, null - br i1 %546, label %_llgo_77, label %_llgo_78 +_llgo_76: ; preds = %_llgo_78, %_llgo_74 + %580 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 + %581 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @33, i64 7 }, i64 25, i64 24, i64 0, i64 3) + %582 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 + %583 = icmp eq ptr %582, null + br i1 %583, label %_llgo_79, label %_llgo_80 -_llgo_77: ; preds = %_llgo_76 - store ptr %544, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 +_llgo_77: ; preds = %_llgo_75 + %584 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %585 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %584, 0 + %586 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %585, i64 0, 1 + %587 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %586, i64 0, 2 + %588 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %589 = getelementptr ptr, ptr %588, i64 0 + store ptr %577, ptr %589, align 8 + %590 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %588, 0 + %591 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %590, i64 1, 1 + %592 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %591, i64 1, 2 + %593 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %587, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %592, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %593) + store ptr %593, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 br label %_llgo_78 -_llgo_78: ; preds = %_llgo_77, %_llgo_76 - %547 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %548 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, i64 25, i64 128, i64 0, i64 24) - %549 = load ptr, ptr @"_llgo_struct$nK3p3a0VXRT6CeR0p3-gSrD3XdcHx2I7dlhqG-Zjudw", align 8 - %550 = icmp eq ptr %549, null - br i1 %550, label %_llgo_79, label %_llgo_80 +_llgo_78: ; preds = %_llgo_77, %_llgo_75 + %594 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %595 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @37, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %594, 1 + %596 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %595, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).Name", 2 + %597 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %596, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).Name", 3 + %598 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %599 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @38, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %598, 1 + %600 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %599, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).PkgPath", 2 + %601 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %600, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).PkgPath", 3 + %602 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 120) + %603 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %602, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %576, ptr %603, align 8 + %604 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %602, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %597, ptr %604, align 8 + %605 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %602, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %601, ptr %605, align 8 + %606 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %602, 0 + %607 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %606, i64 3, 1 + %608 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %607, i64 3, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %556, ptr %572, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %608) + br label %_llgo_76 -_llgo_79: ; preds = %_llgo_78 - %551 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %552 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @34, i64 5 }, ptr %551, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %553 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %548) - %554 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @35, i64 4 }, ptr %553, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %555 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 112) - %556 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %555, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %552, ptr %556, align 8 - %557 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %555, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %554, ptr %557, align 8 - %558 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %555, 0 - %559 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %558, i64 2, 1 - %560 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %559, i64 2, 2 - %561 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %560) - store ptr %561, ptr @"_llgo_struct$nK3p3a0VXRT6CeR0p3-gSrD3XdcHx2I7dlhqG-Zjudw", align 8 +_llgo_79: ; preds = %_llgo_76 + %609 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %581) + store ptr %609, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 br label %_llgo_80 -_llgo_80: ; preds = %_llgo_79, %_llgo_78 - %562 = load ptr, ptr @"_llgo_struct$nK3p3a0VXRT6CeR0p3-gSrD3XdcHx2I7dlhqG-Zjudw", align 8 - br i1 %546, label %_llgo_81, label %_llgo_82 +_llgo_80: ; preds = %_llgo_79, %_llgo_76 + %610 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 + %611 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %612 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @33, i64 7 }, i64 25, i64 24, i64 0, i64 3) + %613 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %611, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) + %614 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %615 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @39, i64 8 }, ptr %614, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %616 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %612) + %617 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @40, i64 7 }, ptr %616, i64 88, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %618 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 168) + %619 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %618, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %613, ptr %619, align 8 + %620 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %618, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %615, ptr %620, align 8 + %621 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %618, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %617, ptr %621, align 8 + %622 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %618, 0 + %623 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %622, i64 3, 1 + %624 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %623, i64 3, 2 + %625 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 112, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %624) + store ptr %625, ptr @"_llgo_struct$eoXJdAUqA_SyytMpb3QTBaQ2Bh9nLc089-gvCiW55io", align 8 + %626 = load ptr, ptr @"_llgo_struct$eoXJdAUqA_SyytMpb3QTBaQ2Bh9nLc089-gvCiW55io", align 8 + br i1 %555, label %_llgo_81, label %_llgo_82 _llgo_81: ; preds = %_llgo_80 - %563 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %564 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @36, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %563, 1 - %565 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %564, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).Exported", 2 - %566 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %565, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).Exported", 3 - %567 = load ptr, ptr @_llgo_string, align 8 - %568 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %569 = icmp eq ptr %568, null - br i1 %569, label %_llgo_83, label %_llgo_84 + %627 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %628 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %627, 1 + %629 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %628, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Align", 2 + %630 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %629, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Align", 3 + %631 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 + %632 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 + %633 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %632, 1 + %634 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %633, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ArrayType", 2 + %635 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %634, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ArrayType", 3 + %636 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 + %637 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %636, 1 + %638 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %637, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ChanDir", 2 + %639 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %638, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ChanDir", 3 + %640 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %641 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %642 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %641, 1 + %643 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %642, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Common", 2 + %644 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %643, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Common", 3 + %645 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %646 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %647 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %646, 1 + %648 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %647, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Elem", 2 + %649 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %648, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Elem", 3 + %650 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %651 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + %652 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %651, 1 + %653 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %652, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ExportedMethods", 2 + %654 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %653, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ExportedMethods", 3 + %655 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %656 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %655, 1 + %657 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %656, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).FieldAlign", 2 + %658 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %657, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).FieldAlign", 3 + %659 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %660 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 + %661 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %660, 1 + %662 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %661, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).FuncType", 2 + %663 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %662, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).FuncType", 3 + %664 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %665 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %664, 1 + %666 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %665, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).HasName", 2 + %667 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %666, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).HasName", 3 + %668 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %669 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %668, 1 + %670 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %669, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IfaceIndir", 2 + %671 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %670, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IfaceIndir", 3 + %672 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, i64 25, i64 120, i64 0, i64 23) + %673 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 + %674 = icmp eq ptr %673, null + br i1 %674, label %_llgo_83, label %_llgo_84 -_llgo_82: ; preds = %_llgo_84, %_llgo_80 - %570 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 - %571 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @33, i64 7 }, i64 25, i64 24, i64 0, i64 3) - %572 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 - %573 = icmp eq ptr %572, null - br i1 %573, label %_llgo_85, label %_llgo_86 +_llgo_82: ; preds = %_llgo_102, %_llgo_80 + %675 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 + %676 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 + %677 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 + %678 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %677, 1 + %679 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %678, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).InterfaceType", 2 + %680 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %679, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).InterfaceType", 3 + %681 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %682 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %681, 1 + %683 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %682, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IsClosure", 2 + %684 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %683, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IsClosure", 3 + %685 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %686 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %685, 1 + %687 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %686, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IsDirectIface", 2 + %688 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %687, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IsDirectIface", 3 + %689 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %690 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %691 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %690, 1 + %692 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %691, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Key", 2 + %693 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %692, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Key", 3 + %694 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 + %695 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %694, 1 + %696 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %695, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Kind", 2 + %697 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %696, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Kind", 3 + %698 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %699 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %698, 1 + %700 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %699, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Len", 2 + %701 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %700, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Len", 3 + %702 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 + %703 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 + %704 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %703, 1 + %705 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %704, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).MapType", 2 + %706 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %705, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).MapType", 3 + %707 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %708 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %707, 1 + %709 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %708, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).NumMethod", 2 + %710 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %709, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).NumMethod", 3 + %711 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %712 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %711, 1 + %713 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %712, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Pointers", 2 + %714 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %713, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Pointers", 3 + %715 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 + %716 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %715, 1 + %717 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %716, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Size", 2 + %718 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %717, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Size", 3 + %719 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %720 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %719, 1 + %721 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %720, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).String", 2 + %722 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %721, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).String", 3 + %723 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + %724 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 + %725 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %724, 1 + %726 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %725, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).StructType", 2 + %727 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %726, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).StructType", 3 + %728 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 + %729 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %728, 1 + %730 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %729, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Uncommon", 2 + %731 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %730, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Uncommon", 3 + %732 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %733 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @74, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %732, 1 + %734 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %733, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Variadic", 2 + %735 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %734, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Variadic", 3 + %736 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 960) + %737 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %443, ptr %737, align 8 + %738 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %448, ptr %738, align 8 + %739 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %452, ptr %739, align 8 + %740 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 3 + store %"github.com/goplus/llgo/runtime/abi.Method" %457, ptr %740, align 8 + %741 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 4 + store %"github.com/goplus/llgo/runtime/abi.Method" %462, ptr %741, align 8 + %742 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 5 + store %"github.com/goplus/llgo/runtime/abi.Method" %505, ptr %742, align 8 + %743 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 6 + store %"github.com/goplus/llgo/runtime/abi.Method" %509, ptr %743, align 8 + %744 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 7 + store %"github.com/goplus/llgo/runtime/abi.Method" %531, ptr %744, align 8 + %745 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 8 + store %"github.com/goplus/llgo/runtime/abi.Method" %548, ptr %745, align 8 + %746 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 9 + store %"github.com/goplus/llgo/runtime/abi.Method" %552, ptr %746, align 8 + %747 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 10 + store %"github.com/goplus/llgo/runtime/abi.Method" %680, ptr %747, align 8 + %748 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 11 + store %"github.com/goplus/llgo/runtime/abi.Method" %684, ptr %748, align 8 + %749 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 12 + store %"github.com/goplus/llgo/runtime/abi.Method" %688, ptr %749, align 8 + %750 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 13 + store %"github.com/goplus/llgo/runtime/abi.Method" %693, ptr %750, align 8 + %751 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 14 + store %"github.com/goplus/llgo/runtime/abi.Method" %697, ptr %751, align 8 + %752 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 15 + store %"github.com/goplus/llgo/runtime/abi.Method" %701, ptr %752, align 8 + %753 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 16 + store %"github.com/goplus/llgo/runtime/abi.Method" %706, ptr %753, align 8 + %754 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 17 + store %"github.com/goplus/llgo/runtime/abi.Method" %710, ptr %754, align 8 + %755 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 18 + store %"github.com/goplus/llgo/runtime/abi.Method" %714, ptr %755, align 8 + %756 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 19 + store %"github.com/goplus/llgo/runtime/abi.Method" %718, ptr %756, align 8 + %757 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 20 + store %"github.com/goplus/llgo/runtime/abi.Method" %722, ptr %757, align 8 + %758 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 21 + store %"github.com/goplus/llgo/runtime/abi.Method" %727, ptr %758, align 8 + %759 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 22 + store %"github.com/goplus/llgo/runtime/abi.Method" %731, ptr %759, align 8 + %760 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %736, i64 23 + store %"github.com/goplus/llgo/runtime/abi.Method" %735, ptr %760, align 8 + %761 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %736, 0 + %762 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %761, i64 24, 1 + %763 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %762, i64 24, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %409, ptr %439, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %763) + br label %_llgo_60 _llgo_83: ; preds = %_llgo_81 - %574 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %575 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %574, 0 - %576 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %575, i64 0, 1 - %577 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %576, i64 0, 2 - %578 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %579 = getelementptr ptr, ptr %578, i64 0 - store ptr %567, ptr %579, align 8 - %580 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %578, 0 - %581 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %580, i64 1, 1 - %582 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %581, i64 1, 2 - %583 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %577, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %582, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %583) - store ptr %583, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %764 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %672) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %764) + store ptr %764, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 br label %_llgo_84 _llgo_84: ; preds = %_llgo_83, %_llgo_81 - %584 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %585 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @37, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %584, 1 - %586 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %585, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).Name", 2 - %587 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %586, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).Name", 3 - %588 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %589 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @38, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %588, 1 - %590 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %589, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).PkgPath", 2 - %591 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %590, ptr @"github.com/goplus/llgo/runtime/abi.(*Imethod).PkgPath", 3 - %592 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 120) - %593 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %592, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %566, ptr %593, align 8 - %594 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %592, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %587, ptr %594, align 8 - %595 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %592, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %591, ptr %595, align 8 - %596 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %592, 0 - %597 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %596, i64 3, 1 - %598 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %597, i64 3, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %544, ptr %562, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %598) - br label %_llgo_82 + %765 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 + %766 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 + %767 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 + %768 = icmp eq ptr %767, null + br i1 %768, label %_llgo_85, label %_llgo_86 -_llgo_85: ; preds = %_llgo_82 - %599 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %571) - store ptr %599, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 +_llgo_85: ; preds = %_llgo_84 + %769 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %770 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %769, 0 + %771 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %770, i64 0, 1 + %772 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %771, i64 0, 2 + %773 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %774 = getelementptr ptr, ptr %773, i64 0 + store ptr %766, ptr %774, align 8 + %775 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %773, 0 + %776 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %775, i64 1, 1 + %777 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %776, i64 1, 2 + %778 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %772, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %777, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %778) + store ptr %778, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 br label %_llgo_86 -_llgo_86: ; preds = %_llgo_85, %_llgo_82 - %600 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Imethod", align 8 - %601 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %602 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @33, i64 7 }, i64 25, i64 24, i64 0, i64 3) - %603 = load ptr, ptr @"_llgo_struct$eoXJdAUqA_SyytMpb3QTBaQ2Bh9nLc089-gvCiW55io", align 8 - %604 = icmp eq ptr %603, null - br i1 %604, label %_llgo_87, label %_llgo_88 +_llgo_86: ; preds = %_llgo_85, %_llgo_84 + %779 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 + %780 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %779, 1 + %781 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %780, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).InterfaceType", 2 + %782 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %781, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).InterfaceType", 3 + %783 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %784 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %783, 1 + %785 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %784, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IsClosure", 2 + %786 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %785, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IsClosure", 3 + %787 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %788 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %787, 1 + %789 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %788, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IsDirectIface", 2 + %790 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %789, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IsDirectIface", 3 + %791 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %792 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %793 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %792, 1 + %794 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %793, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Key", 2 + %795 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %794, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Key", 3 + %796 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, i64 7, i64 8, i64 1, i64 1) + %797 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Kind", align 8 + %798 = icmp eq ptr %797, null + br i1 %798, label %_llgo_87, label %_llgo_88 _llgo_87: ; preds = %_llgo_86 - %605 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %601, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) - %606 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %607 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @39, i64 8 }, ptr %606, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %608 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %602) - %609 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @40, i64 7 }, ptr %608, i64 88, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %610 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 168) - %611 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %610, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %605, ptr %611, align 8 - %612 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %610, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %607, ptr %612, align 8 - %613 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %610, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %609, ptr %613, align 8 - %614 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %610, 0 - %615 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %614, i64 3, 1 - %616 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %615, i64 3, 2 - %617 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 112, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %616) - store ptr %617, ptr @"_llgo_struct$eoXJdAUqA_SyytMpb3QTBaQ2Bh9nLc089-gvCiW55io", align 8 + store ptr %796, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Kind", align 8 br label %_llgo_88 _llgo_88: ; preds = %_llgo_87, %_llgo_86 - %618 = load ptr, ptr @"_llgo_struct$eoXJdAUqA_SyytMpb3QTBaQ2Bh9nLc089-gvCiW55io", align 8 - br i1 %543, label %_llgo_89, label %_llgo_90 + %799 = load ptr, ptr @_llgo_uint, align 8 + %800 = icmp eq ptr %799, null + br i1 %800, label %_llgo_89, label %_llgo_90 _llgo_89: ; preds = %_llgo_88 - %619 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %620 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %619, 1 - %621 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %620, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Align", 2 - %622 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %621, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Align", 3 - %623 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 - %624 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 - %625 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %624, 1 - %626 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %625, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ArrayType", 2 - %627 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %626, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ArrayType", 3 - %628 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 - %629 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %628, 1 - %630 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %629, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ChanDir", 2 - %631 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %630, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ChanDir", 3 - %632 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %633 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %634 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %633, 1 - %635 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %634, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Common", 2 - %636 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %635, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Common", 3 - %637 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %638 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %639 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %638, 1 - %640 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %639, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Elem", 2 - %641 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %640, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Elem", 3 - %642 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %643 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 - %644 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %643, 1 - %645 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %644, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ExportedMethods", 2 - %646 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %645, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).ExportedMethods", 3 - %647 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %648 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %647, 1 - %649 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %648, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).FieldAlign", 2 - %650 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %649, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).FieldAlign", 3 - %651 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %652 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 - %653 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %652, 1 - %654 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %653, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).FuncType", 2 - %655 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %654, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).FuncType", 3 - %656 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %657 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %656, 1 - %658 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %657, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).HasName", 2 - %659 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %658, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).HasName", 3 - %660 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %661 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %660, 1 - %662 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %661, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IfaceIndir", 2 - %663 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %662, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IfaceIndir", 3 - %664 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, i64 25, i64 120, i64 0, i64 23) - %665 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - %666 = icmp eq ptr %665, null - br i1 %666, label %_llgo_91, label %_llgo_92 + %801 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 39) + store ptr %801, ptr @_llgo_uint, align 8 + br label %_llgo_90 -_llgo_90: ; preds = %_llgo_110, %_llgo_88 - %667 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - %668 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - %669 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 - %670 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %669, 1 - %671 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %670, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).InterfaceType", 2 - %672 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %671, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).InterfaceType", 3 - %673 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %674 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %673, 1 - %675 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %674, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IsClosure", 2 - %676 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %675, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IsClosure", 3 - %677 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %678 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %677, 1 - %679 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %678, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IsDirectIface", 2 - %680 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %679, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).IsDirectIface", 3 - %681 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %682 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %683 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %682, 1 - %684 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %683, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Key", 2 - %685 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %684, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Key", 3 - %686 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 - %687 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %686, 1 - %688 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %687, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Kind", 2 - %689 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %688, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Kind", 3 - %690 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %691 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %690, 1 - %692 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %691, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Len", 2 - %693 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %692, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Len", 3 - %694 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 - %695 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 - %696 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %695, 1 - %697 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %696, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).MapType", 2 - %698 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %697, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).MapType", 3 - %699 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %700 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %699, 1 - %701 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %700, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).NumMethod", 2 - %702 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %701, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).NumMethod", 3 - %703 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %704 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %703, 1 - %705 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %704, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Pointers", 2 - %706 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %705, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Pointers", 3 - %707 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 - %708 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %707, 1 - %709 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %708, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Size", 2 - %710 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %709, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Size", 3 - %711 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %712 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %711, 1 - %713 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %712, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).String", 2 - %714 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %713, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).String", 3 - %715 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - %716 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 - %717 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %716, 1 - %718 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %717, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).StructType", 2 - %719 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %718, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).StructType", 3 - %720 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 - %721 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %720, 1 - %722 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %721, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Uncommon", 2 - %723 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %722, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Uncommon", 3 - %724 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %725 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @74, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %724, 1 - %726 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %725, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Variadic", 2 - %727 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %726, ptr @"github.com/goplus/llgo/runtime/abi.(*FuncType).Variadic", 3 - %728 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 960) - %729 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %447, ptr %729, align 8 - %730 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %452, ptr %730, align 8 - %731 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %456, ptr %731, align 8 - %732 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 3 - store %"github.com/goplus/llgo/runtime/abi.Method" %461, ptr %732, align 8 - %733 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 4 - store %"github.com/goplus/llgo/runtime/abi.Method" %466, ptr %733, align 8 - %734 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 5 - store %"github.com/goplus/llgo/runtime/abi.Method" %493, ptr %734, align 8 - %735 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 6 - store %"github.com/goplus/llgo/runtime/abi.Method" %497, ptr %735, align 8 - %736 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 7 - store %"github.com/goplus/llgo/runtime/abi.Method" %519, ptr %736, align 8 - %737 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 8 - store %"github.com/goplus/llgo/runtime/abi.Method" %536, ptr %737, align 8 - %738 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 9 - store %"github.com/goplus/llgo/runtime/abi.Method" %540, ptr %738, align 8 - %739 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 10 - store %"github.com/goplus/llgo/runtime/abi.Method" %672, ptr %739, align 8 - %740 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 11 - store %"github.com/goplus/llgo/runtime/abi.Method" %676, ptr %740, align 8 - %741 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 12 - store %"github.com/goplus/llgo/runtime/abi.Method" %680, ptr %741, align 8 - %742 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 13 - store %"github.com/goplus/llgo/runtime/abi.Method" %685, ptr %742, align 8 - %743 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 14 - store %"github.com/goplus/llgo/runtime/abi.Method" %689, ptr %743, align 8 - %744 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 15 - store %"github.com/goplus/llgo/runtime/abi.Method" %693, ptr %744, align 8 - %745 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 16 - store %"github.com/goplus/llgo/runtime/abi.Method" %698, ptr %745, align 8 - %746 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 17 - store %"github.com/goplus/llgo/runtime/abi.Method" %702, ptr %746, align 8 - %747 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 18 - store %"github.com/goplus/llgo/runtime/abi.Method" %706, ptr %747, align 8 - %748 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 19 - store %"github.com/goplus/llgo/runtime/abi.Method" %710, ptr %748, align 8 - %749 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 20 - store %"github.com/goplus/llgo/runtime/abi.Method" %714, ptr %749, align 8 - %750 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 21 - store %"github.com/goplus/llgo/runtime/abi.Method" %719, ptr %750, align 8 - %751 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 22 - store %"github.com/goplus/llgo/runtime/abi.Method" %723, ptr %751, align 8 - %752 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %728, i64 23 - store %"github.com/goplus/llgo/runtime/abi.Method" %727, ptr %752, align 8 - %753 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %728, 0 - %754 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %753, i64 24, 1 - %755 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %754, i64 24, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %411, ptr %443, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %755) - br label %_llgo_64 +_llgo_90: ; preds = %_llgo_89, %_llgo_88 + %802 = load ptr, ptr @_llgo_uint, align 8 + br i1 %798, label %_llgo_91, label %_llgo_92 -_llgo_91: ; preds = %_llgo_89 - %756 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %664) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %756) - store ptr %756, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 +_llgo_91: ; preds = %_llgo_90 + %803 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %804 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %803, 1 + %805 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %804, ptr @"github.com/goplus/llgo/runtime/abi.(*Kind).String", 2 + %806 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %805, ptr @"github.com/goplus/llgo/runtime/abi.(*Kind).String", 3 + %807 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %803, 1 + %808 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %807, ptr @"github.com/goplus/llgo/runtime/abi.(*Kind).String", 2 + %809 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %808, ptr @"github.com/goplus/llgo/runtime/abi.Kind.String", 3 + %810 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) + %811 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %810, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %809, ptr %811, align 8 + %812 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %810, 0 + %813 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %812, i64 1, 1 + %814 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %813, i64 1, 2 + %815 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) + %816 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %815, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %806, ptr %816, align 8 + %817 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %815, 0 + %818 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %817, i64 1, 1 + %819 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %818, i64 1, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %796, ptr %802, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %814, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %819) br label %_llgo_92 -_llgo_92: ; preds = %_llgo_91, %_llgo_89 - %757 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - %758 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - %759 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 - %760 = icmp eq ptr %759, null - br i1 %760, label %_llgo_93, label %_llgo_94 +_llgo_92: ; preds = %_llgo_91, %_llgo_90 + %820 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Kind", align 8 + %821 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Kind", align 8 + %822 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 + %823 = icmp eq ptr %822, null + br i1 %823, label %_llgo_93, label %_llgo_94 _llgo_93: ; preds = %_llgo_92 - %761 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %762 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %761, 0 - %763 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %762, i64 0, 1 - %764 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %763, i64 0, 2 - %765 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %766 = getelementptr ptr, ptr %765, i64 0 - store ptr %758, ptr %766, align 8 - %767 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %765, 0 - %768 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %767, i64 1, 1 - %769 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %768, i64 1, 2 - %770 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %764, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %769, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %770) - store ptr %770, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 + %824 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %825 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %824, 0 + %826 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %825, i64 0, 1 + %827 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %826, i64 0, 2 + %828 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %829 = getelementptr ptr, ptr %828, i64 0 + store ptr %821, ptr %829, align 8 + %830 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %828, 0 + %831 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %830, i64 1, 1 + %832 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %831, i64 1, 2 + %833 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %827, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %832, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %833) + store ptr %833, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 br label %_llgo_94 _llgo_94: ; preds = %_llgo_93, %_llgo_92 - %771 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 - %772 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %771, 1 - %773 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %772, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).InterfaceType", 2 - %774 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %773, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).InterfaceType", 3 - %775 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %776 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %775, 1 - %777 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %776, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IsClosure", 2 - %778 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %777, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IsClosure", 3 - %779 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %780 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %779, 1 - %781 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %780, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IsDirectIface", 2 - %782 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %781, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).IsDirectIface", 3 - %783 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %784 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %785 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %784, 1 - %786 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %785, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Key", 2 - %787 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %786, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Key", 3 - %788 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, i64 7, i64 8, i64 1, i64 1) - %789 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Kind", align 8 - %790 = icmp eq ptr %789, null - br i1 %790, label %_llgo_95, label %_llgo_96 + %834 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 + %835 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %834, 1 + %836 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %835, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Kind", 2 + %837 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %836, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Kind", 3 + %838 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %839 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %838, 1 + %840 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %839, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Len", 2 + %841 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %840, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Len", 3 + %842 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, i64 25, i64 136, i64 0, i64 26) + %843 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 + %844 = icmp eq ptr %843, null + br i1 %844, label %_llgo_95, label %_llgo_96 _llgo_95: ; preds = %_llgo_94 - store ptr %788, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Kind", align 8 + store ptr %842, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 br label %_llgo_96 _llgo_96: ; preds = %_llgo_95, %_llgo_94 - %791 = load ptr, ptr @_llgo_uint, align 8 - %792 = icmp eq ptr %791, null - br i1 %792, label %_llgo_97, label %_llgo_98 + %845 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %846 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %847 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %848 = load ptr, ptr @_llgo_Pointer, align 8 + %849 = load ptr, ptr @_llgo_uintptr, align 8 + %850 = load ptr, ptr @_llgo_uintptr, align 8 + %851 = load ptr, ptr @"_llgo_func$ahHMZCcDhfW-lrs446sPkiW0NoVa2vpmK_wKarVa_20", align 8 + %852 = icmp eq ptr %851, null + br i1 %852, label %_llgo_97, label %_llgo_98 _llgo_97: ; preds = %_llgo_96 - %793 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 39) - store ptr %793, ptr @_llgo_uint, align 8 + %853 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) + %854 = getelementptr ptr, ptr %853, i64 0 + store ptr %848, ptr %854, align 8 + %855 = getelementptr ptr, ptr %853, i64 1 + store ptr %849, ptr %855, align 8 + %856 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %853, 0 + %857 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %856, i64 2, 1 + %858 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %857, i64 2, 2 + %859 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %860 = getelementptr ptr, ptr %859, i64 0 + store ptr %850, ptr %860, align 8 + %861 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %859, 0 + %862 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %861, i64 1, 1 + %863 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %862, i64 1, 2 + %864 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %858, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %863, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %864) + store ptr %864, ptr @"_llgo_func$ahHMZCcDhfW-lrs446sPkiW0NoVa2vpmK_wKarVa_20", align 8 br label %_llgo_98 _llgo_98: ; preds = %_llgo_97, %_llgo_96 - %794 = load ptr, ptr @_llgo_uint, align 8 - br i1 %790, label %_llgo_99, label %_llgo_100 + %865 = load ptr, ptr @"_llgo_func$ahHMZCcDhfW-lrs446sPkiW0NoVa2vpmK_wKarVa_20", align 8 + %866 = load ptr, ptr @_llgo_Pointer, align 8 + %867 = load ptr, ptr @_llgo_uintptr, align 8 + %868 = load ptr, ptr @_llgo_uintptr, align 8 + %869 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) + %870 = getelementptr ptr, ptr %869, i64 0 + store ptr %866, ptr %870, align 8 + %871 = getelementptr ptr, ptr %869, i64 1 + store ptr %867, ptr %871, align 8 + %872 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %869, 0 + %873 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %872, i64 2, 1 + %874 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %873, i64 2, 2 + %875 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %876 = getelementptr ptr, ptr %875, i64 0 + store ptr %868, ptr %876, align 8 + %877 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %875, 0 + %878 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %877, i64 1, 1 + %879 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %878, i64 1, 2 + %880 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %874, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %879, i1 false) + %881 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 2 }, ptr %880, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %882 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 58) + %883 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 5 }, ptr %882, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %884 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 112) + %885 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %884, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %881, ptr %885, align 8 + %886 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %884, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %883, ptr %886, align 8 + %887 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %884, 0 + %888 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %887, i64 2, 1 + %889 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %888, i64 2, 2 + %890 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %889) + store ptr %890, ptr @"main.struct$Oy3XhjARgY_pH1HU6oBj0nSC2Qs1A6CU4bRajpBttZc", align 8 + %891 = load ptr, ptr @"main.struct$Oy3XhjARgY_pH1HU6oBj0nSC2Qs1A6CU4bRajpBttZc", align 8 + %892 = load ptr, ptr @_llgo_uint16, align 8 + %893 = icmp eq ptr %892, null + br i1 %893, label %_llgo_99, label %_llgo_100 _llgo_99: ; preds = %_llgo_98 - %795 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %796 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %795, 1 - %797 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %796, ptr @"github.com/goplus/llgo/runtime/abi.(*Kind).String", 2 - %798 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %797, ptr @"github.com/goplus/llgo/runtime/abi.(*Kind).String", 3 - %799 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %795, 1 - %800 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %799, ptr @"github.com/goplus/llgo/runtime/abi.(*Kind).String", 2 - %801 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %800, ptr @"github.com/goplus/llgo/runtime/abi.Kind.String", 3 - %802 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) - %803 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %802, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %801, ptr %803, align 8 - %804 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %802, 0 - %805 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %804, i64 1, 1 - %806 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %805, i64 1, 2 - %807 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 40) - %808 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %807, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %798, ptr %808, align 8 - %809 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %807, 0 - %810 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %809, i64 1, 1 - %811 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %810, i64 1, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %788, ptr %794, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %806, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %811) + %894 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 41) + store ptr %894, ptr @_llgo_uint16, align 8 br label %_llgo_100 _llgo_100: ; preds = %_llgo_99, %_llgo_98 - %812 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Kind", align 8 - %813 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Kind", align 8 - %814 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 - %815 = icmp eq ptr %814, null - br i1 %815, label %_llgo_101, label %_llgo_102 + %895 = load ptr, ptr @_llgo_uint16, align 8 + %896 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %897 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %898 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %899 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %900 = load ptr, ptr @_llgo_Pointer, align 8 + %901 = load ptr, ptr @_llgo_uintptr, align 8 + %902 = load ptr, ptr @_llgo_uintptr, align 8 + %903 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %896, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) + %904 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %897) + %905 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr %904, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %906 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %898) + %907 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr %906, i64 80, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %908 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %899) + %909 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @47, i64 6 }, ptr %908, i64 88, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %910 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) + %911 = getelementptr ptr, ptr %910, i64 0 + store ptr %900, ptr %911, align 8 + %912 = getelementptr ptr, ptr %910, i64 1 + store ptr %901, ptr %912, align 8 + %913 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %910, 0 + %914 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %913, i64 2, 1 + %915 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %914, i64 2, 2 + %916 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %917 = getelementptr ptr, ptr %916, i64 0 + store ptr %902, ptr %917, align 8 + %918 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %916, 0 + %919 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %918, i64 1, 1 + %920 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %919, i64 1, 2 + %921 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %915, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %920, i1 false) + %922 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 2 }, ptr %921, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %923 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 58) + %924 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 5 }, ptr %923, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %925 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 112) + %926 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %925, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %922, ptr %926, align 8 + %927 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %925, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %924, ptr %927, align 8 + %928 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %925, 0 + %929 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %928, i64 2, 1 + %930 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %929, i64 2, 2 + %931 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %930) + %932 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @48, i64 6 }, ptr %931, i64 96, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %933 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 40) + %934 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @49, i64 7 }, ptr %933, i64 112, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %935 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 40) + %936 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @50, i64 9 }, ptr %935, i64 113, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %937 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 41) + %938 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @51, i64 10 }, ptr %937, i64 114, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %939 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 42) + %940 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @52, i64 5 }, ptr %939, i64 116, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %941 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 504) + %942 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %941, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %903, ptr %942, align 8 + %943 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %941, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %905, ptr %943, align 8 + %944 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %941, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %907, ptr %944, align 8 + %945 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %941, i64 3 + store %"github.com/goplus/llgo/runtime/abi.StructField" %909, ptr %945, align 8 + %946 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %941, i64 4 + store %"github.com/goplus/llgo/runtime/abi.StructField" %932, ptr %946, align 8 + %947 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %941, i64 5 + store %"github.com/goplus/llgo/runtime/abi.StructField" %934, ptr %947, align 8 + %948 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %941, i64 6 + store %"github.com/goplus/llgo/runtime/abi.StructField" %936, ptr %948, align 8 + %949 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %941, i64 7 + store %"github.com/goplus/llgo/runtime/abi.StructField" %938, ptr %949, align 8 + %950 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %941, i64 8 + store %"github.com/goplus/llgo/runtime/abi.StructField" %940, ptr %950, align 8 + %951 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %941, 0 + %952 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %951, i64 9, 1 + %953 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %952, i64 9, 2 + %954 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 120, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %953) + store ptr %954, ptr @"main.struct$fcvaNpt6kbBgWOAYzHzrrsaKXunEtzMD4RdymMNJqTs", align 8 + %955 = load ptr, ptr @"main.struct$fcvaNpt6kbBgWOAYzHzrrsaKXunEtzMD4RdymMNJqTs", align 8 + br i1 %844, label %_llgo_101, label %_llgo_102 _llgo_101: ; preds = %_llgo_100 - %816 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %817 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %816, 0 - %818 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %817, i64 0, 1 - %819 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %818, i64 0, 2 - %820 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %821 = getelementptr ptr, ptr %820, i64 0 - store ptr %813, ptr %821, align 8 - %822 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %820, 0 - %823 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %822, i64 1, 1 - %824 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %823, i64 1, 2 - %825 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %819, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %824, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %825) - store ptr %825, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 - br label %_llgo_102 + %956 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %957 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %956, 1 + %958 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %957, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Align", 2 + %959 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %958, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Align", 3 + %960 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 + %961 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 + %962 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %961, 1 + %963 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %962, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ArrayType", 2 + %964 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %963, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ArrayType", 3 + %965 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 + %966 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %965, 1 + %967 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %966, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ChanDir", 2 + %968 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %967, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ChanDir", 3 + %969 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %970 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %971 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %970, 1 + %972 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %971, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Common", 2 + %973 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %972, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Common", 3 + %974 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %975 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + %976 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %975, 1 + %977 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %976, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ExportedMethods", 2 + %978 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %977, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ExportedMethods", 3 + %979 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %980 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %979, 1 + %981 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %980, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).FieldAlign", 2 + %982 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %981, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).FieldAlign", 3 + %983 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %984 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 + %985 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %984, 1 + %986 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %985, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).FuncType", 2 + %987 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %986, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).FuncType", 3 + %988 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %989 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %988, 1 + %990 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %989, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).HasName", 2 + %991 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %990, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).HasName", 3 + %992 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %993 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @53, i64 14 }, ptr undef, ptr undef, ptr undef }, ptr %992, 1 + %994 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %993, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).HashMightPanic", 2 + %995 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %994, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).HashMightPanic", 3 + %996 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %997 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %996, 1 + %998 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %997, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IfaceIndir", 2 + %999 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %998, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IfaceIndir", 3 + %1000 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1001 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @54, i64 12 }, ptr undef, ptr undef, ptr undef }, ptr %1000, 1 + %1002 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1001, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IndirectElem", 2 + %1003 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1002, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IndirectElem", 3 + %1004 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1005 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @55, i64 11 }, ptr undef, ptr undef, ptr undef }, ptr %1004, 1 + %1006 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1005, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IndirectKey", 2 + %1007 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1006, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IndirectKey", 3 + %1008 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 + %1009 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 + %1010 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1009, 1 + %1011 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1010, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).InterfaceType", 2 + %1012 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1011, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).InterfaceType", 3 + %1013 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1014 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1013, 1 + %1015 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1014, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IsClosure", 2 + %1016 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1015, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IsClosure", 3 + %1017 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1018 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1017, 1 + %1019 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1018, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IsDirectIface", 2 + %1020 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1019, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IsDirectIface", 3 + %1021 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 + %1022 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1021, 1 + %1023 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1022, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Kind", 2 + %1024 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1023, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Kind", 3 + %1025 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %1026 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %1025, 1 + %1027 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1026, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Len", 2 + %1028 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1027, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Len", 3 + %1029 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, i64 25, i64 136, i64 0, i64 26) + %1030 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 + %1031 = icmp eq ptr %1030, null + br i1 %1031, label %_llgo_103, label %_llgo_104 -_llgo_102: ; preds = %_llgo_101, %_llgo_100 - %826 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 - %827 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %826, 1 - %828 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %827, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Kind", 2 - %829 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %828, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Kind", 3 - %830 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %831 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %830, 1 - %832 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %831, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Len", 2 - %833 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %832, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Len", 3 - %834 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, i64 25, i64 136, i64 0, i64 26) - %835 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 - %836 = icmp eq ptr %835, null - br i1 %836, label %_llgo_103, label %_llgo_104 +_llgo_102: ; preds = %_llgo_118, %_llgo_100 + %1032 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 + %1033 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 + %1034 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 + %1035 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1034, 1 + %1036 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1035, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).MapType", 2 + %1037 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1036, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).MapType", 3 + %1038 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %1039 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1038, 1 + %1040 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1039, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).NumMethod", 2 + %1041 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1040, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).NumMethod", 3 + %1042 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1043 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1042, 1 + %1044 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1043, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Pointers", 2 + %1045 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1044, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Pointers", 3 + %1046 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 + %1047 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1046, 1 + %1048 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1047, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Size", 2 + %1049 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1048, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Size", 3 + %1050 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %1051 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %1050, 1 + %1052 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1051, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).String", 2 + %1053 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1052, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).String", 3 + %1054 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + %1055 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 + %1056 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1055, 1 + %1057 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1056, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).StructType", 2 + %1058 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1057, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).StructType", 3 + %1059 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 + %1060 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1059, 1 + %1061 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1060, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Uncommon", 2 + %1062 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1061, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Uncommon", 3 + %1063 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 920) + %1064 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %630, ptr %1064, align 8 + %1065 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %635, ptr %1065, align 8 + %1066 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %639, ptr %1066, align 8 + %1067 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 3 + store %"github.com/goplus/llgo/runtime/abi.Method" %644, ptr %1067, align 8 + %1068 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 4 + store %"github.com/goplus/llgo/runtime/abi.Method" %649, ptr %1068, align 8 + %1069 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 5 + store %"github.com/goplus/llgo/runtime/abi.Method" %654, ptr %1069, align 8 + %1070 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 6 + store %"github.com/goplus/llgo/runtime/abi.Method" %658, ptr %1070, align 8 + %1071 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 7 + store %"github.com/goplus/llgo/runtime/abi.Method" %663, ptr %1071, align 8 + %1072 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 8 + store %"github.com/goplus/llgo/runtime/abi.Method" %667, ptr %1072, align 8 + %1073 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 9 + store %"github.com/goplus/llgo/runtime/abi.Method" %671, ptr %1073, align 8 + %1074 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 10 + store %"github.com/goplus/llgo/runtime/abi.Method" %782, ptr %1074, align 8 + %1075 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 11 + store %"github.com/goplus/llgo/runtime/abi.Method" %786, ptr %1075, align 8 + %1076 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 12 + store %"github.com/goplus/llgo/runtime/abi.Method" %790, ptr %1076, align 8 + %1077 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 13 + store %"github.com/goplus/llgo/runtime/abi.Method" %795, ptr %1077, align 8 + %1078 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 14 + store %"github.com/goplus/llgo/runtime/abi.Method" %837, ptr %1078, align 8 + %1079 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 15 + store %"github.com/goplus/llgo/runtime/abi.Method" %841, ptr %1079, align 8 + %1080 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 16 + store %"github.com/goplus/llgo/runtime/abi.Method" %1037, ptr %1080, align 8 + %1081 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 17 + store %"github.com/goplus/llgo/runtime/abi.Method" %1041, ptr %1081, align 8 + %1082 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 18 + store %"github.com/goplus/llgo/runtime/abi.Method" %1045, ptr %1082, align 8 + %1083 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 19 + store %"github.com/goplus/llgo/runtime/abi.Method" %1049, ptr %1083, align 8 + %1084 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 20 + store %"github.com/goplus/llgo/runtime/abi.Method" %1053, ptr %1084, align 8 + %1085 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 21 + store %"github.com/goplus/llgo/runtime/abi.Method" %1058, ptr %1085, align 8 + %1086 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1063, i64 22 + store %"github.com/goplus/llgo/runtime/abi.Method" %1062, ptr %1086, align 8 + %1087 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1063, 0 + %1088 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1087, i64 23, 1 + %1089 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1088, i64 23, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %553, ptr %626, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1089) + br label %_llgo_82 -_llgo_103: ; preds = %_llgo_102 - store ptr %834, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 +_llgo_103: ; preds = %_llgo_101 + %1090 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1029) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1090) + store ptr %1090, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 br label %_llgo_104 -_llgo_104: ; preds = %_llgo_103, %_llgo_102 - %837 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %838 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %839 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %840 = load ptr, ptr @_llgo_Pointer, align 8 - %841 = load ptr, ptr @_llgo_uintptr, align 8 - %842 = load ptr, ptr @_llgo_uintptr, align 8 - %843 = load ptr, ptr @"_llgo_func$ahHMZCcDhfW-lrs446sPkiW0NoVa2vpmK_wKarVa_20", align 8 - %844 = icmp eq ptr %843, null - br i1 %844, label %_llgo_105, label %_llgo_106 +_llgo_104: ; preds = %_llgo_103, %_llgo_101 + %1091 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 + %1092 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 + %1093 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 + %1094 = icmp eq ptr %1093, null + br i1 %1094, label %_llgo_105, label %_llgo_106 _llgo_105: ; preds = %_llgo_104 - %845 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) - %846 = getelementptr ptr, ptr %845, i64 0 - store ptr %840, ptr %846, align 8 - %847 = getelementptr ptr, ptr %845, i64 1 - store ptr %841, ptr %847, align 8 - %848 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %845, 0 - %849 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %848, i64 2, 1 - %850 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %849, i64 2, 2 - %851 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %852 = getelementptr ptr, ptr %851, i64 0 - store ptr %842, ptr %852, align 8 - %853 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %851, 0 - %854 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %853, i64 1, 1 - %855 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %854, i64 1, 2 - %856 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %850, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %855, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %856) - store ptr %856, ptr @"_llgo_func$ahHMZCcDhfW-lrs446sPkiW0NoVa2vpmK_wKarVa_20", align 8 + %1095 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %1096 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1095, 0 + %1097 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1096, i64 0, 1 + %1098 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1097, i64 0, 2 + %1099 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %1100 = getelementptr ptr, ptr %1099, i64 0 + store ptr %1092, ptr %1100, align 8 + %1101 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1099, 0 + %1102 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1101, i64 1, 1 + %1103 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1102, i64 1, 2 + %1104 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1098, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1103, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1104) + store ptr %1104, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 br label %_llgo_106 _llgo_106: ; preds = %_llgo_105, %_llgo_104 - %857 = load ptr, ptr @"_llgo_func$ahHMZCcDhfW-lrs446sPkiW0NoVa2vpmK_wKarVa_20", align 8 - %858 = load ptr, ptr @_llgo_Pointer, align 8 - %859 = load ptr, ptr @_llgo_uintptr, align 8 - %860 = load ptr, ptr @_llgo_uintptr, align 8 - %861 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) - %862 = getelementptr ptr, ptr %861, i64 0 - store ptr %858, ptr %862, align 8 - %863 = getelementptr ptr, ptr %861, i64 1 - store ptr %859, ptr %863, align 8 - %864 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %861, 0 - %865 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %864, i64 2, 1 - %866 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %865, i64 2, 2 - %867 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %868 = getelementptr ptr, ptr %867, i64 0 - store ptr %860, ptr %868, align 8 - %869 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %867, 0 - %870 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %869, i64 1, 1 - %871 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %870, i64 1, 2 - %872 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %866, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %871, i1 false) - %873 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 2 }, ptr %872, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %874 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 58) - %875 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 5 }, ptr %874, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %876 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 112) - %877 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %876, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %873, ptr %877, align 8 - %878 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %876, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %875, ptr %878, align 8 - %879 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %876, 0 - %880 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %879, i64 2, 1 - %881 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %880, i64 2, 2 - %882 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %881) - store ptr %882, ptr @"main.struct$Oy3XhjARgY_pH1HU6oBj0nSC2Qs1A6CU4bRajpBttZc", align 8 - %883 = load ptr, ptr @"main.struct$Oy3XhjARgY_pH1HU6oBj0nSC2Qs1A6CU4bRajpBttZc", align 8 - %884 = load ptr, ptr @_llgo_uint16, align 8 - %885 = icmp eq ptr %884, null - br i1 %885, label %_llgo_107, label %_llgo_108 + %1105 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 + %1106 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1105, 1 + %1107 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1106, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).MapType", 2 + %1108 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1107, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).MapType", 3 + %1109 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1110 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @56, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1109, 1 + %1111 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1110, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).NeedKeyUpdate", 2 + %1112 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1111, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).NeedKeyUpdate", 3 + %1113 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %1114 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1113, 1 + %1115 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1114, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).NumMethod", 2 + %1116 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1115, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).NumMethod", 3 + %1117 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1118 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1117, 1 + %1119 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1118, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Pointers", 2 + %1120 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1119, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Pointers", 3 + %1121 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1122 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @59, i64 12 }, ptr undef, ptr undef, ptr undef }, ptr %1121, 1 + %1123 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1122, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ReflexiveKey", 2 + %1124 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1123, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ReflexiveKey", 3 + %1125 = load ptr, ptr @_llgo_uintptr, align 8 + %1126 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 + %1127 = icmp eq ptr %1126, null + br i1 %1127, label %_llgo_107, label %_llgo_108 _llgo_107: ; preds = %_llgo_106 - %886 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 41) - store ptr %886, ptr @_llgo_uint16, align 8 + %1128 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %1129 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1128, 0 + %1130 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1129, i64 0, 1 + %1131 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1130, i64 0, 2 + %1132 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %1133 = getelementptr ptr, ptr %1132, i64 0 + store ptr %1125, ptr %1133, align 8 + %1134 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1132, 0 + %1135 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1134, i64 1, 1 + %1136 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1135, i64 1, 2 + %1137 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1131, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1136, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1137) + store ptr %1137, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 br label %_llgo_108 _llgo_108: ; preds = %_llgo_107, %_llgo_106 - %887 = load ptr, ptr @_llgo_uint16, align 8 - %888 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %889 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %890 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %891 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %892 = load ptr, ptr @_llgo_Pointer, align 8 - %893 = load ptr, ptr @_llgo_uintptr, align 8 - %894 = load ptr, ptr @_llgo_uintptr, align 8 - %895 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %888, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) - %896 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %889) - %897 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr %896, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %898 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %890) - %899 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr %898, i64 80, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %900 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %891) - %901 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @47, i64 6 }, ptr %900, i64 88, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %902 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 16) - %903 = getelementptr ptr, ptr %902, i64 0 - store ptr %892, ptr %903, align 8 - %904 = getelementptr ptr, ptr %902, i64 1 - store ptr %893, ptr %904, align 8 - %905 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %902, 0 - %906 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %905, i64 2, 1 - %907 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %906, i64 2, 2 - %908 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %909 = getelementptr ptr, ptr %908, i64 0 - store ptr %894, ptr %909, align 8 - %910 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %908, 0 - %911 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %910, i64 1, 1 - %912 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %911, i64 1, 2 - %913 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %907, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %912, i1 false) - %914 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @5, i64 2 }, ptr %913, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %915 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 58) - %916 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @6, i64 5 }, ptr %915, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %917 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 112) - %918 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %917, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %914, ptr %918, align 8 - %919 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %917, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %916, ptr %919, align 8 - %920 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %917, 0 - %921 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %920, i64 2, 1 - %922 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %921, i64 2, 2 - %923 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %922) - %924 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @48, i64 6 }, ptr %923, i64 96, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %925 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 40) - %926 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @49, i64 7 }, ptr %925, i64 112, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %927 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 40) - %928 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @50, i64 9 }, ptr %927, i64 113, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %929 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 41) - %930 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @51, i64 10 }, ptr %929, i64 114, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %931 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 42) - %932 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @52, i64 5 }, ptr %931, i64 116, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %933 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 504) - %934 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %933, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %895, ptr %934, align 8 - %935 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %933, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %897, ptr %935, align 8 - %936 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %933, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %899, ptr %936, align 8 - %937 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %933, i64 3 - store %"github.com/goplus/llgo/runtime/abi.StructField" %901, ptr %937, align 8 - %938 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %933, i64 4 - store %"github.com/goplus/llgo/runtime/abi.StructField" %924, ptr %938, align 8 - %939 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %933, i64 5 - store %"github.com/goplus/llgo/runtime/abi.StructField" %926, ptr %939, align 8 - %940 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %933, i64 6 - store %"github.com/goplus/llgo/runtime/abi.StructField" %928, ptr %940, align 8 - %941 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %933, i64 7 - store %"github.com/goplus/llgo/runtime/abi.StructField" %930, ptr %941, align 8 - %942 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %933, i64 8 - store %"github.com/goplus/llgo/runtime/abi.StructField" %932, ptr %942, align 8 - %943 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %933, 0 - %944 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %943, i64 9, 1 - %945 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %944, i64 9, 2 - %946 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 120, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %945) - store ptr %946, ptr @"main.struct$fcvaNpt6kbBgWOAYzHzrrsaKXunEtzMD4RdymMNJqTs", align 8 - %947 = load ptr, ptr @"main.struct$fcvaNpt6kbBgWOAYzHzrrsaKXunEtzMD4RdymMNJqTs", align 8 - br i1 %836, label %_llgo_109, label %_llgo_110 + %1138 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 + %1139 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1138, 1 + %1140 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1139, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Size", 2 + %1141 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1140, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Size", 3 + %1142 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %1143 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %1142, 1 + %1144 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1143, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).String", 2 + %1145 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1144, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).String", 3 + %1146 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, i64 25, i64 120, i64 0, i64 23) + %1147 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + %1148 = icmp eq ptr %1147, null + br i1 %1148, label %_llgo_109, label %_llgo_110 _llgo_109: ; preds = %_llgo_108 - %948 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %949 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %948, 1 - %950 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %949, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Align", 2 - %951 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %950, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Align", 3 - %952 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 - %953 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 - %954 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %953, 1 - %955 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %954, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ArrayType", 2 - %956 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %955, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ArrayType", 3 - %957 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 - %958 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %957, 1 - %959 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %958, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ChanDir", 2 - %960 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %959, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ChanDir", 3 - %961 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %962 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %963 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %962, 1 - %964 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %963, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Common", 2 - %965 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %964, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Common", 3 - %966 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %967 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 - %968 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %967, 1 - %969 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %968, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ExportedMethods", 2 - %970 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %969, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ExportedMethods", 3 - %971 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %972 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %971, 1 - %973 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %972, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).FieldAlign", 2 - %974 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %973, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).FieldAlign", 3 - %975 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %976 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 - %977 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %976, 1 - %978 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %977, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).FuncType", 2 - %979 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %978, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).FuncType", 3 - %980 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %981 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %980, 1 - %982 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %981, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).HasName", 2 - %983 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %982, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).HasName", 3 - %984 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %985 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @53, i64 14 }, ptr undef, ptr undef, ptr undef }, ptr %984, 1 - %986 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %985, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).HashMightPanic", 2 - %987 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %986, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).HashMightPanic", 3 - %988 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %989 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %988, 1 - %990 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %989, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IfaceIndir", 2 - %991 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %990, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IfaceIndir", 3 - %992 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %993 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @54, i64 12 }, ptr undef, ptr undef, ptr undef }, ptr %992, 1 - %994 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %993, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IndirectElem", 2 - %995 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %994, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IndirectElem", 3 - %996 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %997 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @55, i64 11 }, ptr undef, ptr undef, ptr undef }, ptr %996, 1 - %998 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %997, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IndirectKey", 2 - %999 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %998, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IndirectKey", 3 - %1000 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - %1001 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 - %1002 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1001, 1 - %1003 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1002, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).InterfaceType", 2 - %1004 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1003, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).InterfaceType", 3 - %1005 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1006 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1005, 1 - %1007 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1006, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IsClosure", 2 - %1008 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1007, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IsClosure", 3 - %1009 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1010 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1009, 1 - %1011 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1010, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IsDirectIface", 2 - %1012 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1011, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).IsDirectIface", 3 - %1013 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 - %1014 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1013, 1 - %1015 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1014, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Kind", 2 - %1016 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1015, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Kind", 3 - %1017 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %1018 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %1017, 1 - %1019 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1018, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Len", 2 - %1020 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1019, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Len", 3 - %1021 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, i64 25, i64 136, i64 0, i64 26) - %1022 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 - %1023 = icmp eq ptr %1022, null - br i1 %1023, label %_llgo_111, label %_llgo_112 + store ptr %1146, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + br label %_llgo_110 -_llgo_110: ; preds = %_llgo_130, %_llgo_108 - %1024 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 - %1025 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 - %1026 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 - %1027 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1026, 1 - %1028 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1027, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).MapType", 2 - %1029 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1028, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).MapType", 3 - %1030 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %1031 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1030, 1 - %1032 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1031, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).NumMethod", 2 - %1033 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1032, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).NumMethod", 3 - %1034 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1035 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1034, 1 - %1036 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1035, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Pointers", 2 - %1037 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1036, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Pointers", 3 - %1038 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 - %1039 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1038, 1 - %1040 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1039, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Size", 2 - %1041 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1040, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Size", 3 - %1042 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %1043 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %1042, 1 - %1044 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1043, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).String", 2 - %1045 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1044, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).String", 3 - %1046 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - %1047 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 - %1048 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1047, 1 - %1049 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1048, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).StructType", 2 - %1050 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1049, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).StructType", 3 - %1051 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 - %1052 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1051, 1 - %1053 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1052, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Uncommon", 2 - %1054 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1053, ptr @"github.com/goplus/llgo/runtime/abi.(*InterfaceType).Uncommon", 3 - %1055 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 920) - %1056 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %622, ptr %1056, align 8 - %1057 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %627, ptr %1057, align 8 - %1058 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %631, ptr %1058, align 8 - %1059 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 3 - store %"github.com/goplus/llgo/runtime/abi.Method" %636, ptr %1059, align 8 - %1060 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 4 - store %"github.com/goplus/llgo/runtime/abi.Method" %641, ptr %1060, align 8 - %1061 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 5 - store %"github.com/goplus/llgo/runtime/abi.Method" %646, ptr %1061, align 8 - %1062 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 6 - store %"github.com/goplus/llgo/runtime/abi.Method" %650, ptr %1062, align 8 - %1063 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 7 - store %"github.com/goplus/llgo/runtime/abi.Method" %655, ptr %1063, align 8 - %1064 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 8 - store %"github.com/goplus/llgo/runtime/abi.Method" %659, ptr %1064, align 8 - %1065 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 9 - store %"github.com/goplus/llgo/runtime/abi.Method" %663, ptr %1065, align 8 - %1066 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 10 - store %"github.com/goplus/llgo/runtime/abi.Method" %774, ptr %1066, align 8 - %1067 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 11 - store %"github.com/goplus/llgo/runtime/abi.Method" %778, ptr %1067, align 8 - %1068 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 12 - store %"github.com/goplus/llgo/runtime/abi.Method" %782, ptr %1068, align 8 - %1069 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 13 - store %"github.com/goplus/llgo/runtime/abi.Method" %787, ptr %1069, align 8 - %1070 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 14 - store %"github.com/goplus/llgo/runtime/abi.Method" %829, ptr %1070, align 8 - %1071 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 15 - store %"github.com/goplus/llgo/runtime/abi.Method" %833, ptr %1071, align 8 - %1072 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 16 - store %"github.com/goplus/llgo/runtime/abi.Method" %1029, ptr %1072, align 8 - %1073 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 17 - store %"github.com/goplus/llgo/runtime/abi.Method" %1033, ptr %1073, align 8 - %1074 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 18 - store %"github.com/goplus/llgo/runtime/abi.Method" %1037, ptr %1074, align 8 - %1075 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 19 - store %"github.com/goplus/llgo/runtime/abi.Method" %1041, ptr %1075, align 8 - %1076 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 20 - store %"github.com/goplus/llgo/runtime/abi.Method" %1045, ptr %1076, align 8 - %1077 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 21 - store %"github.com/goplus/llgo/runtime/abi.Method" %1050, ptr %1077, align 8 - %1078 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1055, i64 22 - store %"github.com/goplus/llgo/runtime/abi.Method" %1054, ptr %1078, align 8 - %1079 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1055, 0 - %1080 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1079, i64 23, 1 - %1081 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1080, i64 23, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %541, ptr %618, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1081) - br label %_llgo_90 +_llgo_110: ; preds = %_llgo_109, %_llgo_108 + %1149 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @62, i64 11 }, i64 25, i64 56, i64 0, i64 2) + %1150 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 + %1151 = icmp eq ptr %1150, null + br i1 %1151, label %_llgo_111, label %_llgo_112 -_llgo_111: ; preds = %_llgo_109 - %1082 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1021) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1082) - store ptr %1082, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 +_llgo_111: ; preds = %_llgo_110 + store ptr %1149, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 br label %_llgo_112 -_llgo_112: ; preds = %_llgo_111, %_llgo_109 - %1083 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 - %1084 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 - %1085 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 - %1086 = icmp eq ptr %1085, null - br i1 %1086, label %_llgo_113, label %_llgo_114 +_llgo_112: ; preds = %_llgo_111, %_llgo_110 + %1152 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %1153 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %1154 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %1155 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @34, i64 5 }, ptr %1154, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1156 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1153) + %1157 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @63, i64 3 }, ptr %1156, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1158 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 44) + %1159 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @64, i64 6 }, ptr %1158, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1160 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %1161 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @65, i64 4 }, ptr %1160, i64 32, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1162 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 33) + %1163 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @66, i64 9 }, ptr %1162, i64 48, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1164 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 280) + %1165 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1164, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1155, ptr %1165, align 8 + %1166 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1164, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1157, ptr %1166, align 8 + %1167 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1164, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1159, ptr %1167, align 8 + %1168 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1164, i64 3 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1161, ptr %1168, align 8 + %1169 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1164, i64 4 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1163, ptr %1169, align 8 + %1170 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1164, 0 + %1171 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1170, i64 5, 1 + %1172 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1171, i64 5, 2 + %1173 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 56, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1172) + store ptr %1173, ptr @"_llgo_struct$kJjSbRGD6vW5GBpnW3h2bqoH3rm-w30ibwmCd552LPU", align 8 + %1174 = load ptr, ptr @"_llgo_struct$kJjSbRGD6vW5GBpnW3h2bqoH3rm-w30ibwmCd552LPU", align 8 + br i1 %1151, label %_llgo_113, label %_llgo_114 _llgo_113: ; preds = %_llgo_112 - %1087 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %1088 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1087, 0 - %1089 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1088, i64 0, 1 - %1090 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1089, i64 0, 2 - %1091 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %1092 = getelementptr ptr, ptr %1091, i64 0 - store ptr %1084, ptr %1092, align 8 - %1093 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1091, 0 - %1094 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1093, i64 1, 1 - %1095 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1094, i64 1, 2 - %1096 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1090, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1095, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1096) - store ptr %1096, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 + %1175 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1176 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @67, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1175, 1 + %1177 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1176, ptr @"github.com/goplus/llgo/runtime/abi.(*StructField).Embedded", 2 + %1178 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1177, ptr @"github.com/goplus/llgo/runtime/abi.(*StructField).Embedded", 3 + %1179 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1180 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @36, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1179, 1 + %1181 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1180, ptr @"github.com/goplus/llgo/runtime/abi.(*StructField).Exported", 2 + %1182 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1181, ptr @"github.com/goplus/llgo/runtime/abi.(*StructField).Exported", 3 + %1183 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) + %1184 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1183, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %1178, ptr %1184, align 8 + %1185 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1183, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %1182, ptr %1185, align 8 + %1186 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1183, 0 + %1187 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1186, i64 2, 1 + %1188 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1187, i64 2, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %1149, ptr %1174, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1188) br label %_llgo_114 _llgo_114: ; preds = %_llgo_113, %_llgo_112 - %1097 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 - %1098 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1097, 1 - %1099 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1098, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).MapType", 2 - %1100 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1099, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).MapType", 3 - %1101 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1102 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @56, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1101, 1 - %1103 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1102, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).NeedKeyUpdate", 2 - %1104 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1103, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).NeedKeyUpdate", 3 - %1105 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %1106 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1105, 1 - %1107 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1106, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).NumMethod", 2 - %1108 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1107, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).NumMethod", 3 - %1109 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1110 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1109, 1 - %1111 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1110, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Pointers", 2 - %1112 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1111, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Pointers", 3 - %1113 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1114 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @59, i64 12 }, ptr undef, ptr undef, ptr undef }, ptr %1113, 1 - %1115 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1114, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ReflexiveKey", 2 - %1116 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1115, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).ReflexiveKey", 3 - %1117 = load ptr, ptr @_llgo_uintptr, align 8 - %1118 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 - %1119 = icmp eq ptr %1118, null - br i1 %1119, label %_llgo_115, label %_llgo_116 + %1189 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 + %1190 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @62, i64 11 }, i64 25, i64 56, i64 0, i64 2) + %1191 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 + %1192 = icmp eq ptr %1191, null + br i1 %1192, label %_llgo_115, label %_llgo_116 _llgo_115: ; preds = %_llgo_114 - %1120 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %1121 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1120, 0 - %1122 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1121, i64 0, 1 - %1123 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1122, i64 0, 2 - %1124 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %1125 = getelementptr ptr, ptr %1124, i64 0 - store ptr %1117, ptr %1125, align 8 - %1126 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1124, 0 - %1127 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1126, i64 1, 1 - %1128 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1127, i64 1, 2 - %1129 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1123, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1128, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1129) - store ptr %1129, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 + %1193 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %1190) + store ptr %1193, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 br label %_llgo_116 _llgo_116: ; preds = %_llgo_115, %_llgo_114 - %1130 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 - %1131 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1130, 1 - %1132 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1131, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Size", 2 - %1133 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1132, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Size", 3 - %1134 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %1135 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %1134, 1 - %1136 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1135, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).String", 2 - %1137 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1136, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).String", 3 - %1138 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, i64 25, i64 120, i64 0, i64 23) - %1139 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - %1140 = icmp eq ptr %1139, null - br i1 %1140, label %_llgo_117, label %_llgo_118 + %1194 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 + %1195 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %1196 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @62, i64 11 }, i64 25, i64 56, i64 0, i64 2) + %1197 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %1195, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) + %1198 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %1199 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @39, i64 8 }, ptr %1198, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1200 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %1196) + %1201 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @68, i64 6 }, ptr %1200, i64 88, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1202 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 168) + %1203 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1202, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1197, ptr %1203, align 8 + %1204 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1202, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1199, ptr %1204, align 8 + %1205 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1202, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1201, ptr %1205, align 8 + %1206 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1202, 0 + %1207 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1206, i64 3, 1 + %1208 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1207, i64 3, 2 + %1209 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 112, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1208) + store ptr %1209, ptr @"_llgo_struct$a40Ph0zKu8cPeYh4GJjFLIY8XDqrC7uc-XzprrJaUh0", align 8 + %1210 = load ptr, ptr @"_llgo_struct$a40Ph0zKu8cPeYh4GJjFLIY8XDqrC7uc-XzprrJaUh0", align 8 + br i1 %1148, label %_llgo_117, label %_llgo_118 _llgo_117: ; preds = %_llgo_116 - store ptr %1138, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - br label %_llgo_118 + %1211 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %1212 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %1211, 1 + %1213 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1212, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Align", 2 + %1214 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1213, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Align", 3 + %1215 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 + %1216 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 + %1217 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1216, 1 + %1218 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1217, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ArrayType", 2 + %1219 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1218, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ArrayType", 3 + %1220 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 + %1221 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1220, 1 + %1222 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1221, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ChanDir", 2 + %1223 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1222, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ChanDir", 3 + %1224 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %1225 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %1226 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %1225, 1 + %1227 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1226, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Common", 2 + %1228 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1227, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Common", 3 + %1229 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %1230 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %1231 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1230, 1 + %1232 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1231, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Elem", 2 + %1233 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1232, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Elem", 3 + %1234 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %1235 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + %1236 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %1235, 1 + %1237 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1236, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ExportedMethods", 2 + %1238 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1237, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ExportedMethods", 3 + %1239 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %1240 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1239, 1 + %1241 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1240, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).FieldAlign", 2 + %1242 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1241, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).FieldAlign", 3 + %1243 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %1244 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 + %1245 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1244, 1 + %1246 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1245, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).FuncType", 2 + %1247 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1246, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).FuncType", 3 + %1248 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1249 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1248, 1 + %1250 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1249, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).HasName", 2 + %1251 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1250, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).HasName", 3 + %1252 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1253 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1252, 1 + %1254 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1253, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IfaceIndir", 2 + %1255 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1254, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IfaceIndir", 3 + %1256 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 + %1257 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 + %1258 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1257, 1 + %1259 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1258, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).InterfaceType", 2 + %1260 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1259, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).InterfaceType", 3 + %1261 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1262 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1261, 1 + %1263 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1262, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IsClosure", 2 + %1264 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1263, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IsClosure", 3 + %1265 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1266 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1265, 1 + %1267 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1266, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IsDirectIface", 2 + %1268 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1267, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IsDirectIface", 3 + %1269 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %1270 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %1271 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %1270, 1 + %1272 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1271, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Key", 2 + %1273 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1272, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Key", 3 + %1274 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 + %1275 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1274, 1 + %1276 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1275, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Kind", 2 + %1277 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1276, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Kind", 3 + %1278 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %1279 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %1278, 1 + %1280 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1279, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Len", 2 + %1281 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1280, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Len", 3 + %1282 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 + %1283 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 + %1284 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1283, 1 + %1285 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1284, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).MapType", 2 + %1286 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1285, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).MapType", 3 + %1287 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %1288 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1287, 1 + %1289 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1288, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).NumMethod", 2 + %1290 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1289, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).NumMethod", 3 + %1291 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1292 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1291, 1 + %1293 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1292, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Pointers", 2 + %1294 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1293, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Pointers", 3 + %1295 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 + %1296 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1295, 1 + %1297 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1296, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Size", 2 + %1298 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1297, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Size", 3 + %1299 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %1300 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %1299, 1 + %1301 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1300, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).String", 2 + %1302 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1301, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).String", 3 + %1303 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, i64 25, i64 120, i64 0, i64 23) + %1304 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + %1305 = icmp eq ptr %1304, null + br i1 %1305, label %_llgo_119, label %_llgo_120 -_llgo_118: ; preds = %_llgo_117, %_llgo_116 - %1141 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @62, i64 11 }, i64 25, i64 56, i64 0, i64 2) - %1142 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 - %1143 = icmp eq ptr %1142, null - br i1 %1143, label %_llgo_119, label %_llgo_120 +_llgo_118: ; preds = %_llgo_130, %_llgo_116 + %1306 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + %1307 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + %1308 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 + %1309 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1308, 1 + %1310 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1309, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).StructType", 2 + %1311 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1310, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).StructType", 3 + %1312 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 + %1313 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1312, 1 + %1314 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1313, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Uncommon", 2 + %1315 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1314, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Uncommon", 3 + %1316 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 1040) + %1317 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %959, ptr %1317, align 8 + %1318 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %964, ptr %1318, align 8 + %1319 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %968, ptr %1319, align 8 + %1320 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 3 + store %"github.com/goplus/llgo/runtime/abi.Method" %973, ptr %1320, align 8 + %1321 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 4 + store %"github.com/goplus/llgo/runtime/abi.Method" %978, ptr %1321, align 8 + %1322 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 5 + store %"github.com/goplus/llgo/runtime/abi.Method" %982, ptr %1322, align 8 + %1323 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 6 + store %"github.com/goplus/llgo/runtime/abi.Method" %987, ptr %1323, align 8 + %1324 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 7 + store %"github.com/goplus/llgo/runtime/abi.Method" %991, ptr %1324, align 8 + %1325 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 8 + store %"github.com/goplus/llgo/runtime/abi.Method" %995, ptr %1325, align 8 + %1326 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 9 + store %"github.com/goplus/llgo/runtime/abi.Method" %999, ptr %1326, align 8 + %1327 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 10 + store %"github.com/goplus/llgo/runtime/abi.Method" %1003, ptr %1327, align 8 + %1328 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 11 + store %"github.com/goplus/llgo/runtime/abi.Method" %1007, ptr %1328, align 8 + %1329 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 12 + store %"github.com/goplus/llgo/runtime/abi.Method" %1012, ptr %1329, align 8 + %1330 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 13 + store %"github.com/goplus/llgo/runtime/abi.Method" %1016, ptr %1330, align 8 + %1331 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 14 + store %"github.com/goplus/llgo/runtime/abi.Method" %1020, ptr %1331, align 8 + %1332 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 15 + store %"github.com/goplus/llgo/runtime/abi.Method" %1024, ptr %1332, align 8 + %1333 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 16 + store %"github.com/goplus/llgo/runtime/abi.Method" %1028, ptr %1333, align 8 + %1334 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 17 + store %"github.com/goplus/llgo/runtime/abi.Method" %1108, ptr %1334, align 8 + %1335 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 18 + store %"github.com/goplus/llgo/runtime/abi.Method" %1112, ptr %1335, align 8 + %1336 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 19 + store %"github.com/goplus/llgo/runtime/abi.Method" %1116, ptr %1336, align 8 + %1337 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 20 + store %"github.com/goplus/llgo/runtime/abi.Method" %1120, ptr %1337, align 8 + %1338 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 21 + store %"github.com/goplus/llgo/runtime/abi.Method" %1124, ptr %1338, align 8 + %1339 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 22 + store %"github.com/goplus/llgo/runtime/abi.Method" %1141, ptr %1339, align 8 + %1340 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 23 + store %"github.com/goplus/llgo/runtime/abi.Method" %1145, ptr %1340, align 8 + %1341 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 24 + store %"github.com/goplus/llgo/runtime/abi.Method" %1311, ptr %1341, align 8 + %1342 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1316, i64 25 + store %"github.com/goplus/llgo/runtime/abi.Method" %1315, ptr %1342, align 8 + %1343 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1316, 0 + %1344 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1343, i64 26, 1 + %1345 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1344, i64 26, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %842, ptr %955, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1345) + br label %_llgo_102 -_llgo_119: ; preds = %_llgo_118 - store ptr %1141, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 +_llgo_119: ; preds = %_llgo_117 + %1346 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1303) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1346) + store ptr %1346, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 br label %_llgo_120 -_llgo_120: ; preds = %_llgo_119, %_llgo_118 - %1144 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %1145 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %1146 = load ptr, ptr @"_llgo_struct$kJjSbRGD6vW5GBpnW3h2bqoH3rm-w30ibwmCd552LPU", align 8 - %1147 = icmp eq ptr %1146, null - br i1 %1147, label %_llgo_121, label %_llgo_122 +_llgo_120: ; preds = %_llgo_119, %_llgo_117 + %1347 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + %1348 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + %1349 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 + %1350 = icmp eq ptr %1349, null + br i1 %1350, label %_llgo_121, label %_llgo_122 _llgo_121: ; preds = %_llgo_120 - %1148 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %1149 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @34, i64 5 }, ptr %1148, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1150 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1145) - %1151 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @63, i64 3 }, ptr %1150, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1152 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 44) - %1153 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @64, i64 6 }, ptr %1152, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1154 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %1155 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @65, i64 4 }, ptr %1154, i64 32, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1156 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 33) - %1157 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @66, i64 9 }, ptr %1156, i64 48, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1158 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 280) - %1159 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1158, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1149, ptr %1159, align 8 - %1160 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1158, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1151, ptr %1160, align 8 - %1161 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1158, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1153, ptr %1161, align 8 - %1162 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1158, i64 3 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1155, ptr %1162, align 8 - %1163 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1158, i64 4 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1157, ptr %1163, align 8 - %1164 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1158, 0 - %1165 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1164, i64 5, 1 - %1166 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1165, i64 5, 2 - %1167 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 56, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1166) - store ptr %1167, ptr @"_llgo_struct$kJjSbRGD6vW5GBpnW3h2bqoH3rm-w30ibwmCd552LPU", align 8 + %1351 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %1352 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1351, 0 + %1353 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1352, i64 0, 1 + %1354 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1353, i64 0, 2 + %1355 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %1356 = getelementptr ptr, ptr %1355, i64 0 + store ptr %1348, ptr %1356, align 8 + %1357 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1355, 0 + %1358 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1357, i64 1, 1 + %1359 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1358, i64 1, 2 + %1360 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1354, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1359, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1360) + store ptr %1360, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 br label %_llgo_122 _llgo_122: ; preds = %_llgo_121, %_llgo_120 - %1168 = load ptr, ptr @"_llgo_struct$kJjSbRGD6vW5GBpnW3h2bqoH3rm-w30ibwmCd552LPU", align 8 - br i1 %1143, label %_llgo_123, label %_llgo_124 + %1361 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 + %1362 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1361, 1 + %1363 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1362, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).StructType", 2 + %1364 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1363, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).StructType", 3 + %1365 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @70, i64 12 }, i64 25, i64 24, i64 0, i64 2) + %1366 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 + %1367 = icmp eq ptr %1366, null + br i1 %1367, label %_llgo_123, label %_llgo_124 _llgo_123: ; preds = %_llgo_122 - %1169 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1170 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @67, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1169, 1 - %1171 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1170, ptr @"github.com/goplus/llgo/runtime/abi.(*StructField).Embedded", 2 - %1172 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1171, ptr @"github.com/goplus/llgo/runtime/abi.(*StructField).Embedded", 3 - %1173 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1174 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @36, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1173, 1 - %1175 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1174, ptr @"github.com/goplus/llgo/runtime/abi.(*StructField).Exported", 2 - %1176 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1175, ptr @"github.com/goplus/llgo/runtime/abi.(*StructField).Exported", 3 - %1177 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) - %1178 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1177, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %1172, ptr %1178, align 8 - %1179 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1177, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %1176, ptr %1179, align 8 - %1180 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1177, 0 - %1181 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1180, i64 2, 1 - %1182 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1181, i64 2, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %1141, ptr %1168, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1182) + store ptr %1365, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 br label %_llgo_124 _llgo_124: ; preds = %_llgo_123, %_llgo_122 - %1183 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 - %1184 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @62, i64 11 }, i64 25, i64 56, i64 0, i64 2) - %1185 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 - %1186 = icmp eq ptr %1185, null - br i1 %1186, label %_llgo_125, label %_llgo_126 + %1368 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) + %1369 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @39, i64 8 }, ptr %1368, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1370 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 41) + %1371 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @71, i64 6 }, ptr %1370, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1372 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 41) + %1373 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @72, i64 6 }, ptr %1372, i64 18, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1374 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 42) + %1375 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @73, i64 4 }, ptr %1374, i64 20, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1376 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) + %1377 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1376, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1369, ptr %1377, align 8 + %1378 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1376, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1371, ptr %1378, align 8 + %1379 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1376, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1373, ptr %1379, align 8 + %1380 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1376, i64 3 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1375, ptr %1380, align 8 + %1381 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1376, 0 + %1382 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1381, i64 4, 1 + %1383 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1382, i64 4, 2 + %1384 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1383) + store ptr %1384, ptr @"_llgo_struct$OKIlItfBJsawrEMnVSc2VQ7pxNxCHIgSoitcM9n4FVI", align 8 + %1385 = load ptr, ptr @"_llgo_struct$OKIlItfBJsawrEMnVSc2VQ7pxNxCHIgSoitcM9n4FVI", align 8 + br i1 %1367, label %_llgo_125, label %_llgo_126 _llgo_125: ; preds = %_llgo_124 - %1187 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %1184) - store ptr %1187, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 + %1386 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %1387 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + %1388 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %1387, 1 + %1389 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1388, ptr @"github.com/goplus/llgo/runtime/abi.(*UncommonType).ExportedMethods", 2 + %1390 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1389, ptr @"github.com/goplus/llgo/runtime/abi.(*UncommonType).ExportedMethods", 3 + %1391 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %1392 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + %1393 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @40, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1392, 1 + %1394 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1393, ptr @"github.com/goplus/llgo/runtime/abi.(*UncommonType).Methods", 2 + %1395 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1394, ptr @"github.com/goplus/llgo/runtime/abi.(*UncommonType).Methods", 3 + %1396 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) + %1397 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1396, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %1390, ptr %1397, align 8 + %1398 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1396, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %1395, ptr %1398, align 8 + %1399 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1396, 0 + %1400 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1399, i64 2, 1 + %1401 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1400, i64 2, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %1365, ptr %1385, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1401) br label %_llgo_126 _llgo_126: ; preds = %_llgo_125, %_llgo_124 - %1188 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.StructField", align 8 - %1189 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %1190 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @62, i64 11 }, i64 25, i64 56, i64 0, i64 2) - %1191 = load ptr, ptr @"_llgo_struct$a40Ph0zKu8cPeYh4GJjFLIY8XDqrC7uc-XzprrJaUh0", align 8 - %1192 = icmp eq ptr %1191, null - br i1 %1192, label %_llgo_127, label %_llgo_128 + %1402 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 + %1403 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @70, i64 12 }, i64 25, i64 24, i64 0, i64 2) + %1404 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 + %1405 = icmp eq ptr %1404, null + br i1 %1405, label %_llgo_127, label %_llgo_128 _llgo_127: ; preds = %_llgo_126 - %1193 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, ptr %1189, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 true) - %1194 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %1195 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @39, i64 8 }, ptr %1194, i64 72, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1196 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %1190) - %1197 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @68, i64 6 }, ptr %1196, i64 88, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1198 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 168) - %1199 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1198, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1193, ptr %1199, align 8 - %1200 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1198, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1195, ptr %1200, align 8 - %1201 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1198, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1197, ptr %1201, align 8 - %1202 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1198, 0 - %1203 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1202, i64 3, 1 - %1204 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1203, i64 3, 2 - %1205 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 112, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1204) - store ptr %1205, ptr @"_llgo_struct$a40Ph0zKu8cPeYh4GJjFLIY8XDqrC7uc-XzprrJaUh0", align 8 + %1406 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1403) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1406) + store ptr %1406, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 br label %_llgo_128 _llgo_128: ; preds = %_llgo_127, %_llgo_126 - %1206 = load ptr, ptr @"_llgo_struct$a40Ph0zKu8cPeYh4GJjFLIY8XDqrC7uc-XzprrJaUh0", align 8 - br i1 %1140, label %_llgo_129, label %_llgo_130 + %1407 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 + %1408 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 + %1409 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 + %1410 = icmp eq ptr %1409, null + br i1 %1410, label %_llgo_129, label %_llgo_130 _llgo_129: ; preds = %_llgo_128 - %1207 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %1208 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @17, i64 5 }, ptr undef, ptr undef, ptr undef }, ptr %1207, 1 - %1209 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1208, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Align", 2 - %1210 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1209, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Align", 3 - %1211 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.ArrayType", align 8 - %1212 = load ptr, ptr @"_llgo_func$E73lcQT8QN1_ra27XNBjrI9wUEDUjSPMu2bmnQKIbfk", align 8 - %1213 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @18, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1212, 1 - %1214 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1213, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ArrayType", 2 - %1215 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1214, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ArrayType", 3 - %1216 = load ptr, ptr @"_llgo_func$Qwe8YykhcqDIDEcT1jS_t1iUv4Im6IdGf17ASgXRQdc", align 8 - %1217 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @22, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1216, 1 - %1218 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1217, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ChanDir", 2 - %1219 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1218, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ChanDir", 3 - %1220 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %1221 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %1222 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @23, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %1221, 1 - %1223 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1222, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Common", 2 - %1224 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1223, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Common", 3 - %1225 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %1226 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %1227 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @19, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1226, 1 - %1228 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1227, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Elem", 2 - %1229 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1228, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Elem", 3 - %1230 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %1231 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 - %1232 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %1231, 1 - %1233 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1232, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ExportedMethods", 2 - %1234 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1233, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).ExportedMethods", 3 - %1235 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %1236 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1235, 1 - %1237 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1236, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).FieldAlign", 2 - %1238 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1237, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).FieldAlign", 3 - %1239 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %1240 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 - %1241 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1240, 1 - %1242 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1241, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).FuncType", 2 - %1243 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1242, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).FuncType", 3 - %1244 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1245 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1244, 1 - %1246 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1245, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).HasName", 2 - %1247 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1246, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).HasName", 3 - %1248 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1249 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1248, 1 - %1250 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1249, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IfaceIndir", 2 - %1251 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1250, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IfaceIndir", 3 - %1252 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - %1253 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 - %1254 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1253, 1 - %1255 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1254, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).InterfaceType", 2 - %1256 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1255, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).InterfaceType", 3 - %1257 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1258 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1257, 1 - %1259 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1258, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IsClosure", 2 - %1260 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1259, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IsClosure", 3 - %1261 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1262 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1261, 1 - %1263 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1262, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IsDirectIface", 2 - %1264 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1263, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).IsDirectIface", 3 - %1265 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %1266 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %1267 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %1266, 1 - %1268 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1267, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Key", 2 - %1269 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1268, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Key", 3 - %1270 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 - %1271 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1270, 1 - %1272 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1271, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Kind", 2 - %1273 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1272, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Kind", 3 - %1274 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %1275 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @21, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %1274, 1 - %1276 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1275, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Len", 2 - %1277 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1276, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Len", 3 - %1278 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 - %1279 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 - %1280 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1279, 1 - %1281 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1280, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).MapType", 2 - %1282 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1281, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).MapType", 3 - %1283 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %1284 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1283, 1 - %1285 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1284, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).NumMethod", 2 - %1286 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1285, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).NumMethod", 3 - %1287 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1288 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1287, 1 - %1289 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1288, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Pointers", 2 - %1290 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1289, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Pointers", 3 - %1291 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 - %1292 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1291, 1 - %1293 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1292, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Size", 2 - %1294 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1293, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Size", 3 - %1295 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %1296 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %1295, 1 - %1297 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1296, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).String", 2 - %1298 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1297, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).String", 3 - %1299 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, i64 25, i64 120, i64 0, i64 23) - %1300 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - %1301 = icmp eq ptr %1300, null - br i1 %1301, label %_llgo_131, label %_llgo_132 + %1411 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) + %1412 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1411, 0 + %1413 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1412, i64 0, 1 + %1414 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1413, i64 0, 2 + %1415 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) + %1416 = getelementptr ptr, ptr %1415, i64 0 + store ptr %1408, ptr %1416, align 8 + %1417 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1415, 0 + %1418 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1417, i64 1, 1 + %1419 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1418, i64 1, 2 + %1420 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1414, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1419, i1 false) + call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1420) + store ptr %1420, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 + br label %_llgo_130 -_llgo_130: ; preds = %_llgo_144, %_llgo_128 - %1302 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - %1303 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - %1304 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 - %1305 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1304, 1 - %1306 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1305, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).StructType", 2 - %1307 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1306, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).StructType", 3 - %1308 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 - %1309 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1308, 1 - %1310 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1309, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Uncommon", 2 - %1311 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1310, ptr @"github.com/goplus/llgo/runtime/abi.(*MapType).Uncommon", 3 - %1312 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 1040) - %1313 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %951, ptr %1313, align 8 - %1314 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %956, ptr %1314, align 8 - %1315 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %960, ptr %1315, align 8 - %1316 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 3 - store %"github.com/goplus/llgo/runtime/abi.Method" %965, ptr %1316, align 8 - %1317 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 4 - store %"github.com/goplus/llgo/runtime/abi.Method" %970, ptr %1317, align 8 - %1318 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 5 - store %"github.com/goplus/llgo/runtime/abi.Method" %974, ptr %1318, align 8 - %1319 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 6 - store %"github.com/goplus/llgo/runtime/abi.Method" %979, ptr %1319, align 8 - %1320 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 7 - store %"github.com/goplus/llgo/runtime/abi.Method" %983, ptr %1320, align 8 - %1321 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 8 - store %"github.com/goplus/llgo/runtime/abi.Method" %987, ptr %1321, align 8 - %1322 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 9 - store %"github.com/goplus/llgo/runtime/abi.Method" %991, ptr %1322, align 8 - %1323 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 10 - store %"github.com/goplus/llgo/runtime/abi.Method" %995, ptr %1323, align 8 - %1324 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 11 - store %"github.com/goplus/llgo/runtime/abi.Method" %999, ptr %1324, align 8 - %1325 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 12 - store %"github.com/goplus/llgo/runtime/abi.Method" %1004, ptr %1325, align 8 - %1326 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 13 - store %"github.com/goplus/llgo/runtime/abi.Method" %1008, ptr %1326, align 8 - %1327 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 14 - store %"github.com/goplus/llgo/runtime/abi.Method" %1012, ptr %1327, align 8 - %1328 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 15 - store %"github.com/goplus/llgo/runtime/abi.Method" %1016, ptr %1328, align 8 - %1329 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 16 - store %"github.com/goplus/llgo/runtime/abi.Method" %1020, ptr %1329, align 8 - %1330 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 17 - store %"github.com/goplus/llgo/runtime/abi.Method" %1100, ptr %1330, align 8 - %1331 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 18 - store %"github.com/goplus/llgo/runtime/abi.Method" %1104, ptr %1331, align 8 - %1332 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 19 - store %"github.com/goplus/llgo/runtime/abi.Method" %1108, ptr %1332, align 8 - %1333 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 20 - store %"github.com/goplus/llgo/runtime/abi.Method" %1112, ptr %1333, align 8 - %1334 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 21 - store %"github.com/goplus/llgo/runtime/abi.Method" %1116, ptr %1334, align 8 - %1335 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 22 - store %"github.com/goplus/llgo/runtime/abi.Method" %1133, ptr %1335, align 8 - %1336 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 23 - store %"github.com/goplus/llgo/runtime/abi.Method" %1137, ptr %1336, align 8 - %1337 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 24 - store %"github.com/goplus/llgo/runtime/abi.Method" %1307, ptr %1337, align 8 - %1338 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1312, i64 25 - store %"github.com/goplus/llgo/runtime/abi.Method" %1311, ptr %1338, align 8 - %1339 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1312, 0 - %1340 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1339, i64 26, 1 - %1341 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1340, i64 26, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %834, ptr %947, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1341) - br label %_llgo_110 +_llgo_130: ; preds = %_llgo_129, %_llgo_128 + %1421 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 + %1422 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1421, 1 + %1423 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1422, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Uncommon", 2 + %1424 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1423, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Uncommon", 3 + %1425 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 920) + %1426 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %1214, ptr %1426, align 8 + %1427 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %1219, ptr %1427, align 8 + %1428 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %1223, ptr %1428, align 8 + %1429 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 3 + store %"github.com/goplus/llgo/runtime/abi.Method" %1228, ptr %1429, align 8 + %1430 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 4 + store %"github.com/goplus/llgo/runtime/abi.Method" %1233, ptr %1430, align 8 + %1431 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 5 + store %"github.com/goplus/llgo/runtime/abi.Method" %1238, ptr %1431, align 8 + %1432 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 6 + store %"github.com/goplus/llgo/runtime/abi.Method" %1242, ptr %1432, align 8 + %1433 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 7 + store %"github.com/goplus/llgo/runtime/abi.Method" %1247, ptr %1433, align 8 + %1434 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 8 + store %"github.com/goplus/llgo/runtime/abi.Method" %1251, ptr %1434, align 8 + %1435 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 9 + store %"github.com/goplus/llgo/runtime/abi.Method" %1255, ptr %1435, align 8 + %1436 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 10 + store %"github.com/goplus/llgo/runtime/abi.Method" %1260, ptr %1436, align 8 + %1437 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 11 + store %"github.com/goplus/llgo/runtime/abi.Method" %1264, ptr %1437, align 8 + %1438 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 12 + store %"github.com/goplus/llgo/runtime/abi.Method" %1268, ptr %1438, align 8 + %1439 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 13 + store %"github.com/goplus/llgo/runtime/abi.Method" %1273, ptr %1439, align 8 + %1440 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 14 + store %"github.com/goplus/llgo/runtime/abi.Method" %1277, ptr %1440, align 8 + %1441 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 15 + store %"github.com/goplus/llgo/runtime/abi.Method" %1281, ptr %1441, align 8 + %1442 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 16 + store %"github.com/goplus/llgo/runtime/abi.Method" %1286, ptr %1442, align 8 + %1443 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 17 + store %"github.com/goplus/llgo/runtime/abi.Method" %1290, ptr %1443, align 8 + %1444 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 18 + store %"github.com/goplus/llgo/runtime/abi.Method" %1294, ptr %1444, align 8 + %1445 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 19 + store %"github.com/goplus/llgo/runtime/abi.Method" %1298, ptr %1445, align 8 + %1446 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 20 + store %"github.com/goplus/llgo/runtime/abi.Method" %1302, ptr %1446, align 8 + %1447 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 21 + store %"github.com/goplus/llgo/runtime/abi.Method" %1364, ptr %1447, align 8 + %1448 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1425, i64 22 + store %"github.com/goplus/llgo/runtime/abi.Method" %1424, ptr %1448, align 8 + %1449 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1425, 0 + %1450 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1449, i64 23, 1 + %1451 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1450, i64 23, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %1146, ptr %1210, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1451) + br label %_llgo_118 -_llgo_131: ; preds = %_llgo_129 - %1342 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1299) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1342) - store ptr %1342, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 +_llgo_131: ; preds = %_llgo_60 + %1452 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1453 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @36, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1452, 1 + %1454 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1453, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).Exported", 2 + %1455 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1454, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).Exported", 3 + %1456 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %1457 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @37, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1456, 1 + %1458 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1457, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).Name", 2 + %1459 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1458, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).Name", 3 + %1460 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %1461 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @38, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1460, 1 + %1462 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1461, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).PkgPath", 2 + %1463 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1462, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).PkgPath", 3 + %1464 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 120) + %1465 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1464, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %1455, ptr %1465, align 8 + %1466 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1464, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %1459, ptr %1466, align 8 + %1467 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1464, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %1463, ptr %1467, align 8 + %1468 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1464, 0 + %1469 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1468, i64 3, 1 + %1470 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1469, i64 3, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %406, ptr %486, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1470) br label %_llgo_132 -_llgo_132: ; preds = %_llgo_131, %_llgo_129 - %1343 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - %1344 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - %1345 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 - %1346 = icmp eq ptr %1345, null - br i1 %1346, label %_llgo_133, label %_llgo_134 +_llgo_132: ; preds = %_llgo_131, %_llgo_60 + %1471 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %1472 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 + %1473 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 + %1474 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %1473, 1 + %1475 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1474, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ExportedMethods", 2 + %1476 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1475, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ExportedMethods", 3 + %1477 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %1478 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1477, 1 + %1479 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1478, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).FieldAlign", 2 + %1480 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1479, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).FieldAlign", 3 + %1481 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 + %1482 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 + %1483 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1482, 1 + %1484 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1483, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).FuncType", 2 + %1485 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1484, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).FuncType", 3 + %1486 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1487 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1486, 1 + %1488 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1487, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).HasName", 2 + %1489 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1488, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).HasName", 3 + %1490 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1491 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1490, 1 + %1492 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1491, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IfaceIndir", 2 + %1493 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1492, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IfaceIndir", 3 + %1494 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 + %1495 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 + %1496 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1495, 1 + %1497 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1496, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).InterfaceType", 2 + %1498 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1497, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).InterfaceType", 3 + %1499 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1500 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1499, 1 + %1501 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1500, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IsClosure", 2 + %1502 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1501, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IsClosure", 3 + %1503 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1504 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1503, 1 + %1505 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1504, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IsDirectIface", 2 + %1506 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1505, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IsDirectIface", 3 + %1507 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 + %1508 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 + %1509 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %1508, 1 + %1510 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1509, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Key", 2 + %1511 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1510, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Key", 3 + %1512 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 + %1513 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1512, 1 + %1514 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1513, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Kind", 2 + %1515 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1514, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Kind", 3 + %1516 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 + %1517 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 + %1518 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1517, 1 + %1519 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1518, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).MapType", 2 + %1520 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1519, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).MapType", 3 + %1521 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %1522 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1521, 1 + %1523 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1522, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).NumMethod", 2 + %1524 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1523, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).NumMethod", 3 + %1525 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 + %1526 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1525, 1 + %1527 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1526, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Pointers", 2 + %1528 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1527, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Pointers", 3 + %1529 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 + %1530 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1529, 1 + %1531 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1530, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Size", 2 + %1532 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1531, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Size", 3 + %1533 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %1534 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %1533, 1 + %1535 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1534, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).String", 2 + %1536 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1535, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).String", 3 + %1537 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 + %1538 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 + %1539 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1538, 1 + %1540 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1539, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).StructType", 2 + %1541 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1540, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).StructType", 3 + %1542 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 + %1543 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1542, 1 + %1544 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1543, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Uncommon", 2 + %1545 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1544, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Uncommon", 3 + %1546 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 840) + %1547 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 0 + store %"github.com/goplus/llgo/runtime/abi.Method" %218, ptr %1547, align 8 + %1548 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 1 + store %"github.com/goplus/llgo/runtime/abi.Method" %365, ptr %1548, align 8 + %1549 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 2 + store %"github.com/goplus/llgo/runtime/abi.Method" %387, ptr %1549, align 8 + %1550 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 3 + store %"github.com/goplus/llgo/runtime/abi.Method" %405, ptr %1550, align 8 + %1551 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 4 + store %"github.com/goplus/llgo/runtime/abi.Method" %1476, ptr %1551, align 8 + %1552 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 5 + store %"github.com/goplus/llgo/runtime/abi.Method" %1480, ptr %1552, align 8 + %1553 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 6 + store %"github.com/goplus/llgo/runtime/abi.Method" %1485, ptr %1553, align 8 + %1554 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 7 + store %"github.com/goplus/llgo/runtime/abi.Method" %1489, ptr %1554, align 8 + %1555 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 8 + store %"github.com/goplus/llgo/runtime/abi.Method" %1493, ptr %1555, align 8 + %1556 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 9 + store %"github.com/goplus/llgo/runtime/abi.Method" %1498, ptr %1556, align 8 + %1557 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 10 + store %"github.com/goplus/llgo/runtime/abi.Method" %1502, ptr %1557, align 8 + %1558 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 11 + store %"github.com/goplus/llgo/runtime/abi.Method" %1506, ptr %1558, align 8 + %1559 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 12 + store %"github.com/goplus/llgo/runtime/abi.Method" %1511, ptr %1559, align 8 + %1560 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 13 + store %"github.com/goplus/llgo/runtime/abi.Method" %1515, ptr %1560, align 8 + %1561 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 14 + store %"github.com/goplus/llgo/runtime/abi.Method" %1520, ptr %1561, align 8 + %1562 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 15 + store %"github.com/goplus/llgo/runtime/abi.Method" %1524, ptr %1562, align 8 + %1563 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 16 + store %"github.com/goplus/llgo/runtime/abi.Method" %1528, ptr %1563, align 8 + %1564 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 17 + store %"github.com/goplus/llgo/runtime/abi.Method" %1532, ptr %1564, align 8 + %1565 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 18 + store %"github.com/goplus/llgo/runtime/abi.Method" %1536, ptr %1565, align 8 + %1566 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 19 + store %"github.com/goplus/llgo/runtime/abi.Method" %1541, ptr %1566, align 8 + %1567 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1546, i64 20 + store %"github.com/goplus/llgo/runtime/abi.Method" %1545, ptr %1567, align 8 + %1568 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1546, 0 + %1569 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1568, i64 21, 1 + %1570 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1569, i64 21, 2 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %190, ptr %214, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1570) + br label %_llgo_40 -_llgo_133: ; preds = %_llgo_132 - %1347 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %1348 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1347, 0 - %1349 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1348, i64 0, 1 - %1350 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1349, i64 0, 2 - %1351 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %1352 = getelementptr ptr, ptr %1351, i64 0 - store ptr %1344, ptr %1352, align 8 - %1353 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1351, 0 - %1354 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1353, i64 1, 1 - %1355 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1354, i64 1, 2 - %1356 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1350, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1355, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1356) - store ptr %1356, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 +_llgo_133: ; preds = %_llgo_32 + %1571 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %168) + store ptr %1571, ptr @"[]_llgo_main.T", align 8 br label %_llgo_134 -_llgo_134: ; preds = %_llgo_133, %_llgo_132 - %1357 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 - %1358 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1357, 1 - %1359 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1358, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).StructType", 2 - %1360 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1359, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).StructType", 3 - %1361 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @70, i64 12 }, i64 25, i64 24, i64 0, i64 2) - %1362 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 - %1363 = icmp eq ptr %1362, null - br i1 %1363, label %_llgo_135, label %_llgo_136 +_llgo_134: ; preds = %_llgo_133, %_llgo_32 + %1572 = load ptr, ptr @"[]_llgo_main.T", align 8 + %1573 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 1 }, i64 25, i64 48, i64 0, i64 0) + %1574 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) + %1575 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 1 }, i64 25, i64 48, i64 0, i64 0) + %1576 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1573) + %1577 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @78, i64 1 }, ptr %1576, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1578 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1574) + %1579 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @79, i64 1 }, ptr %1578, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1580 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 44) + %1581 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @80, i64 1 }, ptr %1580, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1582 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %1575) + %1583 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @81, i64 1 }, ptr %1582, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) + %1584 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) + %1585 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1584, i64 0 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1577, ptr %1585, align 8 + %1586 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1584, i64 1 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1579, ptr %1586, align 8 + %1587 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1584, i64 2 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1581, ptr %1587, align 8 + %1588 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1584, i64 3 + store %"github.com/goplus/llgo/runtime/abi.StructField" %1583, ptr %1588, align 8 + %1589 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1584, 0 + %1590 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1589, i64 4, 1 + %1591 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1590, i64 4, 2 + %1592 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 48, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1591) + store ptr %1592, ptr @"main.struct$0I14CsQEZ9iadCku0_1cAZfCJoBbFdmFH4XChi4XRoo", align 8 + %1593 = load ptr, ptr @"main.struct$0I14CsQEZ9iadCku0_1cAZfCJoBbFdmFH4XChi4XRoo", align 8 + br i1 %2, label %_llgo_135, label %_llgo_136 _llgo_135: ; preds = %_llgo_134 - store ptr %1361, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 + call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %0, ptr %1593, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer) br label %_llgo_136 _llgo_136: ; preds = %_llgo_135, %_llgo_134 - %1364 = load ptr, ptr @"_llgo_struct$OKIlItfBJsawrEMnVSc2VQ7pxNxCHIgSoitcM9n4FVI", align 8 - %1365 = icmp eq ptr %1364, null - br i1 %1365, label %_llgo_137, label %_llgo_138 - -_llgo_137: ; preds = %_llgo_136 - %1366 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %1367 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @39, i64 8 }, ptr %1366, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1368 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 41) - %1369 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @71, i64 6 }, ptr %1368, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1370 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 41) - %1371 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @72, i64 6 }, ptr %1370, i64 18, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1372 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 42) - %1373 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @73, i64 4 }, ptr %1372, i64 20, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1374 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) - %1375 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1374, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1367, ptr %1375, align 8 - %1376 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1374, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1369, ptr %1376, align 8 - %1377 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1374, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1371, ptr %1377, align 8 - %1378 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1374, i64 3 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1373, ptr %1378, align 8 - %1379 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1374, 0 - %1380 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1379, i64 4, 1 - %1381 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1380, i64 4, 2 - %1382 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1381) - store ptr %1382, ptr @"_llgo_struct$OKIlItfBJsawrEMnVSc2VQ7pxNxCHIgSoitcM9n4FVI", align 8 - br label %_llgo_138 - -_llgo_138: ; preds = %_llgo_137, %_llgo_136 - %1383 = load ptr, ptr @"_llgo_struct$OKIlItfBJsawrEMnVSc2VQ7pxNxCHIgSoitcM9n4FVI", align 8 - br i1 %1363, label %_llgo_139, label %_llgo_140 - -_llgo_139: ; preds = %_llgo_138 - %1384 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %1385 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 - %1386 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %1385, 1 - %1387 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1386, ptr @"github.com/goplus/llgo/runtime/abi.(*UncommonType).ExportedMethods", 2 - %1388 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1387, ptr @"github.com/goplus/llgo/runtime/abi.(*UncommonType).ExportedMethods", 3 - %1389 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %1390 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 - %1391 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @40, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1390, 1 - %1392 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1391, ptr @"github.com/goplus/llgo/runtime/abi.(*UncommonType).Methods", 2 - %1393 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1392, ptr @"github.com/goplus/llgo/runtime/abi.(*UncommonType).Methods", 3 - %1394 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 80) - %1395 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1394, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %1388, ptr %1395, align 8 - %1396 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1394, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %1393, ptr %1396, align 8 - %1397 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1394, 0 - %1398 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1397, i64 2, 1 - %1399 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1398, i64 2, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %1361, ptr %1383, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1399) - br label %_llgo_140 - -_llgo_140: ; preds = %_llgo_139, %_llgo_138 - %1400 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 - %1401 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @70, i64 12 }, i64 25, i64 24, i64 0, i64 2) - %1402 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 - %1403 = icmp eq ptr %1402, null - br i1 %1403, label %_llgo_141, label %_llgo_142 - -_llgo_141: ; preds = %_llgo_140 - %1404 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1401) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1404) - store ptr %1404, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 - br label %_llgo_142 - -_llgo_142: ; preds = %_llgo_141, %_llgo_140 - %1405 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 - %1406 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.UncommonType", align 8 - %1407 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 - %1408 = icmp eq ptr %1407, null - br i1 %1408, label %_llgo_143, label %_llgo_144 - -_llgo_143: ; preds = %_llgo_142 - %1409 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 0) - %1410 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1409, 0 - %1411 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1410, i64 0, 1 - %1412 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1411, i64 0, 2 - %1413 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 8) - %1414 = getelementptr ptr, ptr %1413, i64 0 - store ptr %1406, ptr %1414, align 8 - %1415 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1413, 0 - %1416 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1415, i64 1, 1 - %1417 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1416, i64 1, 2 - %1418 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Func"(%"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1412, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1417, i1 false) - call void @"github.com/goplus/llgo/runtime/internal/runtime.SetDirectIface"(ptr %1418) - store ptr %1418, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 - br label %_llgo_144 - -_llgo_144: ; preds = %_llgo_143, %_llgo_142 - %1419 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 - %1420 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1419, 1 - %1421 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1420, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Uncommon", 2 - %1422 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1421, ptr @"github.com/goplus/llgo/runtime/abi.(*StructType).Uncommon", 3 - %1423 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 920) - %1424 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %1210, ptr %1424, align 8 - %1425 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %1215, ptr %1425, align 8 - %1426 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %1219, ptr %1426, align 8 - %1427 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 3 - store %"github.com/goplus/llgo/runtime/abi.Method" %1224, ptr %1427, align 8 - %1428 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 4 - store %"github.com/goplus/llgo/runtime/abi.Method" %1229, ptr %1428, align 8 - %1429 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 5 - store %"github.com/goplus/llgo/runtime/abi.Method" %1234, ptr %1429, align 8 - %1430 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 6 - store %"github.com/goplus/llgo/runtime/abi.Method" %1238, ptr %1430, align 8 - %1431 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 7 - store %"github.com/goplus/llgo/runtime/abi.Method" %1243, ptr %1431, align 8 - %1432 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 8 - store %"github.com/goplus/llgo/runtime/abi.Method" %1247, ptr %1432, align 8 - %1433 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 9 - store %"github.com/goplus/llgo/runtime/abi.Method" %1251, ptr %1433, align 8 - %1434 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 10 - store %"github.com/goplus/llgo/runtime/abi.Method" %1256, ptr %1434, align 8 - %1435 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 11 - store %"github.com/goplus/llgo/runtime/abi.Method" %1260, ptr %1435, align 8 - %1436 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 12 - store %"github.com/goplus/llgo/runtime/abi.Method" %1264, ptr %1436, align 8 - %1437 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 13 - store %"github.com/goplus/llgo/runtime/abi.Method" %1269, ptr %1437, align 8 - %1438 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 14 - store %"github.com/goplus/llgo/runtime/abi.Method" %1273, ptr %1438, align 8 - %1439 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 15 - store %"github.com/goplus/llgo/runtime/abi.Method" %1277, ptr %1439, align 8 - %1440 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 16 - store %"github.com/goplus/llgo/runtime/abi.Method" %1282, ptr %1440, align 8 - %1441 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 17 - store %"github.com/goplus/llgo/runtime/abi.Method" %1286, ptr %1441, align 8 - %1442 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 18 - store %"github.com/goplus/llgo/runtime/abi.Method" %1290, ptr %1442, align 8 - %1443 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 19 - store %"github.com/goplus/llgo/runtime/abi.Method" %1294, ptr %1443, align 8 - %1444 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 20 - store %"github.com/goplus/llgo/runtime/abi.Method" %1298, ptr %1444, align 8 - %1445 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 21 - store %"github.com/goplus/llgo/runtime/abi.Method" %1360, ptr %1445, align 8 - %1446 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1423, i64 22 - store %"github.com/goplus/llgo/runtime/abi.Method" %1422, ptr %1446, align 8 - %1447 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1423, 0 - %1448 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1447, i64 23, 1 - %1449 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1448, i64 23, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %1138, ptr %1206, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1449) - br label %_llgo_130 - -_llgo_145: ; preds = %_llgo_64 - %1450 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 24) - %1451 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @34, i64 5 }, ptr %1450, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1452 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %472) - %1453 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @75, i64 5 }, ptr %1452, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1454 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 58) - %1455 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @76, i64 4 }, ptr %1454, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1456 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 58) - %1457 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @77, i64 4 }, ptr %1456, i64 32, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1458 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) - %1459 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1458, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1451, ptr %1459, align 8 - %1460 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1458, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1453, ptr %1460, align 8 - %1461 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1458, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1455, ptr %1461, align 8 - %1462 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1458, i64 3 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1457, ptr %1462, align 8 - %1463 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1458, 0 - %1464 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1463, i64 4, 1 - %1465 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1464, i64 4, 2 - %1466 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 40, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1465) - store ptr %1466, ptr @"_llgo_struct$jXUHcnL1PMmNRB-pn2cBRAQ7OYcwCM_YkvLqlL0ZYaE", align 8 - br label %_llgo_146 - -_llgo_146: ; preds = %_llgo_145, %_llgo_64 - %1467 = load ptr, ptr @"_llgo_struct$jXUHcnL1PMmNRB-pn2cBRAQ7OYcwCM_YkvLqlL0ZYaE", align 8 - br i1 %410, label %_llgo_147, label %_llgo_148 - -_llgo_147: ; preds = %_llgo_146 - %1468 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1469 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @36, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1468, 1 - %1470 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1469, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).Exported", 2 - %1471 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1470, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).Exported", 3 - %1472 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %1473 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @37, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1472, 1 - %1474 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1473, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).Name", 2 - %1475 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1474, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).Name", 3 - %1476 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %1477 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @38, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1476, 1 - %1478 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1477, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).PkgPath", 2 - %1479 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1478, ptr @"github.com/goplus/llgo/runtime/abi.(*Method).PkgPath", 3 - %1480 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 120) - %1481 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1480, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %1471, ptr %1481, align 8 - %1482 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1480, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %1475, ptr %1482, align 8 - %1483 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1480, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %1479, ptr %1483, align 8 - %1484 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1480, 0 - %1485 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1484, i64 3, 1 - %1486 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1485, i64 3, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %408, ptr %1467, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1486) - br label %_llgo_148 - -_llgo_148: ; preds = %_llgo_147, %_llgo_146 - %1487 = load ptr, ptr @"_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %1488 = load ptr, ptr @"[]_llgo_github.com/goplus/llgo/runtime/abi.Method", align 8 - %1489 = load ptr, ptr @"_llgo_func$fPOUeAcTITSSbJEvFFjAWZP6Eli7dk4j7E9mFFHRoNM", align 8 - %1490 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @24, i64 15 }, ptr undef, ptr undef, ptr undef }, ptr %1489, 1 - %1491 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1490, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ExportedMethods", 2 - %1492 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1491, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).ExportedMethods", 3 - %1493 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %1494 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @29, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1493, 1 - %1495 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1494, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).FieldAlign", 2 - %1496 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1495, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).FieldAlign", 3 - %1497 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.FuncType", align 8 - %1498 = load ptr, ptr @"_llgo_func$Jm50llMLYG9ysTYiSohNC-Ho1mhjzn-vnTRBILhJI88", align 8 - %1499 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @26, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1498, 1 - %1500 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1499, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).FuncType", 2 - %1501 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1500, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).FuncType", 3 - %1502 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1503 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @30, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1502, 1 - %1504 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1503, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).HasName", 2 - %1505 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1504, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).HasName", 3 - %1506 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1507 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @31, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1506, 1 - %1508 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1507, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IfaceIndir", 2 - %1509 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1508, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IfaceIndir", 3 - %1510 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.InterfaceType", align 8 - %1511 = load ptr, ptr @"_llgo_func$gPJieW0gawapuP7u0nJWjqAizA6ianfpIMmF5SojVDM", align 8 - %1512 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @32, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1511, 1 - %1513 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1512, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).InterfaceType", 2 - %1514 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1513, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).InterfaceType", 3 - %1515 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1516 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @41, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1515, 1 - %1517 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1516, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IsClosure", 2 - %1518 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1517, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IsClosure", 3 - %1519 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1520 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @42, i64 13 }, ptr undef, ptr undef, ptr undef }, ptr %1519, 1 - %1521 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1520, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IsDirectIface", 2 - %1522 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1521, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).IsDirectIface", 3 - %1523 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.Type", align 8 - %1524 = load ptr, ptr @"_llgo_func$w6XuV-1SmW103DbauPseXBpW50HpxXAEsUsGFibl0Uw", align 8 - %1525 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @43, i64 3 }, ptr undef, ptr undef, ptr undef }, ptr %1524, 1 - %1526 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1525, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Key", 2 - %1527 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1526, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Key", 3 - %1528 = load ptr, ptr @"_llgo_func$Hsg8cfKiWmyMHfTCLbUouCMFmF6kp9x3qasAGPBLLfc", align 8 - %1529 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @44, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1528, 1 - %1530 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1529, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Kind", 2 - %1531 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1530, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Kind", 3 - %1532 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.MapType", align 8 - %1533 = load ptr, ptr @"_llgo_func$v23QoXYwI62Le4EtGc42fZr4iF7nBhA8A8t9lvpy0QY", align 8 - %1534 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @46, i64 7 }, ptr undef, ptr undef, ptr undef }, ptr %1533, 1 - %1535 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1534, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).MapType", 2 - %1536 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1535, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).MapType", 3 - %1537 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %1538 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @57, i64 9 }, ptr undef, ptr undef, ptr undef }, ptr %1537, 1 - %1539 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1538, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).NumMethod", 2 - %1540 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1539, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).NumMethod", 3 - %1541 = load ptr, ptr @"_llgo_func$YHeRw3AOvQtzv982-ZO3Yn8vh3Fx89RM3VvI8E4iKVk", align 8 - %1542 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @58, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1541, 1 - %1543 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1542, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Pointers", 2 - %1544 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1543, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Pointers", 3 - %1545 = load ptr, ptr @"_llgo_func$1kITCsyu7hFLMxHLR7kDlvu4SOra_HtrtdFUQH9P13s", align 8 - %1546 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @60, i64 4 }, ptr undef, ptr undef, ptr undef }, ptr %1545, 1 - %1547 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1546, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Size", 2 - %1548 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1547, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Size", 3 - %1549 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %1550 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @45, i64 6 }, ptr undef, ptr undef, ptr undef }, ptr %1549, 1 - %1551 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1550, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).String", 2 - %1552 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1551, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).String", 3 - %1553 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/runtime/abi.StructType", align 8 - %1554 = load ptr, ptr @"_llgo_func$JNZyRh9Ldf2v-LKH-spUrxoORHTTH5NO358kWdhabp0", align 8 - %1555 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @61, i64 10 }, ptr undef, ptr undef, ptr undef }, ptr %1554, 1 - %1556 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1555, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).StructType", 2 - %1557 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1556, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).StructType", 3 - %1558 = load ptr, ptr @"_llgo_func$iG49bujiXjI2lVflYdE0hPXlCAABL-XKRANSNJEKOio", align 8 - %1559 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" { %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @69, i64 8 }, ptr undef, ptr undef, ptr undef }, ptr %1558, 1 - %1560 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1559, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Uncommon", 2 - %1561 = insertvalue %"github.com/goplus/llgo/runtime/abi.Method" %1560, ptr @"github.com/goplus/llgo/runtime/abi.(*ArrayType).Uncommon", 3 - %1562 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 840) - %1563 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 0 - store %"github.com/goplus/llgo/runtime/abi.Method" %220, ptr %1563, align 8 - %1564 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 1 - store %"github.com/goplus/llgo/runtime/abi.Method" %367, ptr %1564, align 8 - %1565 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 2 - store %"github.com/goplus/llgo/runtime/abi.Method" %389, ptr %1565, align 8 - %1566 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 3 - store %"github.com/goplus/llgo/runtime/abi.Method" %407, ptr %1566, align 8 - %1567 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 4 - store %"github.com/goplus/llgo/runtime/abi.Method" %1492, ptr %1567, align 8 - %1568 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 5 - store %"github.com/goplus/llgo/runtime/abi.Method" %1496, ptr %1568, align 8 - %1569 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 6 - store %"github.com/goplus/llgo/runtime/abi.Method" %1501, ptr %1569, align 8 - %1570 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 7 - store %"github.com/goplus/llgo/runtime/abi.Method" %1505, ptr %1570, align 8 - %1571 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 8 - store %"github.com/goplus/llgo/runtime/abi.Method" %1509, ptr %1571, align 8 - %1572 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 9 - store %"github.com/goplus/llgo/runtime/abi.Method" %1514, ptr %1572, align 8 - %1573 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 10 - store %"github.com/goplus/llgo/runtime/abi.Method" %1518, ptr %1573, align 8 - %1574 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 11 - store %"github.com/goplus/llgo/runtime/abi.Method" %1522, ptr %1574, align 8 - %1575 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 12 - store %"github.com/goplus/llgo/runtime/abi.Method" %1527, ptr %1575, align 8 - %1576 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 13 - store %"github.com/goplus/llgo/runtime/abi.Method" %1531, ptr %1576, align 8 - %1577 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 14 - store %"github.com/goplus/llgo/runtime/abi.Method" %1536, ptr %1577, align 8 - %1578 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 15 - store %"github.com/goplus/llgo/runtime/abi.Method" %1540, ptr %1578, align 8 - %1579 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 16 - store %"github.com/goplus/llgo/runtime/abi.Method" %1544, ptr %1579, align 8 - %1580 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 17 - store %"github.com/goplus/llgo/runtime/abi.Method" %1548, ptr %1580, align 8 - %1581 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 18 - store %"github.com/goplus/llgo/runtime/abi.Method" %1552, ptr %1581, align 8 - %1582 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 19 - store %"github.com/goplus/llgo/runtime/abi.Method" %1557, ptr %1582, align 8 - %1583 = getelementptr %"github.com/goplus/llgo/runtime/abi.Method", ptr %1562, i64 20 - store %"github.com/goplus/llgo/runtime/abi.Method" %1561, ptr %1583, align 8 - %1584 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1562, 0 - %1585 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1584, i64 21, 1 - %1586 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1585, i64 21, 2 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %190, ptr %216, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1586) - br label %_llgo_42 - -_llgo_149: ; preds = %_llgo_32 - %1587 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %168) - store ptr %1587, ptr @"[]_llgo_main.T", align 8 - br label %_llgo_150 - -_llgo_150: ; preds = %_llgo_149, %_llgo_32 - %1588 = load ptr, ptr @"[]_llgo_main.T", align 8 - %1589 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 1 }, i64 25, i64 48, i64 0, i64 0) - %1590 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @2, i64 34 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @3, i64 4 }, i64 25, i64 80, i64 0, i64 23) - %1591 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.NewNamed"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @1, i64 1 }, i64 25, i64 48, i64 0, i64 0) - %1592 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1589) - %1593 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @78, i64 1 }, ptr %1592, i64 0, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1594 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.PointerTo"(ptr %1590) - %1595 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @79, i64 1 }, ptr %1594, i64 8, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1596 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Basic"(i64 44) - %1597 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @80, i64 1 }, ptr %1596, i64 16, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1598 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.SliceOf"(ptr %1591) - %1599 = call %"github.com/goplus/llgo/runtime/abi.StructField" @"github.com/goplus/llgo/runtime/internal/runtime.StructField"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @81, i64 1 }, ptr %1598, i64 24, %"github.com/goplus/llgo/runtime/internal/runtime.String" zeroinitializer, i1 false) - %1600 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.AllocU"(i64 224) - %1601 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1600, i64 0 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1593, ptr %1601, align 8 - %1602 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1600, i64 1 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1595, ptr %1602, align 8 - %1603 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1600, i64 2 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1597, ptr %1603, align 8 - %1604 = getelementptr %"github.com/goplus/llgo/runtime/abi.StructField", ptr %1600, i64 3 - store %"github.com/goplus/llgo/runtime/abi.StructField" %1599, ptr %1604, align 8 - %1605 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" undef, ptr %1600, 0 - %1606 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1605, i64 4, 1 - %1607 = insertvalue %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1606, i64 4, 2 - %1608 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.Struct"(%"github.com/goplus/llgo/runtime/internal/runtime.String" { ptr @0, i64 4 }, i64 48, %"github.com/goplus/llgo/runtime/internal/runtime.Slice" %1607) - store ptr %1608, ptr @"main.struct$0I14CsQEZ9iadCku0_1cAZfCJoBbFdmFH4XChi4XRoo", align 8 - %1609 = load ptr, ptr @"main.struct$0I14CsQEZ9iadCku0_1cAZfCJoBbFdmFH4XChi4XRoo", align 8 - br i1 %2, label %_llgo_151, label %_llgo_152 - -_llgo_151: ; preds = %_llgo_150 - call void @"github.com/goplus/llgo/runtime/internal/runtime.InitNamed"(ptr %0, ptr %1609, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer) - br label %_llgo_152 - -_llgo_152: ; preds = %_llgo_151, %_llgo_150 ret void } diff --git a/runtime/internal/runtime/z_type.go b/runtime/internal/runtime/z_type.go index 6e48b31d..c98e50f5 100644 --- a/runtime/internal/runtime/z_type.go +++ b/runtime/internal/runtime/z_type.go @@ -235,7 +235,7 @@ func newPointer(elem *Type) *Type { Hash: 9067 + 2*elem.Hash, Align_: pointerAlign, FieldAlign_: pointerAlign, - Kind_: uint8(abi.Pointer), + Kind_: uint8(abi.Pointer) | abi.KindDirectIface, Equal: memequalptr, TFlag: abi.TFlagRegularMemory, }, @@ -255,7 +255,7 @@ func setPointer(ptr *abi.PtrType, elem *Type) { ptr.Hash = uint32(abi.Pointer) // TODO(xsw): hash ptr.Align_ = pointerAlign ptr.FieldAlign_ = pointerAlign - ptr.Kind_ = uint8(abi.Pointer) + ptr.Kind_ = uint8(abi.Pointer) | abi.KindDirectIface ptr.Equal = memequalptr ptr.Elem = elem ptr.Str_ = elem.Str_ From 9ddd4d416194d13437c1ed7978d210f2ec109ea9 Mon Sep 17 00:00:00 2001 From: visualfc Date: Mon, 3 Feb 2025 19:16:30 +0800 Subject: [PATCH 12/12] compiler/cl/_testgo: reflectconv --- compiler/cl/_testgo/reflect/out.ll | 16 +- compiler/cl/_testgo/reflectconv/in.go | 748 ++++++++++++++++++++ compiler/cl/_testgo/reflectconv/out.ll | 1 + runtime/internal/clite/bitcast/_cast/cast.c | 2 +- 4 files changed, 758 insertions(+), 9 deletions(-) create mode 100644 compiler/cl/_testgo/reflectconv/in.go create mode 100644 compiler/cl/_testgo/reflectconv/out.ll diff --git a/compiler/cl/_testgo/reflect/out.ll b/compiler/cl/_testgo/reflect/out.ll index 9a6bbf60..c25ba795 100644 --- a/compiler/cl/_testgo/reflect/out.ll +++ b/compiler/cl/_testgo/reflect/out.ll @@ -90,7 +90,7 @@ _llgo_0: %13 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %11) %14 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %13) %15 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %13, 0 - %16 = getelementptr ptr, ptr %15, i64 31 + %16 = getelementptr ptr, ptr %15, i64 37 %17 = load ptr, ptr %16, align 8 %18 = insertvalue { ptr, ptr } undef, ptr %17, 0 %19 = insertvalue { ptr, ptr } %18, ptr %14, 1 @@ -185,7 +185,7 @@ _llgo_0: %6 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %4) %7 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %6) %8 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %6, 0 - %9 = getelementptr ptr, ptr %8, i64 31 + %9 = getelementptr ptr, ptr %8, i64 37 %10 = load ptr, ptr %9, align 8 %11 = insertvalue { ptr, ptr } undef, ptr %10, 0 %12 = insertvalue { ptr, ptr } %11, ptr %7, 1 @@ -286,7 +286,7 @@ _llgo_0: %16 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %14) %17 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %16) %18 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %16, 0 - %19 = getelementptr ptr, ptr %18, i64 31 + %19 = getelementptr ptr, ptr %18, i64 37 %20 = load ptr, ptr %19, align 8 %21 = insertvalue { ptr, ptr } undef, ptr %20, 0 %22 = insertvalue { ptr, ptr } %21, ptr %17, 1 @@ -393,7 +393,7 @@ _llgo_0: %8 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %6) %9 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %8) %10 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %8, 0 - %11 = getelementptr ptr, ptr %10, i64 31 + %11 = getelementptr ptr, ptr %10, i64 37 %12 = load ptr, ptr %11, align 8 %13 = insertvalue { ptr, ptr } undef, ptr %12, 0 %14 = insertvalue { ptr, ptr } %13, ptr %9, 1 @@ -827,7 +827,7 @@ _llgo_9: ; preds = %_llgo_8, %_llgo_7 %60 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %11) %61 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %60) %62 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %60, 0 - %63 = getelementptr ptr, ptr %62, i64 18 + %63 = getelementptr ptr, ptr %62, i64 20 %64 = load ptr, ptr %63, align 8 %65 = insertvalue { ptr, ptr } undef, ptr %64, 0 %66 = insertvalue { ptr, ptr } %65, ptr %61, 1 @@ -839,7 +839,7 @@ _llgo_9: ; preds = %_llgo_8, %_llgo_7 %72 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %11) %73 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %72) %74 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %72, 0 - %75 = getelementptr ptr, ptr %74, i64 9 + %75 = getelementptr ptr, ptr %74, i64 11 %76 = load ptr, ptr %75, align 8 %77 = insertvalue { ptr, ptr } undef, ptr %76, 0 %78 = insertvalue { ptr, ptr } %77, ptr %73, 1 @@ -1009,7 +1009,7 @@ _llgo_9: ; preds = %_llgo_8, %_llgo_7 %77 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %10) %78 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %77) %79 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %77, 0 - %80 = getelementptr ptr, ptr %79, i64 18 + %80 = getelementptr ptr, ptr %79, i64 20 %81 = load ptr, ptr %80, align 8 %82 = insertvalue { ptr, ptr } undef, ptr %81, 0 %83 = insertvalue { ptr, ptr } %82, ptr %78, 1 @@ -1021,7 +1021,7 @@ _llgo_9: ; preds = %_llgo_8, %_llgo_7 %89 = call %"github.com/goplus/llgo/runtime/internal/runtime.iface" @reflect.Value.Type(%reflect.Value %10) %90 = call ptr @"github.com/goplus/llgo/runtime/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/runtime/internal/runtime.iface" %89) %91 = extractvalue %"github.com/goplus/llgo/runtime/internal/runtime.iface" %89, 0 - %92 = getelementptr ptr, ptr %91, i64 9 + %92 = getelementptr ptr, ptr %91, i64 11 %93 = load ptr, ptr %92, align 8 %94 = insertvalue { ptr, ptr } undef, ptr %93, 0 %95 = insertvalue { ptr, ptr } %94, ptr %90, 1 diff --git a/compiler/cl/_testgo/reflectconv/in.go b/compiler/cl/_testgo/reflectconv/in.go new file mode 100644 index 00000000..5adeedae --- /dev/null +++ b/compiler/cl/_testgo/reflectconv/in.go @@ -0,0 +1,748 @@ +package main + +import ( + "bytes" + "fmt" + "io" + "math" + "reflect" + "strings" + "unsafe" +) + +type Value struct { + typ_ unsafe.Pointer + ptr unsafe.Pointer + flag uintptr +} + +const flagStickyRO uintptr = 1 << 5 + +// MakeRO returns a copy of v with the read-only flag set. +func MakeRO(v reflect.Value) reflect.Value { + (*Value)(unsafe.Pointer(&v)).flag |= flagStickyRO + return v +} + +// IsRO reports whether v's read-only flag is set. +func IsRO(v reflect.Value) bool { + return (*Value)(unsafe.Pointer(&v)).flag&flagStickyRO != 0 +} + +type testingT struct { +} + +func (t *testingT) Errorf(format string, a ...interface{}) { + panic(fmt.Sprintf(format, a...)) +} + +func (t *testingT) Fatalf(format string, a ...interface{}) { + panic(fmt.Sprintf(format, a...)) +} + +func main() { + TestConvert(&testingT{}) + TestConvertPanic(&testingT{}) + TestConvertSlice2Array(&testingT{}) + TestConvertNaNs(&testingT{}) +} + +var V = reflect.ValueOf + +func EmptyInterfaceV(x any) reflect.Value { + return V(&x).Elem() +} + +func ReaderV(x io.Reader) reflect.Value { + return V(&x).Elem() +} + +func ReadWriterV(x io.ReadWriter) reflect.Value { + return V(&x).Elem() +} + +type integer int +type T struct { + a int + b float64 + c string + d *int +} + +type Empty struct{} +type MyStruct struct { + x int `some:"tag"` +} +type MyStruct1 struct { + x struct { + int `some:"bar"` + } +} +type MyStruct2 struct { + x struct { + int `some:"foo"` + } +} +type MyString string +type MyBytes []byte +type MyBytesArrayPtr0 *[0]byte +type MyBytesArrayPtr *[4]byte +type MyBytesArray0 [0]byte +type MyBytesArray [4]byte +type MyRunes []int32 +type MyFunc func() +type MyByte byte + +type IntChan chan int +type IntChanRecv <-chan int +type IntChanSend chan<- int +type BytesChan chan []byte +type BytesChanRecv <-chan []byte +type BytesChanSend chan<- []byte + +var convertTests = []struct { + in reflect.Value + out reflect.Value +}{ + // numbers + /* + Edit .+1,/\*\//-1>cat >/tmp/x.go && go run /tmp/x.go + + package main + + import "fmt" + + var numbers = []string{ + "int8", "uint8", "int16", "uint16", + "int32", "uint32", "int64", "uint64", + "int", "uint", "uintptr", + "float32", "float64", + } + + func main() { + // all pairs but in an unusual order, + // to emit all the int8, uint8 cases + // before n grows too big. + n := 1 + for i, f := range numbers { + for _, g := range numbers[i:] { + fmt.Printf("\t{V(%s(%d)), V(%s(%d))},\n", f, n, g, n) + n++ + if f != g { + fmt.Printf("\t{V(%s(%d)), V(%s(%d))},\n", g, n, f, n) + n++ + } + } + } + } + */ + {V(int8(1)), V(int8(1))}, + {V(int8(2)), V(uint8(2))}, + {V(uint8(3)), V(int8(3))}, + {V(int8(4)), V(int16(4))}, + {V(int16(5)), V(int8(5))}, + {V(int8(6)), V(uint16(6))}, + {V(uint16(7)), V(int8(7))}, + {V(int8(8)), V(int32(8))}, + {V(int32(9)), V(int8(9))}, + {V(int8(10)), V(uint32(10))}, + {V(uint32(11)), V(int8(11))}, + {V(int8(12)), V(int64(12))}, + {V(int64(13)), V(int8(13))}, + {V(int8(14)), V(uint64(14))}, + {V(uint64(15)), V(int8(15))}, + {V(int8(16)), V(int(16))}, + {V(int(17)), V(int8(17))}, + {V(int8(18)), V(uint(18))}, + {V(uint(19)), V(int8(19))}, + {V(int8(20)), V(uintptr(20))}, + {V(uintptr(21)), V(int8(21))}, + {V(int8(22)), V(float32(22))}, + {V(float32(23)), V(int8(23))}, + {V(int8(24)), V(float64(24))}, + {V(float64(25)), V(int8(25))}, + {V(uint8(26)), V(uint8(26))}, + {V(uint8(27)), V(int16(27))}, + {V(int16(28)), V(uint8(28))}, + {V(uint8(29)), V(uint16(29))}, + {V(uint16(30)), V(uint8(30))}, + {V(uint8(31)), V(int32(31))}, + {V(int32(32)), V(uint8(32))}, + {V(uint8(33)), V(uint32(33))}, + {V(uint32(34)), V(uint8(34))}, + {V(uint8(35)), V(int64(35))}, + {V(int64(36)), V(uint8(36))}, + {V(uint8(37)), V(uint64(37))}, + {V(uint64(38)), V(uint8(38))}, + {V(uint8(39)), V(int(39))}, + {V(int(40)), V(uint8(40))}, + {V(uint8(41)), V(uint(41))}, + {V(uint(42)), V(uint8(42))}, + {V(uint8(43)), V(uintptr(43))}, + {V(uintptr(44)), V(uint8(44))}, + {V(uint8(45)), V(float32(45))}, + {V(float32(46)), V(uint8(46))}, + {V(uint8(47)), V(float64(47))}, + {V(float64(48)), V(uint8(48))}, + {V(int16(49)), V(int16(49))}, + {V(int16(50)), V(uint16(50))}, + {V(uint16(51)), V(int16(51))}, + {V(int16(52)), V(int32(52))}, + {V(int32(53)), V(int16(53))}, + {V(int16(54)), V(uint32(54))}, + {V(uint32(55)), V(int16(55))}, + {V(int16(56)), V(int64(56))}, + {V(int64(57)), V(int16(57))}, + {V(int16(58)), V(uint64(58))}, + {V(uint64(59)), V(int16(59))}, + {V(int16(60)), V(int(60))}, + {V(int(61)), V(int16(61))}, + {V(int16(62)), V(uint(62))}, + {V(uint(63)), V(int16(63))}, + {V(int16(64)), V(uintptr(64))}, + {V(uintptr(65)), V(int16(65))}, + {V(int16(66)), V(float32(66))}, + {V(float32(67)), V(int16(67))}, + {V(int16(68)), V(float64(68))}, + {V(float64(69)), V(int16(69))}, + {V(uint16(70)), V(uint16(70))}, + {V(uint16(71)), V(int32(71))}, + {V(int32(72)), V(uint16(72))}, + {V(uint16(73)), V(uint32(73))}, + {V(uint32(74)), V(uint16(74))}, + {V(uint16(75)), V(int64(75))}, + {V(int64(76)), V(uint16(76))}, + {V(uint16(77)), V(uint64(77))}, + {V(uint64(78)), V(uint16(78))}, + {V(uint16(79)), V(int(79))}, + {V(int(80)), V(uint16(80))}, + {V(uint16(81)), V(uint(81))}, + {V(uint(82)), V(uint16(82))}, + {V(uint16(83)), V(uintptr(83))}, + {V(uintptr(84)), V(uint16(84))}, + {V(uint16(85)), V(float32(85))}, + {V(float32(86)), V(uint16(86))}, + {V(uint16(87)), V(float64(87))}, + {V(float64(88)), V(uint16(88))}, + {V(int32(89)), V(int32(89))}, + {V(int32(90)), V(uint32(90))}, + {V(uint32(91)), V(int32(91))}, + {V(int32(92)), V(int64(92))}, + {V(int64(93)), V(int32(93))}, + {V(int32(94)), V(uint64(94))}, + {V(uint64(95)), V(int32(95))}, + {V(int32(96)), V(int(96))}, + {V(int(97)), V(int32(97))}, + {V(int32(98)), V(uint(98))}, + {V(uint(99)), V(int32(99))}, + {V(int32(100)), V(uintptr(100))}, + {V(uintptr(101)), V(int32(101))}, + {V(int32(102)), V(float32(102))}, + {V(float32(103)), V(int32(103))}, + {V(int32(104)), V(float64(104))}, + {V(float64(105)), V(int32(105))}, + {V(uint32(106)), V(uint32(106))}, + {V(uint32(107)), V(int64(107))}, + {V(int64(108)), V(uint32(108))}, + {V(uint32(109)), V(uint64(109))}, + {V(uint64(110)), V(uint32(110))}, + {V(uint32(111)), V(int(111))}, + {V(int(112)), V(uint32(112))}, + {V(uint32(113)), V(uint(113))}, + {V(uint(114)), V(uint32(114))}, + {V(uint32(115)), V(uintptr(115))}, + {V(uintptr(116)), V(uint32(116))}, + {V(uint32(117)), V(float32(117))}, + {V(float32(118)), V(uint32(118))}, + {V(uint32(119)), V(float64(119))}, + {V(float64(120)), V(uint32(120))}, + {V(int64(121)), V(int64(121))}, + {V(int64(122)), V(uint64(122))}, + {V(uint64(123)), V(int64(123))}, + {V(int64(124)), V(int(124))}, + {V(int(125)), V(int64(125))}, + {V(int64(126)), V(uint(126))}, + {V(uint(127)), V(int64(127))}, + {V(int64(128)), V(uintptr(128))}, + {V(uintptr(129)), V(int64(129))}, + {V(int64(130)), V(float32(130))}, + {V(float32(131)), V(int64(131))}, + {V(int64(132)), V(float64(132))}, + {V(float64(133)), V(int64(133))}, + {V(uint64(134)), V(uint64(134))}, + {V(uint64(135)), V(int(135))}, + {V(int(136)), V(uint64(136))}, + {V(uint64(137)), V(uint(137))}, + {V(uint(138)), V(uint64(138))}, + {V(uint64(139)), V(uintptr(139))}, + {V(uintptr(140)), V(uint64(140))}, + {V(uint64(141)), V(float32(141))}, + {V(float32(142)), V(uint64(142))}, + {V(uint64(143)), V(float64(143))}, + {V(float64(144)), V(uint64(144))}, + {V(int(145)), V(int(145))}, + {V(int(146)), V(uint(146))}, + {V(uint(147)), V(int(147))}, + {V(int(148)), V(uintptr(148))}, + {V(uintptr(149)), V(int(149))}, + {V(int(150)), V(float32(150))}, + {V(float32(151)), V(int(151))}, + {V(int(152)), V(float64(152))}, + {V(float64(153)), V(int(153))}, + {V(uint(154)), V(uint(154))}, + {V(uint(155)), V(uintptr(155))}, + {V(uintptr(156)), V(uint(156))}, + {V(uint(157)), V(float32(157))}, + {V(float32(158)), V(uint(158))}, + {V(uint(159)), V(float64(159))}, + {V(float64(160)), V(uint(160))}, + {V(uintptr(161)), V(uintptr(161))}, + {V(uintptr(162)), V(float32(162))}, + {V(float32(163)), V(uintptr(163))}, + {V(uintptr(164)), V(float64(164))}, + {V(float64(165)), V(uintptr(165))}, + {V(float32(166)), V(float32(166))}, + {V(float32(167)), V(float64(167))}, + {V(float64(168)), V(float32(168))}, + {V(float64(169)), V(float64(169))}, + + // truncation + {V(float64(1.5)), V(int(1))}, + + // complex + {V(complex64(1i)), V(complex64(1i))}, + {V(complex64(2i)), V(complex128(2i))}, + {V(complex128(3i)), V(complex64(3i))}, + {V(complex128(4i)), V(complex128(4i))}, + + // string + {V(string("hello")), V(string("hello"))}, + {V(string("bytes1")), V([]byte("bytes1"))}, + {V([]byte("bytes2")), V(string("bytes2"))}, + {V([]byte("bytes3")), V([]byte("bytes3"))}, + {V(string("runes♝")), V([]rune("runes♝"))}, + {V([]rune("runes♕")), V(string("runes♕"))}, + {V([]rune("runes🙈🙉🙊")), V([]rune("runes🙈🙉🙊"))}, + {V(int('a')), V(string("a"))}, + {V(int8('a')), V(string("a"))}, + {V(int16('a')), V(string("a"))}, + {V(int32('a')), V(string("a"))}, + {V(int64('a')), V(string("a"))}, + {V(uint('a')), V(string("a"))}, + {V(uint8('a')), V(string("a"))}, + {V(uint16('a')), V(string("a"))}, + {V(uint32('a')), V(string("a"))}, + {V(uint64('a')), V(string("a"))}, + {V(uintptr('a')), V(string("a"))}, + {V(int(-1)), V(string("\uFFFD"))}, + {V(int8(-2)), V(string("\uFFFD"))}, + {V(int16(-3)), V(string("\uFFFD"))}, + {V(int32(-4)), V(string("\uFFFD"))}, + {V(int64(-5)), V(string("\uFFFD"))}, + {V(int64(-1 << 32)), V(string("\uFFFD"))}, + {V(int64(1 << 32)), V(string("\uFFFD"))}, + {V(uint(0x110001)), V(string("\uFFFD"))}, + {V(uint32(0x110002)), V(string("\uFFFD"))}, + {V(uint64(0x110003)), V(string("\uFFFD"))}, + {V(uint64(1 << 32)), V(string("\uFFFD"))}, + {V(uintptr(0x110004)), V(string("\uFFFD"))}, + + // named string + {V(MyString("hello")), V(string("hello"))}, + {V(string("hello")), V(MyString("hello"))}, + {V(string("hello")), V(string("hello"))}, + {V(MyString("hello")), V(MyString("hello"))}, + {V(MyString("bytes1")), V([]byte("bytes1"))}, + {V([]byte("bytes2")), V(MyString("bytes2"))}, + {V([]byte("bytes3")), V([]byte("bytes3"))}, + {V(MyString("runes♝")), V([]rune("runes♝"))}, + {V([]rune("runes♕")), V(MyString("runes♕"))}, + {V([]rune("runes🙈🙉🙊")), V([]rune("runes🙈🙉🙊"))}, + {V([]rune("runes🙈🙉🙊")), V(MyRunes("runes🙈🙉🙊"))}, + {V(MyRunes("runes🙈🙉🙊")), V([]rune("runes🙈🙉🙊"))}, + {V(int('a')), V(MyString("a"))}, + {V(int8('a')), V(MyString("a"))}, + {V(int16('a')), V(MyString("a"))}, + {V(int32('a')), V(MyString("a"))}, + {V(int64('a')), V(MyString("a"))}, + {V(uint('a')), V(MyString("a"))}, + {V(uint8('a')), V(MyString("a"))}, + {V(uint16('a')), V(MyString("a"))}, + {V(uint32('a')), V(MyString("a"))}, + {V(uint64('a')), V(MyString("a"))}, + {V(uintptr('a')), V(MyString("a"))}, + {V(int(-1)), V(MyString("\uFFFD"))}, + {V(int8(-2)), V(MyString("\uFFFD"))}, + {V(int16(-3)), V(MyString("\uFFFD"))}, + {V(int32(-4)), V(MyString("\uFFFD"))}, + {V(int64(-5)), V(MyString("\uFFFD"))}, + {V(uint(0x110001)), V(MyString("\uFFFD"))}, + {V(uint32(0x110002)), V(MyString("\uFFFD"))}, + {V(uint64(0x110003)), V(MyString("\uFFFD"))}, + {V(uintptr(0x110004)), V(MyString("\uFFFD"))}, + + // named []byte + {V(string("bytes1")), V(MyBytes("bytes1"))}, + {V(MyBytes("bytes2")), V(string("bytes2"))}, + {V(MyBytes("bytes3")), V(MyBytes("bytes3"))}, + {V(MyString("bytes1")), V(MyBytes("bytes1"))}, + {V(MyBytes("bytes2")), V(MyString("bytes2"))}, + + // named []rune + {V(string("runes♝")), V(MyRunes("runes♝"))}, + {V(MyRunes("runes♕")), V(string("runes♕"))}, + {V(MyRunes("runes🙈🙉🙊")), V(MyRunes("runes🙈🙉🙊"))}, + {V(MyString("runes♝")), V(MyRunes("runes♝"))}, + {V(MyRunes("runes♕")), V(MyString("runes♕"))}, + + // slice to array + {V([]byte(nil)), V([0]byte{})}, + {V([]byte{}), V([0]byte{})}, + {V([]byte{1}), V([1]byte{1})}, + {V([]byte{1, 2}), V([2]byte{1, 2})}, + {V([]byte{1, 2, 3}), V([3]byte{1, 2, 3})}, + {V(MyBytes([]byte(nil))), V([0]byte{})}, + {V(MyBytes{}), V([0]byte{})}, + {V(MyBytes{1}), V([1]byte{1})}, + {V(MyBytes{1, 2}), V([2]byte{1, 2})}, + {V(MyBytes{1, 2, 3}), V([3]byte{1, 2, 3})}, + {V([]byte(nil)), V(MyBytesArray0{})}, + {V([]byte{}), V(MyBytesArray0([0]byte{}))}, + {V([]byte{1, 2, 3, 4}), V(MyBytesArray([4]byte{1, 2, 3, 4}))}, + {V(MyBytes{}), V(MyBytesArray0([0]byte{}))}, + {V(MyBytes{5, 6, 7, 8}), V(MyBytesArray([4]byte{5, 6, 7, 8}))}, + {V([]MyByte{}), V([0]MyByte{})}, + {V([]MyByte{1, 2}), V([2]MyByte{1, 2})}, + + // slice to array pointer + {V([]byte(nil)), V((*[0]byte)(nil))}, + {V([]byte{}), V(new([0]byte))}, + {V([]byte{7}), V(&[1]byte{7})}, + {V(MyBytes([]byte(nil))), V((*[0]byte)(nil))}, + {V(MyBytes([]byte{})), V(new([0]byte))}, + {V(MyBytes([]byte{9})), V(&[1]byte{9})}, + {V([]byte(nil)), V(MyBytesArrayPtr0(nil))}, + {V([]byte{}), V(MyBytesArrayPtr0(new([0]byte)))}, + {V([]byte{1, 2, 3, 4}), V(MyBytesArrayPtr(&[4]byte{1, 2, 3, 4}))}, + {V(MyBytes([]byte{})), V(MyBytesArrayPtr0(new([0]byte)))}, + {V(MyBytes([]byte{5, 6, 7, 8})), V(MyBytesArrayPtr(&[4]byte{5, 6, 7, 8}))}, + + {V([]byte(nil)), V((*MyBytesArray0)(nil))}, + {V([]byte{}), V((*MyBytesArray0)(new([0]byte)))}, + {V([]byte{1, 2, 3, 4}), V(&MyBytesArray{1, 2, 3, 4})}, + {V(MyBytes([]byte(nil))), V((*MyBytesArray0)(nil))}, + {V(MyBytes([]byte{})), V((*MyBytesArray0)(new([0]byte)))}, + {V(MyBytes([]byte{5, 6, 7, 8})), V(&MyBytesArray{5, 6, 7, 8})}, + {V(new([0]byte)), V(new(MyBytesArray0))}, + {V(new(MyBytesArray0)), V(new([0]byte))}, + {V(MyBytesArrayPtr0(nil)), V((*[0]byte)(nil))}, + {V((*[0]byte)(nil)), V(MyBytesArrayPtr0(nil))}, + + // named types and equal underlying types + {V(new(int)), V(new(integer))}, + {V(new(integer)), V(new(int))}, + {V(Empty{}), V(struct{}{})}, + {V(new(Empty)), V(new(struct{}))}, + {V(struct{}{}), V(Empty{})}, + {V(new(struct{})), V(new(Empty))}, + {V(Empty{}), V(Empty{})}, + {V(MyBytes{}), V([]byte{})}, + {V([]byte{}), V(MyBytes{})}, + {V((func())(nil)), V(MyFunc(nil))}, + {V((MyFunc)(nil)), V((func())(nil))}, + + // structs with different tags + {V(struct { + x int `some:"foo"` + }{}), V(struct { + x int `some:"bar"` + }{})}, + + {V(struct { + x int `some:"bar"` + }{}), V(struct { + x int `some:"foo"` + }{})}, + + {V(MyStruct{}), V(struct { + x int `some:"foo"` + }{})}, + + {V(struct { + x int `some:"foo"` + }{}), V(MyStruct{})}, + + {V(MyStruct{}), V(struct { + x int `some:"bar"` + }{})}, + + {V(struct { + x int `some:"bar"` + }{}), V(MyStruct{})}, + + {V(MyStruct1{}), V(MyStruct2{})}, + {V(MyStruct2{}), V(MyStruct1{})}, + + // can convert *byte and *MyByte + {V((*byte)(nil)), V((*MyByte)(nil))}, + {V((*MyByte)(nil)), V((*byte)(nil))}, + + // cannot convert mismatched array sizes + {V([2]byte{}), V([2]byte{})}, + {V([3]byte{}), V([3]byte{})}, + {V(MyBytesArray0{}), V([0]byte{})}, + {V([0]byte{}), V(MyBytesArray0{})}, + + // cannot convert other instances + {V((**byte)(nil)), V((**byte)(nil))}, + {V((**MyByte)(nil)), V((**MyByte)(nil))}, + {V((chan byte)(nil)), V((chan byte)(nil))}, + {V((chan MyByte)(nil)), V((chan MyByte)(nil))}, + {V(([]byte)(nil)), V(([]byte)(nil))}, + {V(([]MyByte)(nil)), V(([]MyByte)(nil))}, + {V((map[int]byte)(nil)), V((map[int]byte)(nil))}, + {V((map[int]MyByte)(nil)), V((map[int]MyByte)(nil))}, + {V((map[byte]int)(nil)), V((map[byte]int)(nil))}, + {V((map[MyByte]int)(nil)), V((map[MyByte]int)(nil))}, + {V([2]byte{}), V([2]byte{})}, + {V([2]MyByte{}), V([2]MyByte{})}, + + // other + {V((***int)(nil)), V((***int)(nil))}, + {V((***byte)(nil)), V((***byte)(nil))}, + {V((***int32)(nil)), V((***int32)(nil))}, + {V((***int64)(nil)), V((***int64)(nil))}, + {V((chan byte)(nil)), V((chan byte)(nil))}, + {V((chan MyByte)(nil)), V((chan MyByte)(nil))}, + {V((map[int]bool)(nil)), V((map[int]bool)(nil))}, + {V((map[int]byte)(nil)), V((map[int]byte)(nil))}, + {V((map[uint]bool)(nil)), V((map[uint]bool)(nil))}, + {V([]uint(nil)), V([]uint(nil))}, + {V([]int(nil)), V([]int(nil))}, + {V(new(any)), V(new(any))}, + {V(new(io.Reader)), V(new(io.Reader))}, + {V(new(io.Writer)), V(new(io.Writer))}, + + // channels + {V(IntChan(nil)), V((chan<- int)(nil))}, + {V(IntChan(nil)), V((<-chan int)(nil))}, + {V((chan int)(nil)), V(IntChanRecv(nil))}, + {V((chan int)(nil)), V(IntChanSend(nil))}, + {V(IntChanRecv(nil)), V((<-chan int)(nil))}, + {V((<-chan int)(nil)), V(IntChanRecv(nil))}, + {V(IntChanSend(nil)), V((chan<- int)(nil))}, + {V((chan<- int)(nil)), V(IntChanSend(nil))}, + {V(IntChan(nil)), V((chan int)(nil))}, + {V((chan int)(nil)), V(IntChan(nil))}, + {V((chan int)(nil)), V((<-chan int)(nil))}, + {V((chan int)(nil)), V((chan<- int)(nil))}, + {V(BytesChan(nil)), V((chan<- []byte)(nil))}, + {V(BytesChan(nil)), V((<-chan []byte)(nil))}, + {V((chan []byte)(nil)), V(BytesChanRecv(nil))}, + {V((chan []byte)(nil)), V(BytesChanSend(nil))}, + {V(BytesChanRecv(nil)), V((<-chan []byte)(nil))}, + {V((<-chan []byte)(nil)), V(BytesChanRecv(nil))}, + {V(BytesChanSend(nil)), V((chan<- []byte)(nil))}, + {V((chan<- []byte)(nil)), V(BytesChanSend(nil))}, + {V(BytesChan(nil)), V((chan []byte)(nil))}, + {V((chan []byte)(nil)), V(BytesChan(nil))}, + {V((chan []byte)(nil)), V((<-chan []byte)(nil))}, + {V((chan []byte)(nil)), V((chan<- []byte)(nil))}, + + // cannot convert other instances (channels) + {V(IntChan(nil)), V(IntChan(nil))}, + {V(IntChanRecv(nil)), V(IntChanRecv(nil))}, + {V(IntChanSend(nil)), V(IntChanSend(nil))}, + {V(BytesChan(nil)), V(BytesChan(nil))}, + {V(BytesChanRecv(nil)), V(BytesChanRecv(nil))}, + {V(BytesChanSend(nil)), V(BytesChanSend(nil))}, + + // interfaces + {V(int(1)), EmptyInterfaceV(int(1))}, + {V(string("hello")), EmptyInterfaceV(string("hello"))}, + {V(new(bytes.Buffer)), ReaderV(new(bytes.Buffer))}, + {ReadWriterV(new(bytes.Buffer)), ReaderV(new(bytes.Buffer))}, + {V(new(bytes.Buffer)), ReadWriterV(new(bytes.Buffer))}, +} + +func TestConvert(t *testingT) { + canConvert := map[[2]reflect.Type]bool{} + all := map[reflect.Type]bool{} + + for _, tt := range convertTests { + t1 := tt.in.Type() + if !t1.ConvertibleTo(t1) { + t.Errorf("(%s).ConvertibleTo(%s) = false, want true", t1, t1) + continue + } + + t2 := tt.out.Type() + if !t1.ConvertibleTo(t2) { + t.Errorf("(%s).ConvertibleTo(%s) = false, want true", t1, t2) + continue + } + + all[t1] = true + all[t2] = true + canConvert[[2]reflect.Type{t1, t2}] = true + + // vout1 represents the in value converted to the in type. + v1 := tt.in + if !v1.CanConvert(t1) { + t.Errorf("ValueOf(%T(%[1]v)).CanConvert(%s) = false, want true", tt.in.Interface(), t1) + } + vout1 := v1.Convert(t1) + out1 := vout1.Interface() + if vout1.Type() != tt.in.Type() || !reflect.DeepEqual(out1, tt.in.Interface()) { + t.Errorf("ValueOf(%T(%[1]v)).Convert(%s) = %T(%[3]v), want %T(%[4]v)", tt.in.Interface(), t1, out1, tt.in.Interface()) + } + + // vout2 represents the in value converted to the out type. + if !v1.CanConvert(t2) { + t.Errorf(" ValueOf(%T(%[1]v)).CanConvert(%s) = false, want true", tt.in.Interface(), t2) + } + vout2 := v1.Convert(t2) + out2 := vout2.Interface() + if vout2.Type() != tt.out.Type() || !reflect.DeepEqual(out2, tt.out.Interface()) { + t.Errorf("ValueOf(%T(%[1]v)).Convert(%s) = %T(%[3]v), want %T(%[4]v)", tt.in.Interface(), t2, out2, tt.out.Interface()) + } + if got, want := vout2.Kind(), vout2.Type().Kind(); got != want { + t.Errorf("ValueOf(%T(%[1]v)).Convert(%s) has internal kind %v want %v", tt.in.Interface(), t1, got, want) + } + + // vout3 represents a new value of the out type, set to vout2. This makes + // sure the converted value vout2 is really usable as a regular value. + vout3 := reflect.New(t2).Elem() + vout3.Set(vout2) + out3 := vout3.Interface() + if vout3.Type() != tt.out.Type() || !reflect.DeepEqual(out3, tt.out.Interface()) { + t.Errorf("Set(ValueOf(%T(%[1]v)).Convert(%s)) = %T(%[3]v), want %T(%[4]v)", tt.in.Interface(), t2, out3, tt.out.Interface()) + } + + if IsRO(v1) { + t.Errorf("table entry %v is RO, should not be", v1) + } + if IsRO(vout1) { + t.Errorf("self-conversion output %v is RO, should not be", vout1) + } + if IsRO(vout2) { + t.Errorf("conversion output %v is RO, should not be", vout2) + } + if IsRO(vout3) { + t.Errorf("set(conversion output) %v is RO, should not be", vout3) + } + if !IsRO(MakeRO(v1).Convert(t1)) { + t.Errorf("RO self-conversion output %v is not RO, should be", v1) + } + if !IsRO(MakeRO(v1).Convert(t2)) { + t.Errorf("RO conversion output %v is not RO, should be", v1) + } + } + + // Assume that of all the types we saw during the tests, + // if there wasn't an explicit entry for a conversion between + // a pair of types, then it's not to be allowed. This checks for + // things like 'int64' converting to '*int'. + for t1 := range all { + for t2 := range all { + expectOK := t1 == t2 || canConvert[[2]reflect.Type{t1, t2}] || t2.Kind() == reflect.Interface && t2.NumMethod() == 0 + ok := t1.ConvertibleTo(t2) + if ok != expectOK { + t.Errorf("@(%s).ConvertibleTo(%s) = %v, want %v: %v", t1, t2, ok, expectOK, canConvert[[2]reflect.Type{t1, t2}]) + } + } + } +} + +func TestConvertPanic(t *testingT) { + s := make([]byte, 4) + p := new([8]byte) + v := reflect.ValueOf(s) + pt := reflect.TypeOf(p) + if !v.Type().ConvertibleTo(pt) { + t.Errorf("[]byte should be convertible to *[8]byte") + } + if v.CanConvert(pt) { + t.Errorf("slice with length 4 should not be convertible to *[8]byte") + } + shouldPanic("reflect: cannot convert slice with length 4 to pointer to array with length 8", func() { + _ = v.Convert(pt) + }) + + if v.CanConvert(pt.Elem()) { + t.Errorf("slice with length 4 should not be convertible to [8]byte") + } + shouldPanic("reflect: cannot convert slice with length 4 to array with length 8", func() { + _ = v.Convert(pt.Elem()) + }) +} + +func TestConvertSlice2Array(t *testingT) { + s := make([]int, 4) + p := [4]int{} + pt := reflect.TypeOf(p) + ov := reflect.ValueOf(s) + v := ov.Convert(pt) + // Converting a slice to non-empty array needs to return + // a non-addressable copy of the original memory. + if v.CanAddr() { + t.Fatalf("convert slice to non-empty array returns a addressable copy array") + } + for i := range s { + ov.Index(i).Set(reflect.ValueOf(i + 1)) + } + for i := range s { + if v.Index(i).Int() != 0 { + t.Fatalf("slice (%v) mutation visible in converted result (%v)", ov, v) + } + } +} + +var gFloat32 float32 + +const snan uint32 = 0x7f800001 + +func TestConvertNaNs(t *testingT) { + // Test to see if a store followed by a load of a signaling NaN + // maintains the signaling bit. (This used to fail on the 387 port.) + gFloat32 = math.Float32frombits(snan) + // runtime.Gosched() // make sure we don't optimize the store/load away + if got := math.Float32bits(gFloat32); got != snan { + t.Errorf("store/load of sNaN not faithful, got %x want %x", got, snan) + } + // Test reflect's conversion between float32s. See issue 36400. + type myFloat32 float32 + x := V(myFloat32(math.Float32frombits(snan))) + y := x.Convert(reflect.TypeOf(float32(0))) + z := y.Interface().(float32) + if got := math.Float32bits(z); got != snan { + t.Errorf("signaling nan conversion got %x, want %x", got, snan) + } +} + +func shouldPanic(expect string, f func()) { + defer func() { + r := recover() + if r == nil { + panic("did not panic") + } + if expect != "" { + var s string + switch r := r.(type) { + case string: + s = r + case *reflect.ValueError: + s = r.Error() + default: + panic(fmt.Sprintf("panicked with unexpected type %T", r)) + } + if !strings.HasPrefix(s, "reflect") { + panic(`panic string does not start with "reflect": ` + s) + } + if !strings.Contains(s, expect) { + panic(`panic string does not contain "` + expect + `": ` + s) + } + } + }() + f() +} diff --git a/compiler/cl/_testgo/reflectconv/out.ll b/compiler/cl/_testgo/reflectconv/out.ll new file mode 100644 index 00000000..1c8a0e79 --- /dev/null +++ b/compiler/cl/_testgo/reflectconv/out.ll @@ -0,0 +1 @@ +; \ No newline at end of file diff --git a/runtime/internal/clite/bitcast/_cast/cast.c b/runtime/internal/clite/bitcast/_cast/cast.c index e948a2c6..2d7eeffc 100644 --- a/runtime/internal/clite/bitcast/_cast/cast.c +++ b/runtime/internal/clite/bitcast/_cast/cast.c @@ -26,4 +26,4 @@ long llgoFromFloat32(float v) { castUnion k; k.f = v; return k.v; -} \ No newline at end of file +}