diff --git a/cl/_testdata/print/out.ll b/cl/_testdata/print/out.ll index 747740a6..23759698 100644 --- a/cl/_testdata/print/out.ll +++ b/cl/_testdata/print/out.ll @@ -5,8 +5,8 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %main.stringStruct = type { ptr, i64 } %main.slice = type { ptr, i64, i64 } -%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } +%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } @"main.init$guard" = global i1 false, align 1 @main.minhexdigits = global i64 0, align 8 @@ -144,373 +144,293 @@ _llgo_0: call void @main.prinfsub(double 1.001000e+02) call void @main.printnl() %6 = load ptr, ptr @_llgo_float32, align 8 - %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %6, i32 0, i32 6 - %8 = load i8, ptr %7, align 1 - %9 = or i8 %8, 32 - store i8 %9, ptr %7, align 1 - %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %10, i32 0, i32 0 - store ptr %6, ptr %11, align 8 - %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %10, i32 0, i32 1 - store ptr inttoptr (i32 1315859240 to ptr), ptr %12, align 8 - %13 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %10, align 8 - call void @main.printany(%"github.com/goplus/llgo/internal/runtime.eface" %13) + %7 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %8 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, i32 0, i32 0 + store ptr %6, ptr %8, align 8 + %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, i32 0, i32 1 + store ptr inttoptr (i32 1315859240 to ptr), ptr %9, align 8 + %10 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, align 8 + call void @main.printany(%"github.com/goplus/llgo/internal/runtime.eface" %10) call void @main.printnl() - %14 = load ptr, ptr @_llgo_float64, align 8 - %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %14, i32 0, i32 6 - %16 = load i8, ptr %15, align 1 - %17 = or i8 %16, 32 - store i8 %17, ptr %15, align 1 - %18 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %18, i32 0, i32 0 - store ptr %14, ptr %19, align 8 - %20 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %18, i32 0, i32 1 - store ptr inttoptr (i64 4746175415993761792 to ptr), ptr %20, align 8 - %21 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %18, align 8 - call void @main.printany(%"github.com/goplus/llgo/internal/runtime.eface" %21) + %11 = load ptr, ptr @_llgo_float64, align 8 + %12 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %12, i32 0, i32 0 + store ptr %11, ptr %13, align 8 + %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %12, i32 0, i32 1 + store ptr inttoptr (i64 4746175415993761792 to ptr), ptr %14, align 8 + %15 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %12, align 8 + call void @main.printany(%"github.com/goplus/llgo/internal/runtime.eface" %15) call void @main.printnl() br i1 true, label %_llgo_3, label %_llgo_2 _llgo_1: ; preds = %_llgo_3 - %22 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 32) - %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %22, i64 0 - %24 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %25 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 0 - store ptr @2, ptr %25, align 8 - %26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 1 - store i64 10, ptr %26, align 4 - %27 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %24, align 8 - %28 = load ptr, ptr @_llgo_string, align 8 - %29 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %27, ptr %29, align 8 + %16 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 32) + %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %16, i64 0 + %18 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %18, i32 0, i32 0 + store ptr @2, ptr %19, align 8 + %20 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %18, i32 0, i32 1 + store i64 10, ptr %20, align 4 + %21 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %18, align 8 + %22 = load ptr, ptr @_llgo_string, align 8 + %23 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %21, ptr %23, align 8 + %24 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %25 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %24, i32 0, i32 0 + store ptr %22, ptr %25, align 8 + %26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %24, i32 0, i32 1 + store ptr %23, ptr %26, align 8 + %27 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %24, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %27, ptr %17, align 8 + %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %16, i64 1 + %29 = load ptr, ptr @_llgo_bool, align 8 %30 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %30, i32 0, i32 0 - store ptr %28, ptr %31, align 8 + store ptr %29, ptr %31, align 8 %32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %30, i32 0, i32 1 - store ptr %29, ptr %32, align 8 + store ptr inttoptr (i64 -1 to ptr), ptr %32, align 8 %33 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %30, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %33, ptr %23, align 8 - %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %22, i64 1 - %35 = load ptr, ptr @_llgo_bool, align 8 - %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %35, i32 0, i32 6 - %37 = load i8, ptr %36, align 1 - %38 = or i8 %37, 32 - store i8 %38, ptr %36, align 1 - %39 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %40 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %39, i32 0, i32 0 - store ptr %35, ptr %40, align 8 - %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %39, i32 0, i32 1 - store ptr inttoptr (i64 -1 to ptr), ptr %41, align 8 - %42 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %39, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %42, ptr %34, align 8 - %43 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %44 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %43, i32 0, i32 0 - store ptr %22, ptr %44, align 8 - %45 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %43, i32 0, i32 1 - store i64 2, ptr %45, align 4 - %46 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %43, i32 0, i32 2 - store i64 2, ptr %46, align 4 - %47 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %43, align 8 - call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %47) + store %"github.com/goplus/llgo/internal/runtime.eface" %33, ptr %28, align 8 + %34 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %35 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %34, i32 0, i32 0 + store ptr %16, ptr %35, align 8 + %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %34, i32 0, i32 1 + store i64 2, ptr %36, align 4 + %37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %34, i32 0, i32 2 + store i64 2, ptr %37, align 4 + %38 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %34, align 8 + call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %38) br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_3, %_llgo_0 - %48 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 48) - %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %48, i64 0 - %50 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %50, i32 0, i32 0 - store ptr @3, ptr %51, align 8 - %52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %50, i32 0, i32 1 - store i64 8, ptr %52, align 4 - %53 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %50, align 8 - %54 = load ptr, ptr @_llgo_string, align 8 - %55 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %53, ptr %55, align 8 - %56 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %56, i32 0, i32 0 - store ptr %54, ptr %57, align 8 - %58 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %56, i32 0, i32 1 - store ptr %55, ptr %58, align 8 - %59 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %56, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %59, ptr %49, align 8 - %60 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %48, i64 1 - %61 = load ptr, ptr @_llgo_bool, align 8 - %62 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %61, i32 0, i32 6 - %63 = load i8, ptr %62, align 1 - %64 = or i8 %63, 32 - store i8 %64, ptr %62, align 1 - %65 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %66 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %65, i32 0, i32 0 - store ptr %61, ptr %66, align 8 - %67 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %65, i32 0, i32 1 - store ptr inttoptr (i64 -1 to ptr), ptr %67, align 8 - %68 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %65, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %68, ptr %60, align 8 - %69 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %48, i64 2 + %39 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 48) + %40 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %39, i64 0 + %41 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %42 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %41, i32 0, i32 0 + store ptr @3, ptr %42, align 8 + %43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %41, i32 0, i32 1 + store i64 8, ptr %43, align 4 + %44 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %41, align 8 + %45 = load ptr, ptr @_llgo_string, align 8 + %46 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %44, ptr %46, align 8 + %47 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %47, i32 0, i32 0 + store ptr %45, ptr %48, align 8 + %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %47, i32 0, i32 1 + store ptr %46, ptr %49, align 8 + %50 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %47, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %50, ptr %40, align 8 + %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %39, i64 1 + %52 = load ptr, ptr @_llgo_bool, align 8 + %53 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %53, i32 0, i32 0 + store ptr %52, ptr %54, align 8 + %55 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %53, i32 0, i32 1 + store ptr inttoptr (i64 -1 to ptr), ptr %55, align 8 + %56 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %53, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %56, ptr %51, align 8 + %57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %39, i64 2 + %58 = load ptr, ptr @_llgo_bool, align 8 + %59 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %60 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %59, i32 0, i32 0 + store ptr %58, ptr %60, align 8 + %61 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %59, i32 0, i32 1 + store ptr inttoptr (i64 -1 to ptr), ptr %61, align 8 + %62 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %59, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %62, ptr %57, align 8 + %63 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %63, i32 0, i32 0 + store ptr %39, ptr %64, align 8 + %65 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %63, i32 0, i32 1 + store i64 3, ptr %65, align 4 + %66 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %63, i32 0, i32 2 + store i64 3, ptr %66, align 4 + %67 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %63, align 8 + call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %67) + %68 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 256) + %69 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 0 %70 = load ptr, ptr @_llgo_bool, align 8 - %71 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %70, i32 0, i32 6 - %72 = load i8, ptr %71, align 1 - %73 = or i8 %72, 32 - store i8 %73, ptr %71, align 1 - %74 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %75 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %74, i32 0, i32 0 - store ptr %70, ptr %75, align 8 - %76 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %74, i32 0, i32 1 - store ptr inttoptr (i64 -1 to ptr), ptr %76, align 8 - %77 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %74, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %77, ptr %69, align 8 - %78 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %79 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %78, i32 0, i32 0 - store ptr %48, ptr %79, align 8 - %80 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %78, i32 0, i32 1 - store i64 3, ptr %80, align 4 - %81 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %78, i32 0, i32 2 - store i64 3, ptr %81, align 4 - %82 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %78, align 8 - call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %82) - %83 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 256) - %84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 0 - %85 = load ptr, ptr @_llgo_bool, align 8 - %86 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %85, i32 0, i32 6 - %87 = load i8, ptr %86, align 1 - %88 = or i8 %87, 32 - store i8 %88, ptr %86, align 1 + %71 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %71, i32 0, i32 0 + store ptr %70, ptr %72, align 8 + %73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %71, i32 0, i32 1 + store ptr inttoptr (i64 -1 to ptr), ptr %73, align 8 + %74 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %71, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %74, ptr %69, align 8 + %75 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 1 + %76 = load ptr, ptr @_llgo_bool, align 8 + %77 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %78 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %77, i32 0, i32 0 + store ptr %76, ptr %78, align 8 + %79 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %77, i32 0, i32 1 + store ptr null, ptr %79, align 8 + %80 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %77, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %80, ptr %75, align 8 + %81 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 2 + %82 = load ptr, ptr @_llgo_int32, align 8 + %83 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i32 0, i32 0 + store ptr %82, ptr %84, align 8 + %85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i32 0, i32 1 + store ptr inttoptr (i64 97 to ptr), ptr %85, align 8 + %86 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %86, ptr %81, align 8 + %87 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 3 + %88 = load ptr, ptr @_llgo_int32, align 8 %89 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 %90 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %89, i32 0, i32 0 - store ptr %85, ptr %90, align 8 + store ptr %88, ptr %90, align 8 %91 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %89, i32 0, i32 1 - store ptr inttoptr (i64 -1 to ptr), ptr %91, align 8 + store ptr inttoptr (i64 65 to ptr), ptr %91, align 8 %92 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %89, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %92, ptr %84, align 8 - %93 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 1 - %94 = load ptr, ptr @_llgo_bool, align 8 - %95 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %94, i32 0, i32 6 - %96 = load i8, ptr %95, align 1 - %97 = or i8 %96, 32 - store i8 %97, ptr %95, align 1 - %98 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %99 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %98, i32 0, i32 0 - store ptr %94, ptr %99, align 8 - %100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %98, i32 0, i32 1 - store ptr null, ptr %100, align 8 - %101 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %98, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %101, ptr %93, align 8 - %102 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 2 - %103 = load ptr, ptr @_llgo_int32, align 8 - %104 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %103, i32 0, i32 6 - %105 = load i8, ptr %104, align 1 - %106 = or i8 %105, 32 - store i8 %106, ptr %104, align 1 + store %"github.com/goplus/llgo/internal/runtime.eface" %92, ptr %87, align 8 + %93 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 4 + %94 = load ptr, ptr @_llgo_int32, align 8 + %95 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %96 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %95, i32 0, i32 0 + store ptr %94, ptr %96, align 8 + %97 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %95, i32 0, i32 1 + store ptr inttoptr (i64 20013 to ptr), ptr %97, align 8 + %98 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %95, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %98, ptr %93, align 8 + %99 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 5 + %100 = load ptr, ptr @_llgo_int8, align 8 + %101 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %102 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %101, i32 0, i32 0 + store ptr %100, ptr %102, align 8 + %103 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %101, i32 0, i32 1 + store ptr inttoptr (i64 1 to ptr), ptr %103, align 8 + %104 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %101, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %104, ptr %99, align 8 + %105 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 6 + %106 = load ptr, ptr @_llgo_int16, align 8 %107 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 %108 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %107, i32 0, i32 0 - store ptr %103, ptr %108, align 8 + store ptr %106, ptr %108, align 8 %109 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %107, i32 0, i32 1 - store ptr inttoptr (i64 97 to ptr), ptr %109, align 8 + store ptr inttoptr (i64 2 to ptr), ptr %109, align 8 %110 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %107, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %110, ptr %102, align 8 - %111 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 3 + store %"github.com/goplus/llgo/internal/runtime.eface" %110, ptr %105, align 8 + %111 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 7 %112 = load ptr, ptr @_llgo_int32, align 8 - %113 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %112, i32 0, i32 6 - %114 = load i8, ptr %113, align 1 - %115 = or i8 %114, 32 - store i8 %115, ptr %113, align 1 - %116 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %117 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %116, i32 0, i32 0 - store ptr %112, ptr %117, align 8 - %118 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %116, i32 0, i32 1 - store ptr inttoptr (i64 65 to ptr), ptr %118, align 8 - %119 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %116, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %119, ptr %111, align 8 - %120 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 4 - %121 = load ptr, ptr @_llgo_int32, align 8 - %122 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %121, i32 0, i32 6 - %123 = load i8, ptr %122, align 1 - %124 = or i8 %123, 32 - store i8 %124, ptr %122, align 1 + %113 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %114 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %113, i32 0, i32 0 + store ptr %112, ptr %114, align 8 + %115 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %113, i32 0, i32 1 + store ptr inttoptr (i64 3 to ptr), ptr %115, align 8 + %116 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %113, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %116, ptr %111, align 8 + %117 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 8 + %118 = load ptr, ptr @_llgo_int64, align 8 + %119 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %120 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %119, i32 0, i32 0 + store ptr %118, ptr %120, align 8 + %121 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %119, i32 0, i32 1 + store ptr inttoptr (i64 4 to ptr), ptr %121, align 8 + %122 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %119, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %122, ptr %117, align 8 + %123 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 9 + %124 = load ptr, ptr @_llgo_int, align 8 %125 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 %126 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %125, i32 0, i32 0 - store ptr %121, ptr %126, align 8 + store ptr %124, ptr %126, align 8 %127 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %125, i32 0, i32 1 - store ptr inttoptr (i64 20013 to ptr), ptr %127, align 8 + store ptr inttoptr (i64 5 to ptr), ptr %127, align 8 %128 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %125, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %128, ptr %120, align 8 - %129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 5 - %130 = load ptr, ptr @_llgo_int8, align 8 - %131 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %130, i32 0, i32 6 - %132 = load i8, ptr %131, align 1 - %133 = or i8 %132, 32 - store i8 %133, ptr %131, align 1 - %134 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %134, i32 0, i32 0 - store ptr %130, ptr %135, align 8 - %136 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %134, i32 0, i32 1 - store ptr inttoptr (i64 1 to ptr), ptr %136, align 8 - %137 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %134, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %137, ptr %129, align 8 - %138 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 6 - %139 = load ptr, ptr @_llgo_int16, align 8 - %140 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %139, i32 0, i32 6 - %141 = load i8, ptr %140, align 1 - %142 = or i8 %141, 32 - store i8 %142, ptr %140, align 1 + store %"github.com/goplus/llgo/internal/runtime.eface" %128, ptr %123, align 8 + %129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 10 + %130 = load ptr, ptr @_llgo_uint8, align 8 + %131 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %132 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %131, i32 0, i32 0 + store ptr %130, ptr %132, align 8 + %133 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %131, i32 0, i32 1 + store ptr inttoptr (i64 1 to ptr), ptr %133, align 8 + %134 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %131, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %134, ptr %129, align 8 + %135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 11 + %136 = load ptr, ptr @_llgo_uint16, align 8 + %137 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %138 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %137, i32 0, i32 0 + store ptr %136, ptr %138, align 8 + %139 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %137, i32 0, i32 1 + store ptr inttoptr (i64 2 to ptr), ptr %139, align 8 + %140 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %137, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %140, ptr %135, align 8 + %141 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 12 + %142 = load ptr, ptr @_llgo_uint32, align 8 %143 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 %144 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %143, i32 0, i32 0 - store ptr %139, ptr %144, align 8 + store ptr %142, ptr %144, align 8 %145 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %143, i32 0, i32 1 - store ptr inttoptr (i64 2 to ptr), ptr %145, align 8 + store ptr inttoptr (i64 3 to ptr), ptr %145, align 8 %146 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %143, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %146, ptr %138, align 8 - %147 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 7 - %148 = load ptr, ptr @_llgo_int32, align 8 - %149 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %148, i32 0, i32 6 - %150 = load i8, ptr %149, align 1 - %151 = or i8 %150, 32 - store i8 %151, ptr %149, align 1 - %152 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %153 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %152, i32 0, i32 0 - store ptr %148, ptr %153, align 8 - %154 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %152, i32 0, i32 1 - store ptr inttoptr (i64 3 to ptr), ptr %154, align 8 - %155 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %152, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %155, ptr %147, align 8 - %156 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 8 - %157 = load ptr, ptr @_llgo_int64, align 8 - %158 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %157, i32 0, i32 6 - %159 = load i8, ptr %158, align 1 - %160 = or i8 %159, 32 - store i8 %160, ptr %158, align 1 - %161 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %162 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %161, i32 0, i32 0 - store ptr %157, ptr %162, align 8 - %163 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %161, i32 0, i32 1 - store ptr inttoptr (i64 4 to ptr), ptr %163, align 8 - %164 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %161, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %164, ptr %156, align 8 - %165 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 9 - %166 = load ptr, ptr @_llgo_int, align 8 - %167 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %166, i32 0, i32 6 - %168 = load i8, ptr %167, align 1 - %169 = or i8 %168, 32 - store i8 %169, ptr %167, align 1 - %170 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %171 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %170, i32 0, i32 0 - store ptr %166, ptr %171, align 8 - %172 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %170, i32 0, i32 1 - store ptr inttoptr (i64 5 to ptr), ptr %172, align 8 - %173 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %170, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %173, ptr %165, align 8 - %174 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 10 - %175 = load ptr, ptr @_llgo_uint8, align 8 - %176 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %175, i32 0, i32 6 - %177 = load i8, ptr %176, align 1 - %178 = or i8 %177, 32 - store i8 %178, ptr %176, align 1 + store %"github.com/goplus/llgo/internal/runtime.eface" %146, ptr %141, align 8 + %147 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 13 + %148 = load ptr, ptr @_llgo_uint64, align 8 + %149 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %150 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %149, i32 0, i32 0 + store ptr %148, ptr %150, align 8 + %151 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %149, i32 0, i32 1 + store ptr inttoptr (i64 4 to ptr), ptr %151, align 8 + %152 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %149, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %152, ptr %147, align 8 + %153 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 14 + %154 = load ptr, ptr @_llgo_uintptr, align 8 + %155 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %156 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %155, i32 0, i32 0 + store ptr %154, ptr %156, align 8 + %157 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %155, i32 0, i32 1 + store ptr inttoptr (i64 5 to ptr), ptr %157, align 8 + %158 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %155, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %158, ptr %153, align 8 + %159 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 15 + %160 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %161 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %160, i32 0, i32 0 + store ptr @1, ptr %161, align 8 + %162 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %160, i32 0, i32 1 + store i64 4, ptr %162, align 4 + %163 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %160, align 8 + %164 = load ptr, ptr @_llgo_string, align 8 + %165 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %163, ptr %165, align 8 + %166 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %167 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %166, i32 0, i32 0 + store ptr %164, ptr %167, align 8 + %168 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %166, i32 0, i32 1 + store ptr %165, ptr %168, align 8 + %169 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %166, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %169, ptr %159, align 8 + %170 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %171 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %170, i32 0, i32 0 + store ptr %68, ptr %171, align 8 + %172 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %170, i32 0, i32 1 + store i64 16, ptr %172, align 4 + %173 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %170, i32 0, i32 2 + store i64 16, ptr %173, align 4 + %174 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %170, align 8 + call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %174) + %175 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 16) + %176 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %175, i64 0 + %177 = load ptr, ptr @_llgo_complex128, align 8 + %178 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store { double, double } { double 1.000000e+00, double 2.000000e+00 }, ptr %178, align 8 %179 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 %180 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %179, i32 0, i32 0 - store ptr %175, ptr %180, align 8 + store ptr %177, ptr %180, align 8 %181 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %179, i32 0, i32 1 - store ptr inttoptr (i64 1 to ptr), ptr %181, align 8 + store ptr %178, ptr %181, align 8 %182 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %179, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %182, ptr %174, align 8 - %183 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 11 - %184 = load ptr, ptr @_llgo_uint16, align 8 - %185 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %184, i32 0, i32 6 - %186 = load i8, ptr %185, align 1 - %187 = or i8 %186, 32 - store i8 %187, ptr %185, align 1 - %188 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %189 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %188, i32 0, i32 0 - store ptr %184, ptr %189, align 8 - %190 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %188, i32 0, i32 1 - store ptr inttoptr (i64 2 to ptr), ptr %190, align 8 - %191 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %188, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %191, ptr %183, align 8 - %192 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 12 - %193 = load ptr, ptr @_llgo_uint32, align 8 - %194 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %193, i32 0, i32 6 - %195 = load i8, ptr %194, align 1 - %196 = or i8 %195, 32 - store i8 %196, ptr %194, align 1 - %197 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %198 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %197, i32 0, i32 0 - store ptr %193, ptr %198, align 8 - %199 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %197, i32 0, i32 1 - store ptr inttoptr (i64 3 to ptr), ptr %199, align 8 - %200 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %197, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %200, ptr %192, align 8 - %201 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 13 - %202 = load ptr, ptr @_llgo_uint64, align 8 - %203 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %202, i32 0, i32 6 - %204 = load i8, ptr %203, align 1 - %205 = or i8 %204, 32 - store i8 %205, ptr %203, align 1 - %206 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %207 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %206, i32 0, i32 0 - store ptr %202, ptr %207, align 8 - %208 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %206, i32 0, i32 1 - store ptr inttoptr (i64 4 to ptr), ptr %208, align 8 - %209 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %206, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %209, ptr %201, align 8 - %210 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 14 - %211 = load ptr, ptr @_llgo_uintptr, align 8 - %212 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %211, i32 0, i32 6 - %213 = load i8, ptr %212, align 1 - %214 = or i8 %213, 32 - store i8 %214, ptr %212, align 1 - %215 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %216 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %215, i32 0, i32 0 - store ptr %211, ptr %216, align 8 - %217 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %215, i32 0, i32 1 - store ptr inttoptr (i64 5 to ptr), ptr %217, align 8 - %218 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %215, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %218, ptr %210, align 8 - %219 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i64 15 - %220 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %221 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %220, i32 0, i32 0 - store ptr @1, ptr %221, align 8 - %222 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %220, i32 0, i32 1 - store i64 4, ptr %222, align 4 - %223 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %220, align 8 - %224 = load ptr, ptr @_llgo_string, align 8 - %225 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %223, ptr %225, align 8 - %226 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %227 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %226, i32 0, i32 0 - store ptr %224, ptr %227, align 8 - %228 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %226, i32 0, i32 1 - store ptr %225, ptr %228, align 8 - %229 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %226, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %229, ptr %219, align 8 - %230 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %231 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %230, i32 0, i32 0 - store ptr %83, ptr %231, align 8 - %232 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %230, i32 0, i32 1 - store i64 16, ptr %232, align 4 - %233 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %230, i32 0, i32 2 - store i64 16, ptr %233, align 4 - %234 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %230, align 8 - call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %234) - %235 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 16) - %236 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %235, i64 0 - %237 = load ptr, ptr @_llgo_complex128, align 8 - %238 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store { double, double } { double 1.000000e+00, double 2.000000e+00 }, ptr %238, align 8 - %239 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %240 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %239, i32 0, i32 0 - store ptr %237, ptr %240, align 8 - %241 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %239, i32 0, i32 1 - store ptr %238, ptr %241, align 8 - %242 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %239, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %242, ptr %236, align 8 - %243 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %244 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %243, i32 0, i32 0 - store ptr %235, ptr %244, align 8 - %245 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %243, i32 0, i32 1 - store i64 1, ptr %245, align 4 - %246 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %243, i32 0, i32 2 - store i64 1, ptr %246, align 4 - %247 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %243, align 8 - call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %247) + store %"github.com/goplus/llgo/internal/runtime.eface" %182, ptr %176, align 8 + %183 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %184 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %183, i32 0, i32 0 + store ptr %175, ptr %184, align 8 + %185 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %183, i32 0, i32 1 + store i64 1, ptr %185, align 4 + %186 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %183, i32 0, i32 2 + store i64 1, ptr %186, align 4 + %187 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %183, align 8 + call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %187) ret i32 0 _llgo_3: ; preds = %_llgo_0 diff --git a/cl/_testdata/vargs/out.ll b/cl/_testdata/vargs/out.ll index 6a1c1ef6..f5cfbdfa 100644 --- a/cl/_testdata/vargs/out.ll +++ b/cl/_testdata/vargs/out.ll @@ -2,9 +2,9 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } -%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } -%"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } +%"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } +%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } @"main.init$guard" = global i1 false, align 1 @__llgo_argc = global i32 0, align 4 @@ -37,52 +37,40 @@ _llgo_0: %2 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 48) %3 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %2, i64 0 %4 = load ptr, ptr @_llgo_int, align 8 - %5 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %4, i32 0, i32 6 - %6 = load i8, ptr %5, align 1 - %7 = or i8 %6, 32 - store i8 %7, ptr %5, align 1 - %8 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %8, i32 0, i32 0 - store ptr %4, ptr %9, align 8 - %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %8, i32 0, i32 1 - store ptr inttoptr (i64 1 to ptr), ptr %10, align 8 - %11 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %8, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %11, ptr %3, align 8 - %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %2, i64 1 - %13 = load ptr, ptr @_llgo_int, align 8 - %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %13, i32 0, i32 6 - %15 = load i8, ptr %14, align 1 - %16 = or i8 %15, 32 - store i8 %16, ptr %14, align 1 + %5 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %5, i32 0, i32 0 + store ptr %4, ptr %6, align 8 + %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %5, i32 0, i32 1 + store ptr inttoptr (i64 1 to ptr), ptr %7, align 8 + %8 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %5, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %8, ptr %3, align 8 + %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %2, i64 1 + %10 = load ptr, ptr @_llgo_int, align 8 + %11 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %11, i32 0, i32 0 + store ptr %10, ptr %12, align 8 + %13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %11, i32 0, i32 1 + store ptr inttoptr (i64 2 to ptr), ptr %13, align 8 + %14 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %11, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %14, ptr %9, align 8 + %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %2, i64 2 + %16 = load ptr, ptr @_llgo_int, align 8 %17 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %17, i32 0, i32 0 - store ptr %13, ptr %18, align 8 + store ptr %16, ptr %18, align 8 %19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %17, i32 0, i32 1 - store ptr inttoptr (i64 2 to ptr), ptr %19, align 8 + store ptr inttoptr (i64 3 to ptr), ptr %19, align 8 %20 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %17, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %20, ptr %12, align 8 - %21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %2, i64 2 - %22 = load ptr, ptr @_llgo_int, align 8 - %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %22, i32 0, i32 6 - %24 = load i8, ptr %23, align 1 - %25 = or i8 %24, 32 - store i8 %25, ptr %23, align 1 - %26 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %26, i32 0, i32 0 - store ptr %22, ptr %27, align 8 - %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %26, i32 0, i32 1 - store ptr inttoptr (i64 3 to ptr), ptr %28, align 8 - %29 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %26, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %29, ptr %21, align 8 - %30 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %30, i32 0, i32 0 - store ptr %2, ptr %31, align 8 - %32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %30, i32 0, i32 1 - store i64 3, ptr %32, align 4 - %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %30, i32 0, i32 2 - store i64 3, ptr %33, align 4 - %34 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %30, align 8 - call void @main.test(%"github.com/goplus/llgo/internal/runtime.Slice" %34) + store %"github.com/goplus/llgo/internal/runtime.eface" %20, ptr %15, align 8 + %21 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %21, i32 0, i32 0 + store ptr %2, ptr %22, align 8 + %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %21, i32 0, i32 1 + store i64 3, ptr %23, align 4 + %24 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %21, i32 0, i32 2 + store i64 3, ptr %24, align 4 + %25 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %21, align 8 + call void @main.test(%"github.com/goplus/llgo/internal/runtime.Slice" %25) ret i32 0 } diff --git a/cl/_testgo/equal/out.ll b/cl/_testgo/equal/out.ll index dd36ede0..f38f3efc 100644 --- a/cl/_testgo/equal/out.ll +++ b/cl/_testgo/equal/out.ll @@ -4,9 +4,9 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } %main.T = type { i64, i64, %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.eface" } -%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } %main.N = type {} +%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } @"main.init$guard" = global i1 false, align 1 @@ -187,140 +187,132 @@ _llgo_0: %9 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %6, align 8 store %"github.com/goplus/llgo/internal/runtime.String" %9, ptr %4, align 8 %10 = load ptr, ptr @_llgo_int, align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %10, i32 0, i32 6 - %12 = load i8, ptr %11, align 1 - %13 = or i8 %12, 32 - store i8 %13, ptr %11, align 1 - %14 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %14, i32 0, i32 0 - store ptr %10, ptr %15, align 8 - %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %14, i32 0, i32 1 - store ptr inttoptr (i64 1 to ptr), ptr %16, align 8 - %17 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %14, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %17, ptr %5, align 8 - %18 = alloca %main.T, align 8 - %19 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %18, i64 48) - %20 = getelementptr inbounds %main.T, ptr %19, i32 0, i32 0 - %21 = getelementptr inbounds %main.T, ptr %19, i32 0, i32 1 - %22 = getelementptr inbounds %main.T, ptr %19, i32 0, i32 2 - %23 = getelementptr inbounds %main.T, ptr %19, i32 0, i32 3 - store i64 10, ptr %20, align 4 - store i64 20, ptr %21, align 4 - %24 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %25 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 0 - store ptr @1, ptr %25, align 8 - %26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 1 - store i64 5, ptr %26, align 4 - %27 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %24, align 8 - store %"github.com/goplus/llgo/internal/runtime.String" %27, ptr %22, align 8 - %28 = load ptr, ptr @_llgo_int, align 8 - %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %28, i32 0, i32 6 - %30 = load i8, ptr %29, align 1 - %31 = or i8 %30, 32 - store i8 %31, ptr %29, align 1 - %32 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %32, i32 0, i32 0 - store ptr %28, ptr %33, align 8 - %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %32, i32 0, i32 1 - store ptr inttoptr (i64 1 to ptr), ptr %34, align 8 - %35 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %32, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %35, ptr %23, align 8 - %36 = alloca %main.T, align 8 - %37 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %36, i64 48) - %38 = getelementptr inbounds %main.T, ptr %37, i32 0, i32 0 - %39 = getelementptr inbounds %main.T, ptr %37, i32 0, i32 1 - %40 = getelementptr inbounds %main.T, ptr %37, i32 0, i32 2 - %41 = getelementptr inbounds %main.T, ptr %37, i32 0, i32 3 - store i64 10, ptr %38, align 4 - store i64 20, ptr %39, align 4 - %42 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %42, i32 0, i32 0 - store ptr @1, ptr %43, align 8 - %44 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %42, i32 0, i32 1 - store i64 5, ptr %44, align 4 - %45 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %42, align 8 - store %"github.com/goplus/llgo/internal/runtime.String" %45, ptr %40, align 8 - %46 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %47 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %46, i32 0, i32 0 - store ptr @2, ptr %47, align 8 - %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %46, i32 0, i32 1 - store i64 2, ptr %48, align 4 - %49 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %46, align 8 - %50 = load ptr, ptr @_llgo_string, align 8 - %51 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %49, ptr %51, align 8 - %52 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %53 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %52, i32 0, i32 0 - store ptr %50, ptr %53, align 8 - %54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %52, i32 0, i32 1 - store ptr %51, ptr %54, align 8 - %55 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %52, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %55, ptr %41, align 8 + %11 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %11, i32 0, i32 0 + store ptr %10, ptr %12, align 8 + %13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %11, i32 0, i32 1 + store ptr inttoptr (i64 1 to ptr), ptr %13, align 8 + %14 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %11, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %14, ptr %5, align 8 + %15 = alloca %main.T, align 8 + %16 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %15, i64 48) + %17 = getelementptr inbounds %main.T, ptr %16, i32 0, i32 0 + %18 = getelementptr inbounds %main.T, ptr %16, i32 0, i32 1 + %19 = getelementptr inbounds %main.T, ptr %16, i32 0, i32 2 + %20 = getelementptr inbounds %main.T, ptr %16, i32 0, i32 3 + store i64 10, ptr %17, align 4 + store i64 20, ptr %18, align 4 + %21 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 0 + store ptr @1, ptr %22, align 8 + %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 1 + store i64 5, ptr %23, align 4 + %24 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %21, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %24, ptr %19, align 8 + %25 = load ptr, ptr @_llgo_int, align 8 + %26 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %26, i32 0, i32 0 + store ptr %25, ptr %27, align 8 + %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %26, i32 0, i32 1 + store ptr inttoptr (i64 1 to ptr), ptr %28, align 8 + %29 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %26, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %29, ptr %20, align 8 + %30 = alloca %main.T, align 8 + %31 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %30, i64 48) + %32 = getelementptr inbounds %main.T, ptr %31, i32 0, i32 0 + %33 = getelementptr inbounds %main.T, ptr %31, i32 0, i32 1 + %34 = getelementptr inbounds %main.T, ptr %31, i32 0, i32 2 + %35 = getelementptr inbounds %main.T, ptr %31, i32 0, i32 3 + store i64 10, ptr %32, align 4 + store i64 20, ptr %33, align 4 + %36 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %36, i32 0, i32 0 + store ptr @1, ptr %37, align 8 + %38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %36, i32 0, i32 1 + store i64 5, ptr %38, align 4 + %39 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %36, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %39, ptr %34, align 8 + %40 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %40, i32 0, i32 0 + store ptr @2, ptr %41, align 8 + %42 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %40, i32 0, i32 1 + store i64 2, ptr %42, align 4 + %43 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %40, align 8 + %44 = load ptr, ptr @_llgo_string, align 8 + %45 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %43, ptr %45, align 8 + %46 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %47 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %46, i32 0, i32 0 + store ptr %44, ptr %47, align 8 + %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %46, i32 0, i32 1 + store ptr %45, ptr %48, align 8 + %49 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %46, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %49, ptr %35, align 8 call void @main.assert(i1 true) - %56 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer) - %57 = and i1 true, %56 - %58 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.eface" zeroinitializer) - %59 = and i1 %57, %58 - call void @main.assert(i1 %59) - %60 = load %main.T, ptr %1, align 8 - %61 = load %main.T, ptr %19, align 8 - %62 = extractvalue %main.T %60, 0 - %63 = extractvalue %main.T %61, 0 - %64 = icmp eq i64 %62, %63 - %65 = and i1 true, %64 - %66 = extractvalue %main.T %60, 1 - %67 = extractvalue %main.T %61, 1 - %68 = icmp eq i64 %66, %67 - %69 = and i1 %65, %68 - %70 = extractvalue %main.T %60, 2 - %71 = extractvalue %main.T %61, 2 - %72 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %70, %"github.com/goplus/llgo/internal/runtime.String" %71) - %73 = and i1 %69, %72 - %74 = extractvalue %main.T %60, 3 - %75 = extractvalue %main.T %61, 3 - %76 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %74, %"github.com/goplus/llgo/internal/runtime.eface" %75) - %77 = and i1 %73, %76 - call void @main.assert(i1 %77) - %78 = load %main.T, ptr %1, align 8 - %79 = load %main.T, ptr %37, align 8 - %80 = extractvalue %main.T %78, 0 - %81 = extractvalue %main.T %79, 0 - %82 = icmp eq i64 %80, %81 - %83 = and i1 true, %82 - %84 = extractvalue %main.T %78, 1 - %85 = extractvalue %main.T %79, 1 - %86 = icmp eq i64 %84, %85 - %87 = and i1 %83, %86 - %88 = extractvalue %main.T %78, 2 - %89 = extractvalue %main.T %79, 2 - %90 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %88, %"github.com/goplus/llgo/internal/runtime.String" %89) - %91 = and i1 %87, %90 - %92 = extractvalue %main.T %78, 3 - %93 = extractvalue %main.T %79, 3 - %94 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %92, %"github.com/goplus/llgo/internal/runtime.eface" %93) - %95 = and i1 %91, %94 - %96 = xor i1 %95, true - call void @main.assert(i1 %96) - %97 = load %main.T, ptr %19, align 8 - %98 = load %main.T, ptr %37, align 8 - %99 = extractvalue %main.T %97, 0 - %100 = extractvalue %main.T %98, 0 - %101 = icmp eq i64 %99, %100 - %102 = and i1 true, %101 - %103 = extractvalue %main.T %97, 1 - %104 = extractvalue %main.T %98, 1 - %105 = icmp eq i64 %103, %104 - %106 = and i1 %102, %105 - %107 = extractvalue %main.T %97, 2 - %108 = extractvalue %main.T %98, 2 - %109 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %107, %"github.com/goplus/llgo/internal/runtime.String" %108) - %110 = and i1 %106, %109 - %111 = extractvalue %main.T %97, 3 - %112 = extractvalue %main.T %98, 3 - %113 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %111, %"github.com/goplus/llgo/internal/runtime.eface" %112) - %114 = and i1 %110, %113 - %115 = xor i1 %114, true - call void @main.assert(i1 %115) + %50 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer) + %51 = and i1 true, %50 + %52 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.eface" zeroinitializer) + %53 = and i1 %51, %52 + call void @main.assert(i1 %53) + %54 = load %main.T, ptr %1, align 8 + %55 = load %main.T, ptr %16, align 8 + %56 = extractvalue %main.T %54, 0 + %57 = extractvalue %main.T %55, 0 + %58 = icmp eq i64 %56, %57 + %59 = and i1 true, %58 + %60 = extractvalue %main.T %54, 1 + %61 = extractvalue %main.T %55, 1 + %62 = icmp eq i64 %60, %61 + %63 = and i1 %59, %62 + %64 = extractvalue %main.T %54, 2 + %65 = extractvalue %main.T %55, 2 + %66 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %64, %"github.com/goplus/llgo/internal/runtime.String" %65) + %67 = and i1 %63, %66 + %68 = extractvalue %main.T %54, 3 + %69 = extractvalue %main.T %55, 3 + %70 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %68, %"github.com/goplus/llgo/internal/runtime.eface" %69) + %71 = and i1 %67, %70 + call void @main.assert(i1 %71) + %72 = load %main.T, ptr %1, align 8 + %73 = load %main.T, ptr %31, align 8 + %74 = extractvalue %main.T %72, 0 + %75 = extractvalue %main.T %73, 0 + %76 = icmp eq i64 %74, %75 + %77 = and i1 true, %76 + %78 = extractvalue %main.T %72, 1 + %79 = extractvalue %main.T %73, 1 + %80 = icmp eq i64 %78, %79 + %81 = and i1 %77, %80 + %82 = extractvalue %main.T %72, 2 + %83 = extractvalue %main.T %73, 2 + %84 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %82, %"github.com/goplus/llgo/internal/runtime.String" %83) + %85 = and i1 %81, %84 + %86 = extractvalue %main.T %72, 3 + %87 = extractvalue %main.T %73, 3 + %88 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %86, %"github.com/goplus/llgo/internal/runtime.eface" %87) + %89 = and i1 %85, %88 + %90 = xor i1 %89, true + call void @main.assert(i1 %90) + %91 = load %main.T, ptr %16, align 8 + %92 = load %main.T, ptr %31, align 8 + %93 = extractvalue %main.T %91, 0 + %94 = extractvalue %main.T %92, 0 + %95 = icmp eq i64 %93, %94 + %96 = and i1 true, %95 + %97 = extractvalue %main.T %91, 1 + %98 = extractvalue %main.T %92, 1 + %99 = icmp eq i64 %97, %98 + %100 = and i1 %96, %99 + %101 = extractvalue %main.T %91, 2 + %102 = extractvalue %main.T %92, 2 + %103 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %101, %"github.com/goplus/llgo/internal/runtime.String" %102) + %104 = and i1 %100, %103 + %105 = extractvalue %main.T %91, 3 + %106 = extractvalue %main.T %92, 3 + %107 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %105, %"github.com/goplus/llgo/internal/runtime.eface" %106) + %108 = and i1 %104, %107 + %109 = xor i1 %108, true + call void @main.assert(i1 %109) ret void } @@ -362,181 +354,165 @@ _llgo_0: define void @"main.init#5"() { _llgo_0: %0 = load ptr, ptr @_llgo_int, align 8 - %1 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %0, i32 0, i32 6 - %2 = load i8, ptr %1, align 1 - %3 = or i8 %2, 32 - store i8 %3, ptr %1, align 1 - %4 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %4, i32 0, i32 0 - store ptr %0, ptr %5, align 8 - %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %4, i32 0, i32 1 - store ptr inttoptr (i64 100 to ptr), ptr %6, align 8 - %7 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %4, align 8 - %8 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - store {} zeroinitializer, ptr %9, align 1 - %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %10, i32 0, i32 0 - store ptr %8, ptr %11, align 8 - %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %10, i32 0, i32 1 - store ptr %9, ptr %12, align 8 - %13 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %10, align 8 - %14 = alloca %main.T, align 8 - %15 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %14, i64 48) - %16 = getelementptr inbounds %main.T, ptr %15, i32 0, i32 0 - %17 = getelementptr inbounds %main.T, ptr %15, i32 0, i32 1 - %18 = getelementptr inbounds %main.T, ptr %15, i32 0, i32 2 - %19 = getelementptr inbounds %main.T, ptr %15, i32 0, i32 3 - store i64 10, ptr %16, align 4 - store i64 20, ptr %17, align 4 - %20 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 0 - store ptr @1, ptr %21, align 8 - %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 1 - store i64 5, ptr %22, align 4 - %23 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %20, align 8 - store %"github.com/goplus/llgo/internal/runtime.String" %23, ptr %18, align 8 - %24 = load ptr, ptr @_llgo_int, align 8 - %25 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %24, i32 0, i32 6 - %26 = load i8, ptr %25, align 1 - %27 = or i8 %26, 32 - store i8 %27, ptr %25, align 1 - %28 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %28, i32 0, i32 0 - store ptr %24, ptr %29, align 8 - %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %28, i32 0, i32 1 - store ptr inttoptr (i64 1 to ptr), ptr %30, align 8 - %31 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %28, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %31, ptr %19, align 8 - %32 = load %main.T, ptr %15, align 8 - %33 = load ptr, ptr @_llgo_main.T, align 8 - %34 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) - store %main.T %32, ptr %34, align 8 - %35 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %35, i32 0, i32 0 - store ptr %33, ptr %36, align 8 - %37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %35, i32 0, i32 1 - store ptr %34, ptr %37, align 8 - %38 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %35, align 8 - %39 = alloca %main.T, align 8 - %40 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %39, i64 48) - %41 = getelementptr inbounds %main.T, ptr %40, i32 0, i32 0 - %42 = getelementptr inbounds %main.T, ptr %40, i32 0, i32 1 - %43 = getelementptr inbounds %main.T, ptr %40, i32 0, i32 2 - %44 = getelementptr inbounds %main.T, ptr %40, i32 0, i32 3 - store i64 10, ptr %41, align 4 - store i64 20, ptr %42, align 4 - %45 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %46 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %45, i32 0, i32 0 - store ptr @1, ptr %46, align 8 - %47 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %45, i32 0, i32 1 - store i64 5, ptr %47, align 4 - %48 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %45, align 8 - store %"github.com/goplus/llgo/internal/runtime.String" %48, ptr %43, align 8 - %49 = load ptr, ptr @_llgo_int, align 8 - %50 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %49, i32 0, i32 6 - %51 = load i8, ptr %50, align 1 - %52 = or i8 %51, 32 - store i8 %52, ptr %50, align 1 - %53 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %53, i32 0, i32 0 - store ptr %49, ptr %54, align 8 - %55 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %53, i32 0, i32 1 - store ptr inttoptr (i64 1 to ptr), ptr %55, align 8 - %56 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %53, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %56, ptr %44, align 8 - %57 = alloca %main.T, align 8 - %58 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %57, i64 48) - %59 = getelementptr inbounds %main.T, ptr %58, i32 0, i32 0 - %60 = getelementptr inbounds %main.T, ptr %58, i32 0, i32 1 - %61 = getelementptr inbounds %main.T, ptr %58, i32 0, i32 2 - %62 = getelementptr inbounds %main.T, ptr %58, i32 0, i32 3 - store i64 10, ptr %59, align 4 - store i64 20, ptr %60, align 4 - %63 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %63, i32 0, i32 0 - store ptr @1, ptr %64, align 8 - %65 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %63, i32 0, i32 1 - store i64 5, ptr %65, align 4 - %66 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %63, align 8 - store %"github.com/goplus/llgo/internal/runtime.String" %66, ptr %61, align 8 - %67 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %67, i32 0, i32 0 - store ptr @2, ptr %68, align 8 - %69 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %67, i32 0, i32 1 - store i64 2, ptr %69, align 4 - %70 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %67, align 8 - %71 = load ptr, ptr @_llgo_string, align 8 - %72 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %70, ptr %72, align 8 - %73 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %74 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %73, i32 0, i32 0 - store ptr %71, ptr %74, align 8 - %75 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %73, i32 0, i32 1 - store ptr %72, ptr %75, align 8 - %76 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %73, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %76, ptr %62, align 8 - %77 = load ptr, ptr @_llgo_int, align 8 - %78 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %77, i32 0, i32 6 - %79 = load i8, ptr %78, align 1 - %80 = or i8 %79, 32 - store i8 %80, ptr %78, align 1 - %81 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %82 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %81, i32 0, i32 0 - store ptr %77, ptr %82, align 8 - %83 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %81, i32 0, i32 1 - store ptr inttoptr (i64 100 to ptr), ptr %83, align 8 - %84 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %81, align 8 - %85 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %7, %"github.com/goplus/llgo/internal/runtime.eface" %84) - call void @main.assert(i1 %85) - %86 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - %87 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - store {} zeroinitializer, ptr %87, align 1 - %88 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %89 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %88, i32 0, i32 0 - store ptr %86, ptr %89, align 8 - %90 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %88, i32 0, i32 1 - store ptr %87, ptr %90, align 8 - %91 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %88, align 8 - %92 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %13, %"github.com/goplus/llgo/internal/runtime.eface" %91) - call void @main.assert(i1 %92) - %93 = load ptr, ptr @_llgo_main.N, align 8 - %94 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - store %main.N zeroinitializer, ptr %94, align 1 - %95 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %96 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %95, i32 0, i32 0 - store ptr %93, ptr %96, align 8 - %97 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %95, i32 0, i32 1 - store ptr %94, ptr %97, align 8 - %98 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %95, align 8 - %99 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %13, %"github.com/goplus/llgo/internal/runtime.eface" %98) - %100 = xor i1 %99, true - call void @main.assert(i1 %100) - %101 = load %main.T, ptr %40, align 8 - %102 = load ptr, ptr @_llgo_main.T, align 8 - %103 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) - store %main.T %101, ptr %103, align 8 - %104 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %105 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %104, i32 0, i32 0 - store ptr %102, ptr %105, align 8 - %106 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %104, i32 0, i32 1 - store ptr %103, ptr %106, align 8 - %107 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %104, align 8 - %108 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %38, %"github.com/goplus/llgo/internal/runtime.eface" %107) - call void @main.assert(i1 %108) - %109 = load %main.T, ptr %58, align 8 - %110 = load ptr, ptr @_llgo_main.T, align 8 - %111 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) - store %main.T %109, ptr %111, align 8 - %112 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %113 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %112, i32 0, i32 0 - store ptr %110, ptr %113, align 8 - %114 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %112, i32 0, i32 1 - store ptr %111, ptr %114, align 8 - %115 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %112, align 8 - %116 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %38, %"github.com/goplus/llgo/internal/runtime.eface" %115) - %117 = xor i1 %116, true - call void @main.assert(i1 %117) + %1 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %2 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %1, i32 0, i32 0 + store ptr %0, ptr %2, align 8 + %3 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %1, i32 0, i32 1 + store ptr inttoptr (i64 100 to ptr), ptr %3, align 8 + %4 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %1, align 8 + %5 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + %6 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + store {} zeroinitializer, ptr %6, align 1 + %7 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %8 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, i32 0, i32 0 + store ptr %5, ptr %8, align 8 + %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, i32 0, i32 1 + store ptr %6, ptr %9, align 8 + %10 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, align 8 + %11 = alloca %main.T, align 8 + %12 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %11, i64 48) + %13 = getelementptr inbounds %main.T, ptr %12, i32 0, i32 0 + %14 = getelementptr inbounds %main.T, ptr %12, i32 0, i32 1 + %15 = getelementptr inbounds %main.T, ptr %12, i32 0, i32 2 + %16 = getelementptr inbounds %main.T, ptr %12, i32 0, i32 3 + store i64 10, ptr %13, align 4 + store i64 20, ptr %14, align 4 + %17 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %17, i32 0, i32 0 + store ptr @1, ptr %18, align 8 + %19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %17, i32 0, i32 1 + store i64 5, ptr %19, align 4 + %20 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %17, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %20, ptr %15, align 8 + %21 = load ptr, ptr @_llgo_int, align 8 + %22 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %22, i32 0, i32 0 + store ptr %21, ptr %23, align 8 + %24 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %22, i32 0, i32 1 + store ptr inttoptr (i64 1 to ptr), ptr %24, align 8 + %25 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %22, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %25, ptr %16, align 8 + %26 = load %main.T, ptr %12, align 8 + %27 = load ptr, ptr @_llgo_main.T, align 8 + %28 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) + store %main.T %26, ptr %28, align 8 + %29 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %29, i32 0, i32 0 + store ptr %27, ptr %30, align 8 + %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %29, i32 0, i32 1 + store ptr %28, ptr %31, align 8 + %32 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %29, align 8 + %33 = alloca %main.T, align 8 + %34 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %33, i64 48) + %35 = getelementptr inbounds %main.T, ptr %34, i32 0, i32 0 + %36 = getelementptr inbounds %main.T, ptr %34, i32 0, i32 1 + %37 = getelementptr inbounds %main.T, ptr %34, i32 0, i32 2 + %38 = getelementptr inbounds %main.T, ptr %34, i32 0, i32 3 + store i64 10, ptr %35, align 4 + store i64 20, ptr %36, align 4 + %39 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %40 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %39, i32 0, i32 0 + store ptr @1, ptr %40, align 8 + %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %39, i32 0, i32 1 + store i64 5, ptr %41, align 4 + %42 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %39, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %42, ptr %37, align 8 + %43 = load ptr, ptr @_llgo_int, align 8 + %44 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %45 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %44, i32 0, i32 0 + store ptr %43, ptr %45, align 8 + %46 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %44, i32 0, i32 1 + store ptr inttoptr (i64 1 to ptr), ptr %46, align 8 + %47 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %44, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %47, ptr %38, align 8 + %48 = alloca %main.T, align 8 + %49 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %48, i64 48) + %50 = getelementptr inbounds %main.T, ptr %49, i32 0, i32 0 + %51 = getelementptr inbounds %main.T, ptr %49, i32 0, i32 1 + %52 = getelementptr inbounds %main.T, ptr %49, i32 0, i32 2 + %53 = getelementptr inbounds %main.T, ptr %49, i32 0, i32 3 + store i64 10, ptr %50, align 4 + store i64 20, ptr %51, align 4 + %54 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %55 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %54, i32 0, i32 0 + store ptr @1, ptr %55, align 8 + %56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %54, i32 0, i32 1 + store i64 5, ptr %56, align 4 + %57 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %54, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %57, ptr %52, align 8 + %58 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %59 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %58, i32 0, i32 0 + store ptr @2, ptr %59, align 8 + %60 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %58, i32 0, i32 1 + store i64 2, ptr %60, align 4 + %61 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %58, align 8 + %62 = load ptr, ptr @_llgo_string, align 8 + %63 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %61, ptr %63, align 8 + %64 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %65 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %64, i32 0, i32 0 + store ptr %62, ptr %65, align 8 + %66 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %64, i32 0, i32 1 + store ptr %63, ptr %66, align 8 + %67 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %64, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %67, ptr %53, align 8 + %68 = load ptr, ptr @_llgo_int, align 8 + %69 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %70 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %69, i32 0, i32 0 + store ptr %68, ptr %70, align 8 + %71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %69, i32 0, i32 1 + store ptr inttoptr (i64 100 to ptr), ptr %71, align 8 + %72 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %69, align 8 + %73 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %4, %"github.com/goplus/llgo/internal/runtime.eface" %72) + call void @main.assert(i1 %73) + %74 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + %75 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + store {} zeroinitializer, ptr %75, align 1 + %76 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %76, i32 0, i32 0 + store ptr %74, ptr %77, align 8 + %78 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %76, i32 0, i32 1 + store ptr %75, ptr %78, align 8 + %79 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %76, align 8 + %80 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %10, %"github.com/goplus/llgo/internal/runtime.eface" %79) + call void @main.assert(i1 %80) + %81 = load ptr, ptr @_llgo_main.N, align 8 + %82 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + store %main.N zeroinitializer, ptr %82, align 1 + %83 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i32 0, i32 0 + store ptr %81, ptr %84, align 8 + %85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i32 0, i32 1 + store ptr %82, ptr %85, align 8 + %86 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, align 8 + %87 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %10, %"github.com/goplus/llgo/internal/runtime.eface" %86) + %88 = xor i1 %87, true + call void @main.assert(i1 %88) + %89 = load %main.T, ptr %34, align 8 + %90 = load ptr, ptr @_llgo_main.T, align 8 + %91 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) + store %main.T %89, ptr %91, align 8 + %92 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %93 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %92, i32 0, i32 0 + store ptr %90, ptr %93, align 8 + %94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %92, i32 0, i32 1 + store ptr %91, ptr %94, align 8 + %95 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %92, align 8 + %96 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %32, %"github.com/goplus/llgo/internal/runtime.eface" %95) + call void @main.assert(i1 %96) + %97 = load %main.T, ptr %49, align 8 + %98 = load ptr, ptr @_llgo_main.T, align 8 + %99 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) + store %main.T %97, ptr %99, align 8 + %100 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %100, i32 0, i32 0 + store ptr %98, ptr %101, align 8 + %102 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %100, i32 0, i32 1 + store ptr %99, ptr %102, align 8 + %103 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %100, align 8 + %104 = call i1 @"github.com/goplus/llgo/internal/runtime.EfaceEqual"(%"github.com/goplus/llgo/internal/runtime.eface" %32, %"github.com/goplus/llgo/internal/runtime.eface" %103) + %105 = xor i1 %104, true + call void @main.assert(i1 %105) ret void } diff --git a/cl/_testgo/errors/out.ll b/cl/_testgo/errors/out.ll index 9aaab61e..983dc589 100644 --- a/cl/_testgo/errors/out.ll +++ b/cl/_testgo/errors/out.ll @@ -4,25 +4,19 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.iface" = type { ptr, ptr } %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %main.errorString = type { %"github.com/goplus/llgo/internal/runtime.String" } -%"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } -%"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } %"github.com/goplus/llgo/internal/abi.Imethod" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr } @"main.init$guard" = global i1 false, align 1 @"*_llgo_main.errorString" = global ptr null, align 8 -@_llgo_main.errorString = global ptr null, align 8 -@"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null, align 8 -@_llgo_string = linkonce global ptr null, align 8 -@0 = private unnamed_addr constant [1 x i8] c"s", align 1 -@1 = private unnamed_addr constant [4 x i8] c"main", align 1 -@2 = private unnamed_addr constant [5 x i8] c"Error", align 1 -@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null, align 8 -@3 = private unnamed_addr constant [11 x i8] c"errorString", align 1 @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null, align 8 +@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null, align 8 +@_llgo_string = linkonce global ptr null, align 8 +@0 = private unnamed_addr constant [5 x i8] c"Error", align 1 +@1 = private unnamed_addr constant [4 x i8] c"main", align 1 @__llgo_argc = global i32 0, align 4 @__llgo_argv = global ptr null, align 8 -@4 = private unnamed_addr constant [8 x i8] c"an error", align 1 +@2 = private unnamed_addr constant [8 x i8] c"an error", align 1 define %"github.com/goplus/llgo/internal/runtime.iface" @main.New(%"github.com/goplus/llgo/internal/runtime.String" %0) { _llgo_0: @@ -70,7 +64,7 @@ _llgo_0: call void @main.init() %2 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %3 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %2, i32 0, i32 0 - store ptr @4, ptr %3, align 8 + store ptr @2, ptr %3, align 8 %4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %2, i32 0, i32 1 store i64 8, ptr %4, align 4 %5 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %2, align 8 @@ -100,190 +94,107 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64) define void @"main.init$after"() { _llgo_0: %0 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 1) - store ptr %0, ptr @_llgo_main.errorString, align 8 - %1 = load ptr, ptr @_llgo_string, align 8 - %2 = icmp eq ptr %1, null - br i1 %2, label %_llgo_1, label %_llgo_2 + %1 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %0) + store ptr %1, ptr @"*_llgo_main.errorString", align 8 + %2 = load ptr, ptr @_llgo_string, align 8 + %3 = icmp eq ptr %2, null + br i1 %3, label %_llgo_1, label %_llgo_2 _llgo_1: ; preds = %_llgo_0 - %3 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) - store ptr %3, ptr @_llgo_string, align 8 + %4 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + store ptr %4, ptr @_llgo_string, align 8 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 - %4 = load ptr, ptr @_llgo_string, align 8 - %5 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %5, i32 0, i32 0 - store ptr @0, ptr %6, align 8 - %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %5, i32 0, i32 1 - store i64 1, ptr %7, align 4 - %8 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %5, align 8 - %9 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %9, i32 0, i32 0 - store ptr null, ptr %10, align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %9, i32 0, i32 1 - store i64 0, ptr %11, align 4 - %12 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %9, align 8 - %13 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %8, ptr %4, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %12, i1 false) - %14 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %14, i32 0, i32 0 - store ptr @1, ptr %15, align 8 - %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %14, i32 0, i32 1 - store i64 4, ptr %16, align 4 - %17 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %14, align 8 - %18 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) - %19 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %18, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %13, ptr %19, align 8 - %20 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %20, i32 0, i32 0 - store ptr %18, ptr %21, align 8 - %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %20, i32 0, i32 1 - store i64 1, ptr %22, align 4 - %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %20, i32 0, i32 2 - store i64 1, ptr %23, align 4 - %24 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %20, align 8 - %25 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %17, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %24) - store ptr %25, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8 - %26 = load ptr, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8 - %27 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %27, i32 0, i32 0 - store ptr @2, ptr %28, align 8 - %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %27, i32 0, i32 1 - store i64 5, ptr %29, align 4 - %30 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %27, align 8 - %31 = load ptr, ptr @_llgo_string, align 8 - %32 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %33 = icmp eq ptr %32, null - br i1 %33, label %_llgo_3, label %_llgo_4 + %5 = load ptr, ptr @_llgo_string, align 8 + %6 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %7 = icmp eq ptr %6, null + br i1 %7, label %_llgo_3, label %_llgo_4 _llgo_3: ; preds = %_llgo_2 - %34 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %35 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 0 - store ptr %34, ptr %36, align 8 - %37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 1 - store i64 0, ptr %37, align 4 - %38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 2 - store i64 0, ptr %38, align 4 - %39 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, align 8 - %40 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %41 = getelementptr ptr, ptr %40, i64 0 - store ptr %31, ptr %41, align 8 - %42 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, i32 0, i32 0 - store ptr %40, ptr %43, align 8 - %44 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, i32 0, i32 1 - store i64 1, ptr %44, align 4 - %45 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, i32 0, i32 2 - store i64 1, ptr %45, align 4 - %46 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, align 8 - %47 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %39, %"github.com/goplus/llgo/internal/runtime.Slice" %46, i1 false) - store ptr %47, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %8 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + %9 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %9, i32 0, i32 0 + store ptr %8, ptr %10, align 8 + %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %9, i32 0, i32 1 + store i64 0, ptr %11, align 4 + %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %9, i32 0, i32 2 + store i64 0, ptr %12, align 4 + %13 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %9, align 8 + %14 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) + %15 = getelementptr ptr, ptr %14, i64 0 + store ptr %5, ptr %15, align 8 + %16 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %16, i32 0, i32 0 + store ptr %14, ptr %17, align 8 + %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %16, i32 0, i32 1 + store i64 1, ptr %18, align 4 + %19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %16, i32 0, i32 2 + store i64 1, ptr %19, align 4 + %20 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %16, align 8 + %21 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %13, %"github.com/goplus/llgo/internal/runtime.Slice" %20, i1 false) + store ptr %21, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 br label %_llgo_4 _llgo_4: ; preds = %_llgo_3, %_llgo_2 - %48 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %49 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %50 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %49, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %30, ptr %50, align 8 - %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %49, i32 0, i32 1 - store ptr %48, ptr %51, align 8 - %52 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %49, i32 0, i32 2 - store ptr @"main.(*errorString).Error", ptr %52, align 8 - %53 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %49, i32 0, i32 3 - store ptr @"main.(*errorString).Error", ptr %53, align 8 - %54 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %49, align 8 - %55 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) - %56 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %55, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %54, ptr %56, align 8 - %57 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %58 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %57, i32 0, i32 0 - store ptr %55, ptr %58, align 8 - %59 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %57, i32 0, i32 1 - store i64 1, ptr %59, align 4 - %60 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %57, i32 0, i32 2 - store i64 1, ptr %60, align 4 - %61 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %57, align 8 - %62 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %63 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %62, i32 0, i32 0 - store ptr @1, ptr %63, align 8 - %64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %62, i32 0, i32 1 - store i64 4, ptr %64, align 4 - %65 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %62, align 8 - %66 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %67 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 0 - store ptr @3, ptr %67, align 8 - %68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 1 - store i64 11, ptr %68, align 4 - %69 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %66, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %0, %"github.com/goplus/llgo/internal/runtime.String" %65, %"github.com/goplus/llgo/internal/runtime.String" %69, ptr %26, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %61) - %70 = load ptr, ptr @_llgo_main.errorString, align 8 - %71 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %70) - store ptr %71, ptr @"*_llgo_main.errorString", align 8 - %72 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %73 = load ptr, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 - %74 = icmp eq ptr %73, null - br i1 %74, label %_llgo_5, label %_llgo_6 + %22 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %23 = load ptr, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 + %24 = icmp eq ptr %23, null + br i1 %24, label %_llgo_5, label %_llgo_6 _llgo_5: ; preds = %_llgo_4 - %75 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %76 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %75, i32 0, i32 0 - store ptr @2, ptr %76, align 8 - %77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %75, i32 0, i32 1 - store i64 5, ptr %77, align 4 - %78 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %75, align 8 - %79 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %80 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %79, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %78, ptr %80, align 8 - %81 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %79, i32 0, i32 1 - store ptr %72, ptr %81, align 8 - %82 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %79, align 8 - %83 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %84 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %83, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %82, ptr %84, align 8 - %85 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %86 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %85, i32 0, i32 0 - store ptr %83, ptr %86, align 8 - %87 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %85, i32 0, i32 1 - store i64 1, ptr %87, align 4 - %88 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %85, i32 0, i32 2 - store i64 1, ptr %88, align 4 - %89 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %85, align 8 - %90 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %91 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %90, i32 0, i32 0 - store ptr @1, ptr %91, align 8 - %92 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %90, i32 0, i32 1 - store i64 4, ptr %92, align 4 - %93 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %90, align 8 - %94 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %95 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %94, i32 0, i32 0 - store ptr null, ptr %95, align 8 - %96 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %94, i32 0, i32 1 - store i64 0, ptr %96, align 4 - %97 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %94, align 8 - %98 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %93, %"github.com/goplus/llgo/internal/runtime.String" %97, %"github.com/goplus/llgo/internal/runtime.Slice" %89) - store ptr %98, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 + %25 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %25, i32 0, i32 0 + store ptr @0, ptr %26, align 8 + %27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %25, i32 0, i32 1 + store i64 5, ptr %27, align 4 + %28 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %25, align 8 + %29 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %29, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %28, ptr %30, align 8 + %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %29, i32 0, i32 1 + store ptr %22, ptr %31, align 8 + %32 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %29, align 8 + %33 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %34 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %33, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %32, ptr %34, align 8 + %35 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 0 + store ptr %33, ptr %36, align 8 + %37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 1 + store i64 1, ptr %37, align 4 + %38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 2 + store i64 1, ptr %38, align 4 + %39 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, align 8 + %40 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %40, i32 0, i32 0 + store ptr @1, ptr %41, align 8 + %42 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %40, i32 0, i32 1 + store i64 4, ptr %42, align 4 + %43 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %40, align 8 + %44 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %45 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %44, i32 0, i32 0 + store ptr null, ptr %45, align 8 + %46 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %44, i32 0, i32 1 + store i64 0, ptr %46, align 4 + %47 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %44, align 8 + %48 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %43, %"github.com/goplus/llgo/internal/runtime.String" %47, %"github.com/goplus/llgo/internal/runtime.Slice" %39) + store ptr %48, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 br label %_llgo_6 _llgo_6: ; preds = %_llgo_5, %_llgo_4 ret void } +declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) + declare ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64, i64, i64) declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) -declare ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String", i64, %"github.com/goplus/llgo/internal/runtime.Slice") - -declare %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1) - -declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) - -declare void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr, %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", ptr, %"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice") - declare ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice", i1) -declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) +declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") diff --git a/cl/_testgo/ifaceprom/out.ll b/cl/_testgo/ifaceprom/out.ll index dbdfef0e..b284f78f 100644 --- a/cl/_testgo/ifaceprom/out.ll +++ b/cl/_testgo/ifaceprom/out.ll @@ -5,9 +5,9 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.iface" = type { ptr, ptr } %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %main.impl = type {} -%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } +%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } %"github.com/goplus/llgo/internal/abi.Imethod" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } @@ -204,422 +204,406 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 %27 = load ptr, ptr @_llgo_int, align 8 - %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %27, i32 0, i32 6 - %29 = load i8, ptr %28, align 1 - %30 = or i8 %29, 32 - store i8 %30, ptr %28, align 1 - %31 = inttoptr i64 %25 to ptr - %32 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %32, i32 0, i32 0 - store ptr %27, ptr %33, align 8 - %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %32, i32 0, i32 1 - store ptr %31, ptr %34, align 8 - %35 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %32, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %35) + %28 = inttoptr i64 %25 to ptr + %29 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %29, i32 0, i32 0 + store ptr %27, ptr %30, align 8 + %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %29, i32 0, i32 1 + store ptr %28, ptr %31, align 8 + %32 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %29, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %32) unreachable _llgo_2: ; preds = %_llgo_0 - %36 = load %main.S, ptr %3, align 8 - %37 = extractvalue %main.S %36, 0 - %38 = call ptr @"github.com/goplus/llgo/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/internal/runtime.iface" %37) - %39 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %37, 0 - %40 = getelementptr ptr, ptr %39, i64 3 - %41 = load ptr, ptr %40, align 8 - %42 = alloca { ptr, ptr }, align 8 - %43 = getelementptr inbounds { ptr, ptr }, ptr %42, i32 0, i32 0 - store ptr %41, ptr %43, align 8 - %44 = getelementptr inbounds { ptr, ptr }, ptr %42, i32 0, i32 1 - store ptr %38, ptr %44, align 8 - %45 = load { ptr, ptr }, ptr %42, align 8 - %46 = extractvalue { ptr, ptr } %45, 1 - %47 = extractvalue { ptr, ptr } %45, 0 - %48 = call i64 %47(ptr %46) - %49 = icmp ne i64 %48, 1 - br i1 %49, label %_llgo_3, label %_llgo_4 + %33 = load %main.S, ptr %3, align 8 + %34 = extractvalue %main.S %33, 0 + %35 = call ptr @"github.com/goplus/llgo/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/internal/runtime.iface" %34) + %36 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %34, 0 + %37 = getelementptr ptr, ptr %36, i64 3 + %38 = load ptr, ptr %37, align 8 + %39 = alloca { ptr, ptr }, align 8 + %40 = getelementptr inbounds { ptr, ptr }, ptr %39, i32 0, i32 0 + store ptr %38, ptr %40, align 8 + %41 = getelementptr inbounds { ptr, ptr }, ptr %39, i32 0, i32 1 + store ptr %35, ptr %41, align 8 + %42 = load { ptr, ptr }, ptr %39, align 8 + %43 = extractvalue { ptr, ptr } %42, 1 + %44 = extractvalue { ptr, ptr } %42, 0 + %45 = call i64 %44(ptr %43) + %46 = icmp ne i64 %45, 1 + br i1 %46, label %_llgo_3, label %_llgo_4 _llgo_3: ; preds = %_llgo_2 - %50 = load ptr, ptr @_llgo_int, align 8 - %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %50, i32 0, i32 6 - %52 = load i8, ptr %51, align 1 - %53 = or i8 %52, 32 - store i8 %53, ptr %51, align 1 - %54 = inttoptr i64 %48 to ptr - %55 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %55, i32 0, i32 0 - store ptr %50, ptr %56, align 8 - %57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %55, i32 0, i32 1 - store ptr %54, ptr %57, align 8 - %58 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %55, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %58) + %47 = load ptr, ptr @_llgo_int, align 8 + %48 = inttoptr i64 %45 to ptr + %49 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %50 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %49, i32 0, i32 0 + store ptr %47, ptr %50, align 8 + %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %49, i32 0, i32 1 + store ptr %48, ptr %51, align 8 + %52 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %49, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %52) unreachable _llgo_4: ; preds = %_llgo_2 - %59 = getelementptr inbounds %main.S, ptr %3, i32 0, i32 0 - %60 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %59, align 8 - %61 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %60) - %62 = load ptr, ptr @_llgo_main.I, align 8 - %63 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %62, ptr %61) - br i1 %63, label %_llgo_17, label %_llgo_18 + %53 = getelementptr inbounds %main.S, ptr %3, i32 0, i32 0 + %54 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %53, align 8 + %55 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %54) + %56 = load ptr, ptr @_llgo_main.I, align 8 + %57 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %56, ptr %55) + br i1 %57, label %_llgo_17, label %_llgo_18 _llgo_5: ; preds = %_llgo_17 - %64 = load ptr, ptr @_llgo_int, align 8 - %65 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %64, i32 0, i32 6 - %66 = load i8, ptr %65, align 1 - %67 = or i8 %66, 32 - store i8 %67, ptr %65, align 1 - %68 = inttoptr i64 %178 to ptr - %69 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %70 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %69, i32 0, i32 0 - store ptr %64, ptr %70, align 8 - %71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %69, i32 0, i32 1 - store ptr %68, ptr %71, align 8 - %72 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %69, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %72) + %58 = load ptr, ptr @_llgo_int, align 8 + %59 = inttoptr i64 %166 to ptr + %60 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %61 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %60, i32 0, i32 0 + store ptr %58, ptr %61, align 8 + %62 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %60, i32 0, i32 1 + store ptr %59, ptr %62, align 8 + %63 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %60, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %63) unreachable _llgo_6: ; preds = %_llgo_17 - %73 = load %main.S, ptr %3, align 8 - %74 = extractvalue %main.S %73, 0 - %75 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %74) - %76 = load ptr, ptr @_llgo_main.I, align 8 - %77 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %76, ptr %75) - br i1 %77, label %_llgo_19, label %_llgo_20 + %64 = load %main.S, ptr %3, align 8 + %65 = extractvalue %main.S %64, 0 + %66 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %65) + %67 = load ptr, ptr @_llgo_main.I, align 8 + %68 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %67, ptr %66) + br i1 %68, label %_llgo_19, label %_llgo_20 _llgo_7: ; preds = %_llgo_19 - %78 = load ptr, ptr @_llgo_int, align 8 - %79 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %78, i32 0, i32 6 - %80 = load i8, ptr %79, align 1 - %81 = or i8 %80, 32 - store i8 %81, ptr %79, align 1 - %82 = inttoptr i64 %205 to ptr - %83 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i32 0, i32 0 - store ptr %78, ptr %84, align 8 - %85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, i32 0, i32 1 - store ptr %82, ptr %85, align 8 - %86 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %83, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %86) + %69 = load ptr, ptr @_llgo_int, align 8 + %70 = inttoptr i64 %193 to ptr + %71 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %71, i32 0, i32 0 + store ptr %69, ptr %72, align 8 + %73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %71, i32 0, i32 1 + store ptr %70, ptr %73, align 8 + %74 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %71, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %74) unreachable _llgo_8: ; preds = %_llgo_19 - %87 = getelementptr inbounds %main.S, ptr %3, i32 0, i32 0 - %88 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %87, align 8 - %89 = call ptr @"github.com/goplus/llgo/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/internal/runtime.iface" %88) - %90 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %88, 0 - %91 = getelementptr ptr, ptr %90, i64 4 - %92 = load ptr, ptr %91, align 8 - %93 = alloca { ptr, ptr }, align 8 - %94 = getelementptr inbounds { ptr, ptr }, ptr %93, i32 0, i32 0 - store ptr %92, ptr %94, align 8 - %95 = getelementptr inbounds { ptr, ptr }, ptr %93, i32 0, i32 1 - store ptr %89, ptr %95, align 8 - %96 = load { ptr, ptr }, ptr %93, align 8 - %97 = extractvalue { ptr, ptr } %96, 1 - %98 = extractvalue { ptr, ptr } %96, 0 - %99 = call %"github.com/goplus/llgo/internal/runtime.String" %98(ptr %97) - %100 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %100, i32 0, i32 0 - store ptr @0, ptr %101, align 8 - %102 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %100, i32 0, i32 1 - store i64 3, ptr %102, align 4 - %103 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %100, align 8 - %104 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %99, %"github.com/goplus/llgo/internal/runtime.String" %103) - %105 = xor i1 %104, true - br i1 %105, label %_llgo_9, label %_llgo_10 + %75 = getelementptr inbounds %main.S, ptr %3, i32 0, i32 0 + %76 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %75, align 8 + %77 = call ptr @"github.com/goplus/llgo/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/internal/runtime.iface" %76) + %78 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %76, 0 + %79 = getelementptr ptr, ptr %78, i64 4 + %80 = load ptr, ptr %79, align 8 + %81 = alloca { ptr, ptr }, align 8 + %82 = getelementptr inbounds { ptr, ptr }, ptr %81, i32 0, i32 0 + store ptr %80, ptr %82, align 8 + %83 = getelementptr inbounds { ptr, ptr }, ptr %81, i32 0, i32 1 + store ptr %77, ptr %83, align 8 + %84 = load { ptr, ptr }, ptr %81, align 8 + %85 = extractvalue { ptr, ptr } %84, 1 + %86 = extractvalue { ptr, ptr } %84, 0 + %87 = call %"github.com/goplus/llgo/internal/runtime.String" %86(ptr %85) + %88 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %89 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %88, i32 0, i32 0 + store ptr @0, ptr %89, align 8 + %90 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %88, i32 0, i32 1 + store i64 3, ptr %90, align 4 + %91 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %88, align 8 + %92 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %87, %"github.com/goplus/llgo/internal/runtime.String" %91) + %93 = xor i1 %92, true + br i1 %93, label %_llgo_9, label %_llgo_10 _llgo_9: ; preds = %_llgo_8 - %106 = load ptr, ptr @_llgo_string, align 8 - %107 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %99, ptr %107, align 8 - %108 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %109 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %108, i32 0, i32 0 - store ptr %106, ptr %109, align 8 - %110 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %108, i32 0, i32 1 - store ptr %107, ptr %110, align 8 - %111 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %108, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %111) + %94 = load ptr, ptr @_llgo_string, align 8 + %95 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %87, ptr %95, align 8 + %96 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %97 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %96, i32 0, i32 0 + store ptr %94, ptr %97, align 8 + %98 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %96, i32 0, i32 1 + store ptr %95, ptr %98, align 8 + %99 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %96, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %99) unreachable _llgo_10: ; preds = %_llgo_8 - %112 = load %main.S, ptr %3, align 8 - %113 = extractvalue %main.S %112, 0 - %114 = call ptr @"github.com/goplus/llgo/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/internal/runtime.iface" %113) - %115 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %113, 0 - %116 = getelementptr ptr, ptr %115, i64 4 - %117 = load ptr, ptr %116, align 8 - %118 = alloca { ptr, ptr }, align 8 - %119 = getelementptr inbounds { ptr, ptr }, ptr %118, i32 0, i32 0 - store ptr %117, ptr %119, align 8 - %120 = getelementptr inbounds { ptr, ptr }, ptr %118, i32 0, i32 1 - store ptr %114, ptr %120, align 8 - %121 = load { ptr, ptr }, ptr %118, align 8 - %122 = extractvalue { ptr, ptr } %121, 1 - %123 = extractvalue { ptr, ptr } %121, 0 - %124 = call %"github.com/goplus/llgo/internal/runtime.String" %123(ptr %122) - %125 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %126 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %125, i32 0, i32 0 - store ptr @0, ptr %126, align 8 - %127 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %125, i32 0, i32 1 - store i64 3, ptr %127, align 4 - %128 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %125, align 8 - %129 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %124, %"github.com/goplus/llgo/internal/runtime.String" %128) - %130 = xor i1 %129, true - br i1 %130, label %_llgo_11, label %_llgo_12 + %100 = load %main.S, ptr %3, align 8 + %101 = extractvalue %main.S %100, 0 + %102 = call ptr @"github.com/goplus/llgo/internal/runtime.IfacePtrData"(%"github.com/goplus/llgo/internal/runtime.iface" %101) + %103 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %101, 0 + %104 = getelementptr ptr, ptr %103, i64 4 + %105 = load ptr, ptr %104, align 8 + %106 = alloca { ptr, ptr }, align 8 + %107 = getelementptr inbounds { ptr, ptr }, ptr %106, i32 0, i32 0 + store ptr %105, ptr %107, align 8 + %108 = getelementptr inbounds { ptr, ptr }, ptr %106, i32 0, i32 1 + store ptr %102, ptr %108, align 8 + %109 = load { ptr, ptr }, ptr %106, align 8 + %110 = extractvalue { ptr, ptr } %109, 1 + %111 = extractvalue { ptr, ptr } %109, 0 + %112 = call %"github.com/goplus/llgo/internal/runtime.String" %111(ptr %110) + %113 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %114 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %113, i32 0, i32 0 + store ptr @0, ptr %114, align 8 + %115 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %113, i32 0, i32 1 + store i64 3, ptr %115, align 4 + %116 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %113, align 8 + %117 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %112, %"github.com/goplus/llgo/internal/runtime.String" %116) + %118 = xor i1 %117, true + br i1 %118, label %_llgo_11, label %_llgo_12 _llgo_11: ; preds = %_llgo_10 - %131 = load ptr, ptr @_llgo_string, align 8 - %132 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %124, ptr %132, align 8 - %133 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %133, i32 0, i32 0 - store ptr %131, ptr %134, align 8 - %135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %133, i32 0, i32 1 - store ptr %132, ptr %135, align 8 - %136 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %133, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %136) + %119 = load ptr, ptr @_llgo_string, align 8 + %120 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %112, ptr %120, align 8 + %121 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %122 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %121, i32 0, i32 0 + store ptr %119, ptr %122, align 8 + %123 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %121, i32 0, i32 1 + store ptr %120, ptr %123, align 8 + %124 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %121, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %124) unreachable _llgo_12: ; preds = %_llgo_10 - %137 = getelementptr inbounds %main.S, ptr %3, i32 0, i32 0 - %138 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %137, align 8 - %139 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %138) - %140 = load ptr, ptr @_llgo_main.I, align 8 - %141 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %140, ptr %139) - br i1 %141, label %_llgo_21, label %_llgo_22 + %125 = getelementptr inbounds %main.S, ptr %3, i32 0, i32 0 + %126 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %125, align 8 + %127 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %126) + %128 = load ptr, ptr @_llgo_main.I, align 8 + %129 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %128, ptr %127) + br i1 %129, label %_llgo_21, label %_llgo_22 _llgo_13: ; preds = %_llgo_21 - %142 = load ptr, ptr @_llgo_string, align 8 - %143 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %232, ptr %143, align 8 - %144 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %145 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %144, i32 0, i32 0 - store ptr %142, ptr %145, align 8 - %146 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %144, i32 0, i32 1 - store ptr %143, ptr %146, align 8 - %147 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %144, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %147) + %130 = load ptr, ptr @_llgo_string, align 8 + %131 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %220, ptr %131, align 8 + %132 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %133 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %132, i32 0, i32 0 + store ptr %130, ptr %133, align 8 + %134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %132, i32 0, i32 1 + store ptr %131, ptr %134, align 8 + %135 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %132, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %135) unreachable _llgo_14: ; preds = %_llgo_21 - %148 = load %main.S, ptr %3, align 8 - %149 = extractvalue %main.S %148, 0 - %150 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %149) - %151 = load ptr, ptr @_llgo_main.I, align 8 - %152 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %151, ptr %150) - br i1 %152, label %_llgo_23, label %_llgo_24 + %136 = load %main.S, ptr %3, align 8 + %137 = extractvalue %main.S %136, 0 + %138 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %137) + %139 = load ptr, ptr @_llgo_main.I, align 8 + %140 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %139, ptr %138) + br i1 %140, label %_llgo_23, label %_llgo_24 _llgo_15: ; preds = %_llgo_23 - %153 = load ptr, ptr @_llgo_string, align 8 - %154 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %264, ptr %154, align 8 - %155 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %156 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %155, i32 0, i32 0 - store ptr %153, ptr %156, align 8 - %157 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %155, i32 0, i32 1 - store ptr %154, ptr %157, align 8 - %158 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %155, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %158) + %141 = load ptr, ptr @_llgo_string, align 8 + %142 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %252, ptr %142, align 8 + %143 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %144 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %143, i32 0, i32 0 + store ptr %141, ptr %144, align 8 + %145 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %143, i32 0, i32 1 + store ptr %142, ptr %145, align 8 + %146 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %143, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %146) unreachable _llgo_16: ; preds = %_llgo_23 - %159 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %160 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %159, i32 0, i32 0 - store ptr @8, ptr %160, align 8 - %161 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %159, i32 0, i32 1 - store i64 4, ptr %161, align 4 - %162 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %159, align 8 - call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %162) + %147 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %148 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %147, i32 0, i32 0 + store ptr @8, ptr %148, align 8 + %149 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %147, i32 0, i32 1 + store i64 4, ptr %149, align 4 + %150 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %147, align 8 + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %150) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) ret i32 0 _llgo_17: ; preds = %_llgo_4 - %163 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %60, 1 - %164 = load ptr, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 - %165 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %164, ptr %61) - %166 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %167 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %166, i32 0, i32 0 - store ptr %165, ptr %167, align 8 - %168 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %166, i32 0, i32 1 - store ptr %163, ptr %168, align 8 - %169 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %166, align 8 - %170 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %171 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.iface" }, ptr %170, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.iface" %60, ptr %171, align 8 - %172 = alloca { ptr, ptr }, align 8 - %173 = getelementptr inbounds { ptr, ptr }, ptr %172, i32 0, i32 0 - store ptr @"main.one$bound", ptr %173, align 8 - %174 = getelementptr inbounds { ptr, ptr }, ptr %172, i32 0, i32 1 - store ptr %170, ptr %174, align 8 - %175 = load { ptr, ptr }, ptr %172, align 8 - %176 = extractvalue { ptr, ptr } %175, 1 - %177 = extractvalue { ptr, ptr } %175, 0 - %178 = call i64 %177(ptr %176) - %179 = icmp ne i64 %178, 1 - br i1 %179, label %_llgo_5, label %_llgo_6 + %151 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %54, 1 + %152 = load ptr, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 + %153 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %152, ptr %55) + %154 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %155 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %154, i32 0, i32 0 + store ptr %153, ptr %155, align 8 + %156 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %154, i32 0, i32 1 + store ptr %151, ptr %156, align 8 + %157 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %154, align 8 + %158 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + %159 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.iface" }, ptr %158, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.iface" %54, ptr %159, align 8 + %160 = alloca { ptr, ptr }, align 8 + %161 = getelementptr inbounds { ptr, ptr }, ptr %160, i32 0, i32 0 + store ptr @"main.one$bound", ptr %161, align 8 + %162 = getelementptr inbounds { ptr, ptr }, ptr %160, i32 0, i32 1 + store ptr %158, ptr %162, align 8 + %163 = load { ptr, ptr }, ptr %160, align 8 + %164 = extractvalue { ptr, ptr } %163, 1 + %165 = extractvalue { ptr, ptr } %163, 0 + %166 = call i64 %165(ptr %164) + %167 = icmp ne i64 %166, 1 + br i1 %167, label %_llgo_5, label %_llgo_6 _llgo_18: ; preds = %_llgo_4 - %180 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %181 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %180, i32 0, i32 0 - store ptr @7, ptr %181, align 8 - %182 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %180, i32 0, i32 1 - store i64 21, ptr %182, align 4 - %183 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %180, align 8 - %184 = load ptr, ptr @_llgo_string, align 8 - %185 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %183, ptr %185, align 8 - %186 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %187 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %186, i32 0, i32 0 - store ptr %184, ptr %187, align 8 - %188 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %186, i32 0, i32 1 - store ptr %185, ptr %188, align 8 - %189 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %186, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %189) + %168 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %169 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %168, i32 0, i32 0 + store ptr @7, ptr %169, align 8 + %170 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %168, i32 0, i32 1 + store i64 21, ptr %170, align 4 + %171 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %168, align 8 + %172 = load ptr, ptr @_llgo_string, align 8 + %173 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %171, ptr %173, align 8 + %174 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %175 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %174, i32 0, i32 0 + store ptr %172, ptr %175, align 8 + %176 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %174, i32 0, i32 1 + store ptr %173, ptr %176, align 8 + %177 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %174, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %177) unreachable _llgo_19: ; preds = %_llgo_6 - %190 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %74, 1 - %191 = load ptr, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 - %192 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %191, ptr %75) - %193 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %194 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %193, i32 0, i32 0 - store ptr %192, ptr %194, align 8 - %195 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %193, i32 0, i32 1 - store ptr %190, ptr %195, align 8 - %196 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %193, align 8 - %197 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %198 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.iface" }, ptr %197, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.iface" %74, ptr %198, align 8 - %199 = alloca { ptr, ptr }, align 8 - %200 = getelementptr inbounds { ptr, ptr }, ptr %199, i32 0, i32 0 - store ptr @"main.one$bound", ptr %200, align 8 - %201 = getelementptr inbounds { ptr, ptr }, ptr %199, i32 0, i32 1 - store ptr %197, ptr %201, align 8 - %202 = load { ptr, ptr }, ptr %199, align 8 - %203 = extractvalue { ptr, ptr } %202, 1 - %204 = extractvalue { ptr, ptr } %202, 0 - %205 = call i64 %204(ptr %203) - %206 = icmp ne i64 %205, 1 - br i1 %206, label %_llgo_7, label %_llgo_8 + %178 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %65, 1 + %179 = load ptr, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 + %180 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %179, ptr %66) + %181 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %182 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %181, i32 0, i32 0 + store ptr %180, ptr %182, align 8 + %183 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %181, i32 0, i32 1 + store ptr %178, ptr %183, align 8 + %184 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %181, align 8 + %185 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + %186 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.iface" }, ptr %185, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.iface" %65, ptr %186, align 8 + %187 = alloca { ptr, ptr }, align 8 + %188 = getelementptr inbounds { ptr, ptr }, ptr %187, i32 0, i32 0 + store ptr @"main.one$bound", ptr %188, align 8 + %189 = getelementptr inbounds { ptr, ptr }, ptr %187, i32 0, i32 1 + store ptr %185, ptr %189, align 8 + %190 = load { ptr, ptr }, ptr %187, align 8 + %191 = extractvalue { ptr, ptr } %190, 1 + %192 = extractvalue { ptr, ptr } %190, 0 + %193 = call i64 %192(ptr %191) + %194 = icmp ne i64 %193, 1 + br i1 %194, label %_llgo_7, label %_llgo_8 _llgo_20: ; preds = %_llgo_6 - %207 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %208 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %207, i32 0, i32 0 - store ptr @7, ptr %208, align 8 - %209 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %207, i32 0, i32 1 - store i64 21, ptr %209, align 4 - %210 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %207, align 8 - %211 = load ptr, ptr @_llgo_string, align 8 - %212 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %210, ptr %212, align 8 - %213 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %214 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %213, i32 0, i32 0 - store ptr %211, ptr %214, align 8 - %215 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %213, i32 0, i32 1 - store ptr %212, ptr %215, align 8 - %216 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %213, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %216) + %195 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %196 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %195, i32 0, i32 0 + store ptr @7, ptr %196, align 8 + %197 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %195, i32 0, i32 1 + store i64 21, ptr %197, align 4 + %198 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %195, align 8 + %199 = load ptr, ptr @_llgo_string, align 8 + %200 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %198, ptr %200, align 8 + %201 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %202 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %201, i32 0, i32 0 + store ptr %199, ptr %202, align 8 + %203 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %201, i32 0, i32 1 + store ptr %200, ptr %203, align 8 + %204 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %201, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %204) unreachable _llgo_21: ; preds = %_llgo_12 - %217 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %138, 1 - %218 = load ptr, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 - %219 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %218, ptr %139) - %220 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %221 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %220, i32 0, i32 0 - store ptr %219, ptr %221, align 8 - %222 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %220, i32 0, i32 1 - store ptr %217, ptr %222, align 8 - %223 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %220, align 8 - %224 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %225 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.iface" }, ptr %224, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.iface" %138, ptr %225, align 8 - %226 = alloca { ptr, ptr }, align 8 - %227 = getelementptr inbounds { ptr, ptr }, ptr %226, i32 0, i32 0 - store ptr @"main.two$bound", ptr %227, align 8 - %228 = getelementptr inbounds { ptr, ptr }, ptr %226, i32 0, i32 1 - store ptr %224, ptr %228, align 8 - %229 = load { ptr, ptr }, ptr %226, align 8 - %230 = extractvalue { ptr, ptr } %229, 1 - %231 = extractvalue { ptr, ptr } %229, 0 - %232 = call %"github.com/goplus/llgo/internal/runtime.String" %231(ptr %230) - %233 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %234 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %233, i32 0, i32 0 - store ptr @0, ptr %234, align 8 - %235 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %233, i32 0, i32 1 - store i64 3, ptr %235, align 4 - %236 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %233, align 8 - %237 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %232, %"github.com/goplus/llgo/internal/runtime.String" %236) - %238 = xor i1 %237, true - br i1 %238, label %_llgo_13, label %_llgo_14 + %205 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %126, 1 + %206 = load ptr, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 + %207 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %206, ptr %127) + %208 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %209 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %208, i32 0, i32 0 + store ptr %207, ptr %209, align 8 + %210 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %208, i32 0, i32 1 + store ptr %205, ptr %210, align 8 + %211 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %208, align 8 + %212 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + %213 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.iface" }, ptr %212, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.iface" %126, ptr %213, align 8 + %214 = alloca { ptr, ptr }, align 8 + %215 = getelementptr inbounds { ptr, ptr }, ptr %214, i32 0, i32 0 + store ptr @"main.two$bound", ptr %215, align 8 + %216 = getelementptr inbounds { ptr, ptr }, ptr %214, i32 0, i32 1 + store ptr %212, ptr %216, align 8 + %217 = load { ptr, ptr }, ptr %214, align 8 + %218 = extractvalue { ptr, ptr } %217, 1 + %219 = extractvalue { ptr, ptr } %217, 0 + %220 = call %"github.com/goplus/llgo/internal/runtime.String" %219(ptr %218) + %221 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %222 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %221, i32 0, i32 0 + store ptr @0, ptr %222, align 8 + %223 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %221, i32 0, i32 1 + store i64 3, ptr %223, align 4 + %224 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %221, align 8 + %225 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %220, %"github.com/goplus/llgo/internal/runtime.String" %224) + %226 = xor i1 %225, true + br i1 %226, label %_llgo_13, label %_llgo_14 _llgo_22: ; preds = %_llgo_12 - %239 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %240 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %239, i32 0, i32 0 - store ptr @7, ptr %240, align 8 - %241 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %239, i32 0, i32 1 - store i64 21, ptr %241, align 4 - %242 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %239, align 8 - %243 = load ptr, ptr @_llgo_string, align 8 - %244 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %242, ptr %244, align 8 - %245 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %246 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %245, i32 0, i32 0 - store ptr %243, ptr %246, align 8 - %247 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %245, i32 0, i32 1 - store ptr %244, ptr %247, align 8 - %248 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %245, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %248) + %227 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %228 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %227, i32 0, i32 0 + store ptr @7, ptr %228, align 8 + %229 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %227, i32 0, i32 1 + store i64 21, ptr %229, align 4 + %230 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %227, align 8 + %231 = load ptr, ptr @_llgo_string, align 8 + %232 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %230, ptr %232, align 8 + %233 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %234 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %233, i32 0, i32 0 + store ptr %231, ptr %234, align 8 + %235 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %233, i32 0, i32 1 + store ptr %232, ptr %235, align 8 + %236 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %233, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %236) unreachable _llgo_23: ; preds = %_llgo_14 - %249 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %149, 1 - %250 = load ptr, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 - %251 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %250, ptr %150) - %252 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %253 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %252, i32 0, i32 0 - store ptr %251, ptr %253, align 8 - %254 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %252, i32 0, i32 1 - store ptr %249, ptr %254, align 8 - %255 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %252, align 8 - %256 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %257 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.iface" }, ptr %256, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.iface" %149, ptr %257, align 8 - %258 = alloca { ptr, ptr }, align 8 - %259 = getelementptr inbounds { ptr, ptr }, ptr %258, i32 0, i32 0 - store ptr @"main.two$bound", ptr %259, align 8 - %260 = getelementptr inbounds { ptr, ptr }, ptr %258, i32 0, i32 1 - store ptr %256, ptr %260, align 8 - %261 = load { ptr, ptr }, ptr %258, align 8 - %262 = extractvalue { ptr, ptr } %261, 1 - %263 = extractvalue { ptr, ptr } %261, 0 - %264 = call %"github.com/goplus/llgo/internal/runtime.String" %263(ptr %262) - %265 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %266 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %265, i32 0, i32 0 - store ptr @0, ptr %266, align 8 - %267 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %265, i32 0, i32 1 - store i64 3, ptr %267, align 4 - %268 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %265, align 8 - %269 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %264, %"github.com/goplus/llgo/internal/runtime.String" %268) - %270 = xor i1 %269, true - br i1 %270, label %_llgo_15, label %_llgo_16 + %237 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %137, 1 + %238 = load ptr, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 + %239 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %238, ptr %138) + %240 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %241 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %240, i32 0, i32 0 + store ptr %239, ptr %241, align 8 + %242 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %240, i32 0, i32 1 + store ptr %237, ptr %242, align 8 + %243 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %240, align 8 + %244 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + %245 = getelementptr inbounds { %"github.com/goplus/llgo/internal/runtime.iface" }, ptr %244, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.iface" %137, ptr %245, align 8 + %246 = alloca { ptr, ptr }, align 8 + %247 = getelementptr inbounds { ptr, ptr }, ptr %246, i32 0, i32 0 + store ptr @"main.two$bound", ptr %247, align 8 + %248 = getelementptr inbounds { ptr, ptr }, ptr %246, i32 0, i32 1 + store ptr %244, ptr %248, align 8 + %249 = load { ptr, ptr }, ptr %246, align 8 + %250 = extractvalue { ptr, ptr } %249, 1 + %251 = extractvalue { ptr, ptr } %249, 0 + %252 = call %"github.com/goplus/llgo/internal/runtime.String" %251(ptr %250) + %253 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %254 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %253, i32 0, i32 0 + store ptr @0, ptr %254, align 8 + %255 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %253, i32 0, i32 1 + store i64 3, ptr %255, align 4 + %256 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %253, align 8 + %257 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %252, %"github.com/goplus/llgo/internal/runtime.String" %256) + %258 = xor i1 %257, true + br i1 %258, label %_llgo_15, label %_llgo_16 _llgo_24: ; preds = %_llgo_14 - %271 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %272 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %271, i32 0, i32 0 - store ptr @7, ptr %272, align 8 - %273 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %271, i32 0, i32 1 - store i64 21, ptr %273, align 4 - %274 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %271, align 8 - %275 = load ptr, ptr @_llgo_string, align 8 - %276 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %274, ptr %276, align 8 - %277 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %278 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %277, i32 0, i32 0 - store ptr %275, ptr %278, align 8 - %279 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %277, i32 0, i32 1 - store ptr %276, ptr %279, align 8 - %280 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %277, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %280) + %259 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %260 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %259, i32 0, i32 0 + store ptr @7, ptr %260, align 8 + %261 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %259, i32 0, i32 1 + store i64 21, ptr %261, align 4 + %262 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %259, align 8 + %263 = load ptr, ptr @_llgo_string, align 8 + %264 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %262, ptr %264, align 8 + %265 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %266 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %265, i32 0, i32 0 + store ptr %263, ptr %266, align 8 + %267 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %265, i32 0, i32 1 + store ptr %264, ptr %267, align 8 + %268 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %265, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %268) unreachable } diff --git a/cl/_testgo/interface/out.ll b/cl/_testgo/interface/out.ll index 6c164964..2a13548f 100644 --- a/cl/_testgo/interface/out.ll +++ b/cl/_testgo/interface/out.ll @@ -6,36 +6,23 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.iface" = type { ptr, ptr } %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } -%"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } -%"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } %"github.com/goplus/llgo/internal/abi.Imethod" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr } @"main.init$guard" = global i1 false, align 1 @__llgo_argc = global i32 0, align 4 @__llgo_argv = global ptr null, align 8 @"*_llgo_main.Game1" = linkonce global ptr null, align 8 -@_llgo_main.Game1 = linkonce global ptr null, align 8 -@"_llgo_struct$cJmCzeVn0orHWafCrTGAnbbAF46F2A4Fms4bJBm8ITI" = linkonce global ptr null, align 8 -@"*_llgo_github.com/goplus/llgo/cl/internal/foo.Game" = linkonce global ptr null, align 8 -@"_llgo_github.com/goplus/llgo/cl/internal/foo.Game" = linkonce global ptr null, align 8 -@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null, align 8 -@0 = private unnamed_addr constant [4 x i8] c"main", align 1 -@1 = private unnamed_addr constant [4 x i8] c"Load", align 1 -@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null, align 8 -@2 = private unnamed_addr constant [8 x i8] c"initGame", align 1 -@3 = private unnamed_addr constant [47 x i8] c"github.com/goplus/llgo/cl/internal/foo.initGame", align 1 -@4 = private unnamed_addr constant [38 x i8] c"github.com/goplus/llgo/cl/internal/foo", align 1 -@5 = private unnamed_addr constant [4 x i8] c"Game", align 1 -@6 = private unnamed_addr constant [5 x i8] c"Game1", align 1 @"*_llgo_main.Game2" = linkonce global ptr null, align 8 -@_llgo_main.Game2 = linkonce global ptr null, align 8 -@7 = private unnamed_addr constant [13 x i8] c"main.initGame", align 1 -@8 = private unnamed_addr constant [5 x i8] c"Game2", align 1 @"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer" = linkonce global ptr null, align 8 -@9 = private unnamed_addr constant [44 x i8] c"github.com/goplus/llgo/cl/internal/foo.Gamer", align 1 +@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null, align 8 +@0 = private unnamed_addr constant [4 x i8] c"Load", align 1 +@1 = private unnamed_addr constant [47 x i8] c"github.com/goplus/llgo/cl/internal/foo.initGame", align 1 +@2 = private unnamed_addr constant [38 x i8] c"github.com/goplus/llgo/cl/internal/foo", align 1 +@3 = private unnamed_addr constant [44 x i8] c"github.com/goplus/llgo/cl/internal/foo.Gamer", align 1 @"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg" = global ptr null, align 8 -@10 = private unnamed_addr constant [2 x i8] c"OK", align 1 -@11 = private unnamed_addr constant [4 x i8] c"FAIL", align 1 +@4 = private unnamed_addr constant [4 x i8] c"main", align 1 +@5 = private unnamed_addr constant [2 x i8] c"OK", align 1 +@6 = private unnamed_addr constant [4 x i8] c"FAIL", align 1 define void @main.Game1.Load(%main.Game1 %0) { _llgo_0: @@ -180,7 +167,7 @@ _llgo_5: ; preds = %_llgo_4, %_llgo_3 %49 = extractvalue { %"github.com/goplus/llgo/internal/runtime.iface", i1 } %47, 1 %50 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %50, i32 0, i32 0 - store ptr @10, ptr %51, align 8 + store ptr @5, ptr %51, align 8 %52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %50, i32 0, i32 1 store i64 2, ptr %52, align 4 %53 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %50, align 8 @@ -225,7 +212,7 @@ _llgo_8: ; preds = %_llgo_7, %_llgo_6 %71 = extractvalue { %"github.com/goplus/llgo/internal/runtime.iface", i1 } %69, 1 %72 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 0 - store ptr @11, ptr %73, align 8 + store ptr @6, ptr %73, align 8 %74 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 1 store i64 4, ptr %74, align 4 %75 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %72, align 8 @@ -252,493 +239,180 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64) define void @"main.init$after"() { _llgo_0: - %0 = load ptr, ptr @_llgo_main.Game1, align 8 + %0 = load ptr, ptr @"*_llgo_main.Game1", align 8 %1 = icmp eq ptr %0, null br i1 %1, label %_llgo_1, label %_llgo_2 _llgo_1: ; preds = %_llgo_0 %2 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 2, i64 2) - store ptr %2, ptr @_llgo_main.Game1, align 8 + %3 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %2) + store ptr %3, ptr @"*_llgo_main.Game1", align 8 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 - %3 = load ptr, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8 - %4 = icmp eq ptr %3, null - br i1 %4, label %_llgo_3, label %_llgo_4 + %4 = load ptr, ptr @"*_llgo_main.Game2", align 8 + %5 = icmp eq ptr %4, null + br i1 %5, label %_llgo_3, label %_llgo_4 _llgo_3: ; preds = %_llgo_2 - %5 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 2) - store ptr %5, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8 + %6 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 1) + %7 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %6) + store ptr %7, ptr @"*_llgo_main.Game2", align 8 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 + %8 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %9 = icmp eq ptr %8, null + br i1 %9, label %_llgo_5, label %_llgo_6 _llgo_5: ; preds = %_llgo_4 - %8 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %8, i32 0, i32 0 - store ptr @0, ptr %9, align 8 - %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %8, i32 0, i32 1 - store i64 4, ptr %10, align 4 - %11 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %8, align 8 - %12 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %13 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %13, i32 0, i32 0 - store ptr %12, ptr %14, align 8 - %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %13, i32 0, i32 1 - store i64 0, ptr %15, align 4 - %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %13, i32 0, i32 2 - store i64 0, ptr %16, align 4 - %17 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %13, align 8 - %18 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %11, i64 0, %"github.com/goplus/llgo/internal/runtime.Slice" %17) - store ptr %18, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 + %10 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + %11 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %11, i32 0, i32 0 + store ptr %10, ptr %12, align 8 + %13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %11, i32 0, i32 1 + store i64 0, ptr %13, align 4 + %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %11, i32 0, i32 2 + store i64 0, ptr %14, align 4 + %15 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %11, align 8 + %16 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + %17 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %17, i32 0, i32 0 + store ptr %16, ptr %18, align 8 + %19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %17, i32 0, i32 1 + store i64 0, ptr %19, align 4 + %20 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %17, i32 0, i32 2 + store i64 0, ptr %20, align 4 + %21 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %17, align 8 + %22 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %15, %"github.com/goplus/llgo/internal/runtime.Slice" %21, i1 false) + store ptr %22, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 br label %_llgo_6 _llgo_6: ; preds = %_llgo_5, %_llgo_4 - %19 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - br i1 %4, label %_llgo_7, label %_llgo_8 + %23 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %24 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %25 = load ptr, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer", align 8 + %26 = icmp eq ptr %25, null + br i1 %26, label %_llgo_7, label %_llgo_8 _llgo_7: ; preds = %_llgo_6 - %20 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 0 - store ptr @1, ptr %21, align 8 - %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 1 - store i64 4, ptr %22, align 4 - %23 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %20, align 8 - %24 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %25 = icmp eq ptr %24, null - br i1 %25, label %_llgo_9, label %_llgo_10 - -_llgo_8: ; preds = %_llgo_10, %_llgo_6 - %26 = load ptr, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8 - %27 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8 - %28 = icmp eq ptr %27, null - br i1 %28, label %_llgo_11, label %_llgo_12 - -_llgo_9: ; preds = %_llgo_7 - %29 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %30 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %30, i32 0, i32 0 - store ptr %29, ptr %31, align 8 - %32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %30, i32 0, i32 1 - store i64 0, ptr %32, align 4 - %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %30, i32 0, i32 2 - store i64 0, ptr %33, align 4 - %34 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %30, align 8 - %35 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %36 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %36, i32 0, i32 0 - store ptr %35, ptr %37, align 8 - %38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %36, i32 0, i32 1 - store i64 0, ptr %38, align 4 - %39 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %36, i32 0, i32 2 - store i64 0, ptr %39, align 4 - %40 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %36, align 8 - %41 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %34, %"github.com/goplus/llgo/internal/runtime.Slice" %40, i1 false) - store ptr %41, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - br label %_llgo_10 - -_llgo_10: ; preds = %_llgo_9, %_llgo_7 - %42 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %43 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %44 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %43, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %23, ptr %44, align 8 - %45 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %43, i32 0, i32 1 - store ptr %42, ptr %45, align 8 - %46 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %43, i32 0, i32 2 - store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).Load", ptr %46, align 8 - %47 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %43, i32 0, i32 3 - store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).Load", ptr %47, align 8 - %48 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %43, align 8 - %49 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %50 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %49, i32 0, i32 0 - store ptr @2, ptr %50, align 8 - %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %49, i32 0, i32 1 - store i64 8, ptr %51, align 4 - %52 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %49, align 8 - %53 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %53, i32 0, i32 0 - store ptr @3, ptr %54, align 8 - %55 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %53, i32 0, i32 1 - store i64 47, ptr %55, align 4 - %56 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %53, align 8 - %57 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %58 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %59 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %58, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %56, ptr %59, align 8 - %60 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %58, i32 0, i32 1 - store ptr %57, ptr %60, align 8 - %61 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %58, i32 0, i32 2 - store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).initGame", ptr %61, align 8 - %62 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %58, i32 0, i32 3 - store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).initGame", ptr %62, align 8 - %63 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %58, align 8 - %64 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 80) - %65 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %64, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %48, ptr %65, align 8 - %66 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %64, i64 1 - store %"github.com/goplus/llgo/internal/abi.Method" %63, ptr %66, align 8 - %67 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %67, i32 0, i32 0 - store ptr %64, ptr %68, align 8 - %69 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %67, i32 0, i32 1 - store i64 2, ptr %69, align 4 - %70 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %67, i32 0, i32 2 - store i64 2, ptr %70, align 4 - %71 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %67, align 8 - %72 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 0 - store ptr @4, ptr %73, align 8 - %74 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 1 - store i64 38, ptr %74, align 4 - %75 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %72, align 8 - %76 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %76, i32 0, i32 0 - store ptr @5, ptr %77, align 8 - %78 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %76, i32 0, i32 1 - store i64 4, ptr %78, align 4 - %79 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %76, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %5, %"github.com/goplus/llgo/internal/runtime.String" %75, %"github.com/goplus/llgo/internal/runtime.String" %79, ptr %19, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %71) + %27 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %27, i32 0, i32 0 + store ptr @0, ptr %28, align 8 + %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %27, i32 0, i32 1 + store i64 4, ptr %29, align 4 + %30 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %27, align 8 + %31 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %32 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %31, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %30, ptr %32, align 8 + %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %31, i32 0, i32 1 + store ptr %23, ptr %33, align 8 + %34 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %31, align 8 + %35 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %35, i32 0, i32 0 + store ptr @1, ptr %36, align 8 + %37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %35, i32 0, i32 1 + store i64 47, ptr %37, align 4 + %38 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %35, align 8 + %39 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %40 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %39, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %38, ptr %40, align 8 + %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %39, i32 0, i32 1 + store ptr %24, ptr %41, align 8 + %42 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %39, align 8 + %43 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) + %44 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %43, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %34, ptr %44, align 8 + %45 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %43, i64 1 + store %"github.com/goplus/llgo/internal/abi.Imethod" %42, ptr %45, align 8 + %46 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %47 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 0 + store ptr %43, ptr %47, align 8 + %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 1 + store i64 2, ptr %48, align 4 + %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 2 + store i64 2, ptr %49, align 4 + %50 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, align 8 + %51 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %51, i32 0, i32 0 + store ptr @2, ptr %52, align 8 + %53 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %51, i32 0, i32 1 + store i64 38, ptr %53, align 4 + %54 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %51, align 8 + %55 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %55, i32 0, i32 0 + store ptr @3, ptr %56, align 8 + %57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %55, i32 0, i32 1 + store i64 44, ptr %57, align 4 + %58 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %55, align 8 + %59 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %54, %"github.com/goplus/llgo/internal/runtime.String" %58, %"github.com/goplus/llgo/internal/runtime.Slice" %50) + store ptr %59, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer", align 8 br label %_llgo_8 -_llgo_11: ; preds = %_llgo_8 - %80 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %26) - store ptr %80, ptr @"*_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8 - br label %_llgo_12 - -_llgo_12: ; preds = %_llgo_11, %_llgo_8 - %81 = load ptr, ptr @"*_llgo_github.com/goplus/llgo/cl/internal/foo.Game", align 8 - %82 = load ptr, ptr @"_llgo_struct$cJmCzeVn0orHWafCrTGAnbbAF46F2A4Fms4bJBm8ITI", align 8 - %83 = icmp eq ptr %82, null - br i1 %83, label %_llgo_13, label %_llgo_14 - -_llgo_13: ; preds = %_llgo_12 - %84 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %84, i32 0, i32 0 - store ptr @5, ptr %85, align 8 - %86 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %84, i32 0, i32 1 - store i64 4, ptr %86, align 4 - %87 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %84, align 8 - %88 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %89 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %88, i32 0, i32 0 - store ptr null, ptr %89, align 8 - %90 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %88, i32 0, i32 1 - store i64 0, ptr %90, align 4 - %91 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %88, align 8 - %92 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %87, ptr %81, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %91, i1 true) - %93 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %93, i32 0, i32 0 - store ptr @0, ptr %94, align 8 - %95 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %93, i32 0, i32 1 - store i64 4, ptr %95, align 4 - %96 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %93, align 8 - %97 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) - %98 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %97, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %92, ptr %98, align 8 - %99 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %99, i32 0, i32 0 - store ptr %97, ptr %100, align 8 - %101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %99, i32 0, i32 1 - store i64 1, ptr %101, align 4 - %102 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %99, i32 0, i32 2 - store i64 1, ptr %102, align 4 - %103 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %99, align 8 - %104 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %96, i64 8, %"github.com/goplus/llgo/internal/runtime.Slice" %103) - store ptr %104, ptr @"_llgo_struct$cJmCzeVn0orHWafCrTGAnbbAF46F2A4Fms4bJBm8ITI", align 8 - br label %_llgo_14 - -_llgo_14: ; preds = %_llgo_13, %_llgo_12 - %105 = load ptr, ptr @"_llgo_struct$cJmCzeVn0orHWafCrTGAnbbAF46F2A4Fms4bJBm8ITI", align 8 - br i1 %1, label %_llgo_15, label %_llgo_16 - -_llgo_15: ; preds = %_llgo_14 - %106 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %107 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %106, i32 0, i32 0 - store ptr @1, ptr %107, align 8 - %108 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %106, i32 0, i32 1 - store i64 4, ptr %108, align 4 - %109 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %106, align 8 - %110 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %111 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %112 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %111, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %109, ptr %112, align 8 - %113 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %111, i32 0, i32 1 - store ptr %110, ptr %113, align 8 - %114 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %111, i32 0, i32 2 - store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).Load", ptr %114, align 8 - %115 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %111, i32 0, i32 3 - store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).Load", ptr %115, align 8 - %116 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %111, align 8 - %117 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %118 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %117, i32 0, i32 0 - store ptr @2, ptr %118, align 8 - %119 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %117, i32 0, i32 1 - store i64 8, ptr %119, align 4 - %120 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %117, align 8 - %121 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %122 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %121, i32 0, i32 0 - store ptr @3, ptr %122, align 8 - %123 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %121, i32 0, i32 1 - store i64 47, ptr %123, align 4 - %124 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %121, align 8 - %125 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %126 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %127 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %126, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %124, ptr %127, align 8 - %128 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %126, i32 0, i32 1 - store ptr %125, ptr %128, align 8 - %129 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %126, i32 0, i32 2 - store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).initGame", ptr %129, align 8 - %130 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %126, i32 0, i32 3 - store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Game).initGame", ptr %130, align 8 - %131 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %126, align 8 - %132 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 80) - %133 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %132, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %116, ptr %133, align 8 - %134 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %132, i64 1 - store %"github.com/goplus/llgo/internal/abi.Method" %131, ptr %134, align 8 - %135 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %136 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %135, i32 0, i32 0 - store ptr %132, ptr %136, align 8 - %137 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %135, i32 0, i32 1 - store i64 2, ptr %137, align 4 - %138 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %135, i32 0, i32 2 - store i64 2, ptr %138, align 4 - %139 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %135, align 8 - %140 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %141 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %140, i32 0, i32 0 - store ptr @0, ptr %141, align 8 - %142 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %140, i32 0, i32 1 - store i64 4, ptr %142, align 4 - %143 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %140, align 8 - %144 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %145 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %144, i32 0, i32 0 - store ptr @6, ptr %145, align 8 - %146 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %144, i32 0, i32 1 - store i64 5, ptr %146, align 4 - %147 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %144, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %2, %"github.com/goplus/llgo/internal/runtime.String" %143, %"github.com/goplus/llgo/internal/runtime.String" %147, ptr %105, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %139) - br label %_llgo_16 - -_llgo_16: ; preds = %_llgo_15, %_llgo_14 - %148 = load ptr, ptr @_llgo_main.Game1, align 8 - %149 = load ptr, ptr @"*_llgo_main.Game1", align 8 - %150 = icmp eq ptr %149, null - br i1 %150, label %_llgo_17, label %_llgo_18 - -_llgo_17: ; preds = %_llgo_16 - %151 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %148) - store ptr %151, ptr @"*_llgo_main.Game1", align 8 - br label %_llgo_18 - -_llgo_18: ; preds = %_llgo_17, %_llgo_16 - %152 = load ptr, ptr @_llgo_main.Game2, align 8 - %153 = icmp eq ptr %152, null - br i1 %153, label %_llgo_19, label %_llgo_20 - -_llgo_19: ; preds = %_llgo_18 - %154 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 1) - store ptr %154, ptr @_llgo_main.Game2, align 8 - br label %_llgo_20 - -_llgo_20: ; preds = %_llgo_19, %_llgo_18 - %155 = load ptr, ptr @"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw", align 8 - br i1 %153, label %_llgo_21, label %_llgo_22 - -_llgo_21: ; preds = %_llgo_20 - %156 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %157 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %156, i32 0, i32 0 - store ptr @2, ptr %157, align 8 - %158 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %156, i32 0, i32 1 - store i64 8, ptr %158, align 4 - %159 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %156, align 8 - %160 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %161 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %160, i32 0, i32 0 - store ptr @7, ptr %161, align 8 - %162 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %160, i32 0, i32 1 - store i64 13, ptr %162, align 4 - %163 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %160, align 8 - %164 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %165 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %166 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %165, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %163, ptr %166, align 8 - %167 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %165, i32 0, i32 1 - store ptr %164, ptr %167, align 8 - %168 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %165, i32 0, i32 2 - store ptr @"main.(*Game2).initGame", ptr %168, align 8 - %169 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %165, i32 0, i32 3 - store ptr @"main.(*Game2).initGame", ptr %169, align 8 - %170 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %165, align 8 - %171 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) - %172 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %171, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %170, ptr %172, align 8 - %173 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %174 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %173, i32 0, i32 0 - store ptr %171, ptr %174, align 8 - %175 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %173, i32 0, i32 1 - store i64 1, ptr %175, align 4 - %176 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %173, i32 0, i32 2 - store i64 1, ptr %176, align 4 - %177 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %173, align 8 - %178 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %179 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %178, i32 0, i32 0 - store ptr @0, ptr %179, align 8 - %180 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %178, i32 0, i32 1 - store i64 4, ptr %180, align 4 - %181 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %178, align 8 - %182 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %183 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %182, i32 0, i32 0 - store ptr @8, ptr %183, align 8 - %184 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %182, i32 0, i32 1 - store i64 5, ptr %184, align 4 - %185 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %182, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %154, %"github.com/goplus/llgo/internal/runtime.String" %181, %"github.com/goplus/llgo/internal/runtime.String" %185, ptr %155, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %177) - br label %_llgo_22 - -_llgo_22: ; preds = %_llgo_21, %_llgo_20 - %186 = load ptr, ptr @_llgo_main.Game2, align 8 - %187 = load ptr, ptr @"*_llgo_main.Game2", align 8 - %188 = icmp eq ptr %187, null - br i1 %188, label %_llgo_23, label %_llgo_24 - -_llgo_23: ; preds = %_llgo_22 - %189 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %186) - store ptr %189, ptr @"*_llgo_main.Game2", align 8 - br label %_llgo_24 - -_llgo_24: ; preds = %_llgo_23, %_llgo_22 - %190 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %191 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %192 = load ptr, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer", align 8 - %193 = icmp eq ptr %192, null - br i1 %193, label %_llgo_25, label %_llgo_26 - -_llgo_25: ; preds = %_llgo_24 - %194 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %195 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %194, i32 0, i32 0 - store ptr @1, ptr %195, align 8 - %196 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %194, i32 0, i32 1 - store i64 4, ptr %196, align 4 - %197 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %194, align 8 - %198 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %199 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %198, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %197, ptr %199, align 8 - %200 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %198, i32 0, i32 1 - store ptr %190, ptr %200, align 8 - %201 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %198, align 8 - %202 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %203 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %202, i32 0, i32 0 - store ptr @3, ptr %203, align 8 - %204 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %202, i32 0, i32 1 - store i64 47, ptr %204, align 4 - %205 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %202, align 8 - %206 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %207 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %206, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %205, ptr %207, align 8 - %208 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %206, i32 0, i32 1 - store ptr %191, ptr %208, align 8 - %209 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %206, align 8 - %210 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) - %211 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %210, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %201, ptr %211, align 8 - %212 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %210, i64 1 - store %"github.com/goplus/llgo/internal/abi.Imethod" %209, ptr %212, align 8 - %213 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %214 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %213, i32 0, i32 0 - store ptr %210, ptr %214, align 8 - %215 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %213, i32 0, i32 1 - store i64 2, ptr %215, align 4 - %216 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %213, i32 0, i32 2 - store i64 2, ptr %216, align 4 - %217 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %213, align 8 - %218 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %219 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %218, i32 0, i32 0 - store ptr @4, ptr %219, align 8 - %220 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %218, i32 0, i32 1 - store i64 38, ptr %220, align 4 - %221 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %218, align 8 - %222 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %223 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %222, i32 0, i32 0 - store ptr @9, ptr %223, align 8 - %224 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %222, i32 0, i32 1 - store i64 44, ptr %224, align 4 - %225 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %222, align 8 - %226 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %221, %"github.com/goplus/llgo/internal/runtime.String" %225, %"github.com/goplus/llgo/internal/runtime.Slice" %217) - store ptr %226, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer", align 8 - br label %_llgo_26 - -_llgo_26: ; preds = %_llgo_25, %_llgo_24 - %227 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %228 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %229 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %230 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %229, i32 0, i32 0 - store ptr @1, ptr %230, align 8 - %231 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %229, i32 0, i32 1 - store i64 4, ptr %231, align 4 - %232 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %229, align 8 - %233 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %234 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %233, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %232, ptr %234, align 8 - %235 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %233, i32 0, i32 1 - store ptr %227, ptr %235, align 8 - %236 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %233, align 8 - %237 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %238 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %237, i32 0, i32 0 - store ptr @3, ptr %238, align 8 - %239 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %237, i32 0, i32 1 - store i64 47, ptr %239, align 4 - %240 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %237, align 8 - %241 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %242 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %241, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %240, ptr %242, align 8 - %243 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %241, i32 0, i32 1 - store ptr %228, ptr %243, align 8 - %244 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %241, align 8 - %245 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) - %246 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %245, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %236, ptr %246, align 8 - %247 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %245, i64 1 - store %"github.com/goplus/llgo/internal/abi.Imethod" %244, ptr %247, align 8 - %248 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %249 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %248, i32 0, i32 0 - store ptr %245, ptr %249, align 8 - %250 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %248, i32 0, i32 1 - store i64 2, ptr %250, align 4 - %251 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %248, i32 0, i32 2 - store i64 2, ptr %251, align 4 - %252 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %248, align 8 - %253 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %254 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %253, i32 0, i32 0 - store ptr @0, ptr %254, align 8 - %255 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %253, i32 0, i32 1 - store i64 4, ptr %255, align 4 - %256 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %253, align 8 - %257 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %258 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %257, i32 0, i32 0 - store ptr null, ptr %258, align 8 - %259 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %257, i32 0, i32 1 - store i64 0, ptr %259, align 4 - %260 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %257, align 8 - %261 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %256, %"github.com/goplus/llgo/internal/runtime.String" %260, %"github.com/goplus/llgo/internal/runtime.Slice" %252) - store ptr %261, ptr @"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg", align 8 +_llgo_8: ; preds = %_llgo_7, %_llgo_6 + %60 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %61 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %62 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %63 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %62, i32 0, i32 0 + store ptr @0, ptr %63, align 8 + %64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %62, i32 0, i32 1 + store i64 4, ptr %64, align 4 + %65 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %62, align 8 + %66 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %67 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %66, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %65, ptr %67, align 8 + %68 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %66, i32 0, i32 1 + store ptr %60, ptr %68, align 8 + %69 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %66, align 8 + %70 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %70, i32 0, i32 0 + store ptr @1, ptr %71, align 8 + %72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %70, i32 0, i32 1 + store i64 47, ptr %72, align 4 + %73 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %70, align 8 + %74 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %75 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %74, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %73, ptr %75, align 8 + %76 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %74, i32 0, i32 1 + store ptr %61, ptr %76, align 8 + %77 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %74, align 8 + %78 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) + %79 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %78, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %69, ptr %79, align 8 + %80 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %78, i64 1 + store %"github.com/goplus/llgo/internal/abi.Imethod" %77, ptr %80, align 8 + %81 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %82 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %81, i32 0, i32 0 + store ptr %78, ptr %82, align 8 + %83 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %81, i32 0, i32 1 + store i64 2, ptr %83, align 4 + %84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %81, i32 0, i32 2 + store i64 2, ptr %84, align 4 + %85 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %81, align 8 + %86 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %87 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %86, i32 0, i32 0 + store ptr @4, ptr %87, align 8 + %88 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %86, i32 0, i32 1 + store i64 4, ptr %88, align 4 + %89 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %86, align 8 + %90 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %91 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %90, i32 0, i32 0 + store ptr null, ptr %91, align 8 + %92 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %90, i32 0, i32 1 + store i64 0, ptr %92, align 4 + %93 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %90, align 8 + %94 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %89, %"github.com/goplus/llgo/internal/runtime.String" %93, %"github.com/goplus/llgo/internal/runtime.Slice" %85) + store ptr %94, ptr @"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg", align 8 ret void } +declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) + declare ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64, i64, i64) -declare ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String", i64, %"github.com/goplus/llgo/internal/runtime.Slice") - -declare %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1) - -declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) - -declare void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr, %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", ptr, %"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice") - declare ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice", i1) -declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) +declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") diff --git a/cl/_testgo/invoke/out.ll b/cl/_testgo/invoke/out.ll index 8101ab07..02104679 100644 --- a/cl/_testgo/invoke/out.ll +++ b/cl/_testgo/invoke/out.ll @@ -4,10 +4,10 @@ source_filename = "main" %main.T = type { %"github.com/goplus/llgo/internal/runtime.String" } %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %"github.com/goplus/llgo/internal/runtime.iface" = type { ptr, ptr } -%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } +%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } %"github.com/goplus/llgo/internal/abi.Imethod" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr } @@ -40,14 +40,11 @@ source_filename = "main" @11 = private unnamed_addr constant [2 x i8] c"T2", align 1 @"*_llgo_main.T2" = linkonce global ptr null, align 8 @"*_llgo_main.T3" = linkonce global ptr null, align 8 -@_llgo_main.T3 = linkonce global ptr null, align 8 -@_llgo_int8 = linkonce global ptr null, align 8 -@12 = private unnamed_addr constant [2 x i8] c"T3", align 1 @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI" = linkonce global ptr null, align 8 -@13 = private unnamed_addr constant [5 x i8] c"world", align 1 +@12 = private unnamed_addr constant [5 x i8] c"world", align 1 @_llgo_main.I = linkonce global ptr null, align 8 -@14 = private unnamed_addr constant [6 x i8] c"main.I", align 1 -@15 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1 +@13 = private unnamed_addr constant [6 x i8] c"main.I", align 1 +@14 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1 @_llgo_any = linkonce global ptr null, align 8 define i64 @main.T.Invoke(%main.T %0) { @@ -223,223 +220,215 @@ _llgo_0: call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %26) %27 = load i64, ptr %8, align 4 %28 = load ptr, ptr @_llgo_main.T1, align 8 - %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %28, i32 0, i32 6 - %30 = load i8, ptr %29, align 1 - %31 = or i8 %30, 32 - store i8 %31, ptr %29, align 1 - %32 = inttoptr i64 %27 to ptr - %33 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 - %34 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %33, ptr %28) - %35 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %35, i32 0, i32 0 - store ptr %34, ptr %36, align 8 - %37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %35, i32 0, i32 1 - store ptr %32, ptr %37, align 8 - %38 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %35, align 8 - call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %38) - %39 = load ptr, ptr @"*_llgo_main.T1", align 8 - %40 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 - %41 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %40, ptr %39) - %42 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %42, i32 0, i32 0 - store ptr %41, ptr %43, align 8 - %44 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %42, i32 0, i32 1 - store ptr %8, ptr %44, align 8 - %45 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %42, align 8 - call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %45) - %46 = load double, ptr %9, align 8 - %47 = load ptr, ptr @_llgo_main.T2, align 8 - %48 = bitcast double %46 to i64 - %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %47, i32 0, i32 6 - %50 = load i8, ptr %49, align 1 - %51 = or i8 %50, 32 - store i8 %51, ptr %49, align 1 - %52 = inttoptr i64 %48 to ptr - %53 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 - %54 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %53, ptr %47) - %55 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %55, i32 0, i32 0 - store ptr %54, ptr %56, align 8 - %57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %55, i32 0, i32 1 - store ptr %52, ptr %57, align 8 - %58 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %55, align 8 - call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %58) - %59 = load ptr, ptr @"*_llgo_main.T2", align 8 - %60 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 - %61 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %60, ptr %59) - %62 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %63 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %62, i32 0, i32 0 - store ptr %61, ptr %63, align 8 - %64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %62, i32 0, i32 1 - store ptr %9, ptr %64, align 8 - %65 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %62, align 8 - call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %65) - %66 = load ptr, ptr @"*_llgo_main.T3", align 8 - %67 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 - %68 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %67, ptr %66) - %69 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %70 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %69, i32 0, i32 0 - store ptr %68, ptr %70, align 8 - %71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %69, i32 0, i32 1 - store ptr %10, ptr %71, align 8 - %72 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %69, align 8 - call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %72) - %73 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer) - %74 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 - %75 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %74, ptr %73) - %76 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %76, i32 0, i32 0 - store ptr %75, ptr %77, align 8 - %78 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %76, i32 0, i32 1 - store ptr null, ptr %78, align 8 - %79 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %76, align 8 - call void @"github.com/goplus/llgo/internal/runtime.PrintIface"(%"github.com/goplus/llgo/internal/runtime.iface" %79) + %29 = inttoptr i64 %27 to ptr + %30 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 + %31 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %30, ptr %28) + %32 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %32, i32 0, i32 0 + store ptr %31, ptr %33, align 8 + %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %32, i32 0, i32 1 + store ptr %29, ptr %34, align 8 + %35 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %32, align 8 + call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %35) + %36 = load ptr, ptr @"*_llgo_main.T1", align 8 + %37 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 + %38 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %37, ptr %36) + %39 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %40 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %39, i32 0, i32 0 + store ptr %38, ptr %40, align 8 + %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %39, i32 0, i32 1 + store ptr %8, ptr %41, align 8 + %42 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %39, align 8 + call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %42) + %43 = load double, ptr %9, align 8 + %44 = load ptr, ptr @_llgo_main.T2, align 8 + %45 = bitcast double %43 to i64 + %46 = inttoptr i64 %45 to ptr + %47 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 + %48 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %47, ptr %44) + %49 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %50 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %49, i32 0, i32 0 + store ptr %48, ptr %50, align 8 + %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %49, i32 0, i32 1 + store ptr %46, ptr %51, align 8 + %52 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %49, align 8 + call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %52) + %53 = load ptr, ptr @"*_llgo_main.T2", align 8 + %54 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 + %55 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %54, ptr %53) + %56 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %56, i32 0, i32 0 + store ptr %55, ptr %57, align 8 + %58 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %56, i32 0, i32 1 + store ptr %9, ptr %58, align 8 + %59 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %56, align 8 + call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %59) + %60 = load ptr, ptr @"*_llgo_main.T3", align 8 + %61 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 + %62 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %61, ptr %60) + %63 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %63, i32 0, i32 0 + store ptr %62, ptr %64, align 8 + %65 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %63, i32 0, i32 1 + store ptr %10, ptr %65, align 8 + %66 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %63, align 8 + call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %66) + %67 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer) + %68 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 + %69 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %68, ptr %67) + %70 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %70, i32 0, i32 0 + store ptr %69, ptr %71, align 8 + %72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %70, i32 0, i32 1 + store ptr null, ptr %72, align 8 + %73 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %70, align 8 + call void @"github.com/goplus/llgo/internal/runtime.PrintIface"(%"github.com/goplus/llgo/internal/runtime.iface" %73) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) call void @"github.com/goplus/llgo/internal/runtime.PrintIface"(%"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) - %80 = load ptr, ptr @"*_llgo_main.T", align 8 - %81 = load ptr, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8 - %82 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %81, ptr %80) - %83 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %83, i32 0, i32 0 - store ptr %82, ptr %84, align 8 - %85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %83, i32 0, i32 1 - store ptr %2, ptr %85, align 8 - %86 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %83, align 8 - %87 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %86) - %88 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %86, 1 - %89 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 - %90 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %89, ptr %87) - %91 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %92 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %91, i32 0, i32 0 - store ptr %90, ptr %92, align 8 - %93 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %91, i32 0, i32 1 - store ptr %88, ptr %93, align 8 - %94 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %91, align 8 - call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %94) - %95 = alloca %main.T, align 8 - %96 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %95, i64 16) - %97 = getelementptr inbounds %main.T, ptr %96, i32 0, i32 0 - %98 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %99 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %98, i32 0, i32 0 - store ptr @13, ptr %99, align 8 - %100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %98, i32 0, i32 1 - store i64 5, ptr %100, align 4 - %101 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %98, align 8 - store %"github.com/goplus/llgo/internal/runtime.String" %101, ptr %97, align 8 - %102 = load %main.T, ptr %96, align 8 - %103 = load ptr, ptr @_llgo_main.T, align 8 - %104 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %main.T %102, ptr %104, align 8 - %105 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %106 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %105, i32 0, i32 0 - store ptr %103, ptr %106, align 8 - %107 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %105, i32 0, i32 1 - store ptr %104, ptr %107, align 8 - %108 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %105, align 8 - %109 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %108, 0 - %110 = load ptr, ptr @_llgo_main.I, align 8 - %111 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %110, ptr %109) - br i1 %111, label %_llgo_1, label %_llgo_2 + %74 = load ptr, ptr @"*_llgo_main.T", align 8 + %75 = load ptr, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8 + %76 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %75, ptr %74) + %77 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %78 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %77, i32 0, i32 0 + store ptr %76, ptr %78, align 8 + %79 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %77, i32 0, i32 1 + store ptr %2, ptr %79, align 8 + %80 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %77, align 8 + %81 = call ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/goplus/llgo/internal/runtime.iface" %80) + %82 = extractvalue %"github.com/goplus/llgo/internal/runtime.iface" %80, 1 + %83 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 + %84 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %83, ptr %81) + %85 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %86 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %85, i32 0, i32 0 + store ptr %84, ptr %86, align 8 + %87 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %85, i32 0, i32 1 + store ptr %82, ptr %87, align 8 + %88 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %85, align 8 + call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %88) + %89 = alloca %main.T, align 8 + %90 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %89, i64 16) + %91 = getelementptr inbounds %main.T, ptr %90, i32 0, i32 0 + %92 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %93 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %92, i32 0, i32 0 + store ptr @12, ptr %93, align 8 + %94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %92, i32 0, i32 1 + store i64 5, ptr %94, align 4 + %95 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %92, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %95, ptr %91, align 8 + %96 = load %main.T, ptr %90, align 8 + %97 = load ptr, ptr @_llgo_main.T, align 8 + %98 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %main.T %96, ptr %98, align 8 + %99 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %99, i32 0, i32 0 + store ptr %97, ptr %100, align 8 + %101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %99, i32 0, i32 1 + store ptr %98, ptr %101, align 8 + %102 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %99, align 8 + %103 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %102, 0 + %104 = load ptr, ptr @_llgo_main.I, align 8 + %105 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %104, ptr %103) + br i1 %105, label %_llgo_1, label %_llgo_2 _llgo_1: ; preds = %_llgo_0 - %112 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %108, 1 - %113 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 - %114 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %113, ptr %109) - %115 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %116 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %115, i32 0, i32 0 - store ptr %114, ptr %116, align 8 - %117 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %115, i32 0, i32 1 - store ptr %112, ptr %117, align 8 - %118 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %115, align 8 - call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %118) - %119 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %108, 0 - %120 = load ptr, ptr @_llgo_any, align 8 - %121 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %120, ptr %119) - br i1 %121, label %_llgo_3, label %_llgo_4 + %106 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %102, 1 + %107 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 + %108 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %107, ptr %103) + %109 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %110 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %109, i32 0, i32 0 + store ptr %108, ptr %110, align 8 + %111 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %109, i32 0, i32 1 + store ptr %106, ptr %111, align 8 + %112 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %109, align 8 + call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %112) + %113 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %102, 0 + %114 = load ptr, ptr @_llgo_any, align 8 + %115 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %114, ptr %113) + br i1 %115, label %_llgo_3, label %_llgo_4 _llgo_2: ; preds = %_llgo_0 - %122 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %123 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %122, i32 0, i32 0 - store ptr @15, ptr %123, align 8 - %124 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %122, i32 0, i32 1 - store i64 21, ptr %124, align 4 - %125 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %122, align 8 - %126 = load ptr, ptr @_llgo_string, align 8 - %127 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %125, ptr %127, align 8 - %128 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %128, i32 0, i32 0 - store ptr %126, ptr %129, align 8 - %130 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %128, i32 0, i32 1 - store ptr %127, ptr %130, align 8 - %131 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %128, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %131) + %116 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %117 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %116, i32 0, i32 0 + store ptr @14, ptr %117, align 8 + %118 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %116, i32 0, i32 1 + store i64 21, ptr %118, align 4 + %119 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %116, align 8 + %120 = load ptr, ptr @_llgo_string, align 8 + %121 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %119, ptr %121, align 8 + %122 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %123 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %122, i32 0, i32 0 + store ptr %120, ptr %123, align 8 + %124 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %122, i32 0, i32 1 + store ptr %121, ptr %124, align 8 + %125 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %122, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %125) unreachable _llgo_3: ; preds = %_llgo_1 - %132 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %108, 1 - %133 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %133, i32 0, i32 0 - store ptr %119, ptr %134, align 8 - %135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %133, i32 0, i32 1 - store ptr %132, ptr %135, align 8 - %136 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %133, align 8 - %137 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %136, 0 - %138 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 - %139 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %138, ptr %137) - br i1 %139, label %_llgo_5, label %_llgo_6 + %126 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %102, 1 + %127 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %128 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %127, i32 0, i32 0 + store ptr %113, ptr %128, align 8 + %129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %127, i32 0, i32 1 + store ptr %126, ptr %129, align 8 + %130 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %127, align 8 + %131 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %130, 0 + %132 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 + %133 = call i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr %132, ptr %131) + br i1 %133, label %_llgo_5, label %_llgo_6 _llgo_4: ; preds = %_llgo_1 - %140 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %141 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %140, i32 0, i32 0 - store ptr @15, ptr %141, align 8 - %142 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %140, i32 0, i32 1 - store i64 21, ptr %142, align 4 - %143 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %140, align 8 - %144 = load ptr, ptr @_llgo_string, align 8 - %145 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %143, ptr %145, align 8 - %146 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %147 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %146, i32 0, i32 0 - store ptr %144, ptr %147, align 8 - %148 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %146, i32 0, i32 1 - store ptr %145, ptr %148, align 8 - %149 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %146, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %149) + %134 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %134, i32 0, i32 0 + store ptr @14, ptr %135, align 8 + %136 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %134, i32 0, i32 1 + store i64 21, ptr %136, align 4 + %137 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %134, align 8 + %138 = load ptr, ptr @_llgo_string, align 8 + %139 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %137, ptr %139, align 8 + %140 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %141 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %140, i32 0, i32 0 + store ptr %138, ptr %141, align 8 + %142 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %140, i32 0, i32 1 + store ptr %139, ptr %142, align 8 + %143 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %140, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %143) unreachable _llgo_5: ; preds = %_llgo_3 - %150 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %136, 1 - %151 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 - %152 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %151, ptr %137) - %153 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 - %154 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %153, i32 0, i32 0 - store ptr %152, ptr %154, align 8 - %155 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %153, i32 0, i32 1 - store ptr %150, ptr %155, align 8 - %156 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %153, align 8 - call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %156) + %144 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %130, 1 + %145 = load ptr, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 + %146 = call ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr %145, ptr %131) + %147 = alloca %"github.com/goplus/llgo/internal/runtime.iface", align 8 + %148 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %147, i32 0, i32 0 + store ptr %146, ptr %148, align 8 + %149 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %147, i32 0, i32 1 + store ptr %144, ptr %149, align 8 + %150 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %147, align 8 + call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" %150) call void @main.invoke(%"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer) ret i32 0 _llgo_6: ; preds = %_llgo_3 - %157 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %158 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %157, i32 0, i32 0 - store ptr @15, ptr %158, align 8 - %159 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %157, i32 0, i32 1 - store i64 21, ptr %159, align 4 - %160 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %157, align 8 - %161 = load ptr, ptr @_llgo_string, align 8 - %162 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %160, ptr %162, align 8 - %163 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %164 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %163, i32 0, i32 0 - store ptr %161, ptr %164, align 8 - %165 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %163, i32 0, i32 1 - store ptr %162, ptr %165, align 8 - %166 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %163, align 8 - call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %166) + %151 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %152 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %151, i32 0, i32 0 + store ptr @14, ptr %152, align 8 + %153 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %151, i32 0, i32 1 + store i64 21, ptr %153, align 4 + %154 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %151, align 8 + %155 = load ptr, ptr @_llgo_string, align 8 + %156 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %154, ptr %156, align 8 + %157 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %158 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %157, i32 0, i32 0 + store ptr %155, ptr %158, align 8 + %159 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %157, i32 0, i32 1 + store ptr %156, ptr %159, align 8 + %160 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %157, align 8 + call void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface" %160) unreachable } @@ -721,13 +710,13 @@ _llgo_13: ; preds = %_llgo_6 br label %_llgo_14 _llgo_14: ; preds = %_llgo_13, %_llgo_6 - %145 = load ptr, ptr @_llgo_main.T, align 8 - %146 = load ptr, ptr @"*_llgo_main.T", align 8 - %147 = icmp eq ptr %146, null - br i1 %147, label %_llgo_15, label %_llgo_16 + %145 = load ptr, ptr @"*_llgo_main.T", align 8 + %146 = icmp eq ptr %145, null + br i1 %146, label %_llgo_15, label %_llgo_16 _llgo_15: ; preds = %_llgo_14 - %148 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %145) + %147 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 1, i64 2) + %148 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %147) store ptr %148, ptr @"*_llgo_main.T", align 8 br label %_llgo_16 @@ -815,13 +804,13 @@ _llgo_19: ; preds = %_llgo_18 br label %_llgo_20 _llgo_20: ; preds = %_llgo_19, %_llgo_18 - %195 = load ptr, ptr @_llgo_main.T1, align 8 - %196 = load ptr, ptr @"*_llgo_main.T1", align 8 - %197 = icmp eq ptr %196, null - br i1 %197, label %_llgo_21, label %_llgo_22 + %195 = load ptr, ptr @"*_llgo_main.T1", align 8 + %196 = icmp eq ptr %195, null + br i1 %196, label %_llgo_21, label %_llgo_22 _llgo_21: ; preds = %_llgo_20 - %198 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %195) + %197 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 2, i64 1, i64 1) + %198 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %197) store ptr %198, ptr @"*_llgo_main.T1", align 8 br label %_llgo_22 @@ -923,242 +912,166 @@ _llgo_27: ; preds = %_llgo_26 br label %_llgo_28 _llgo_28: ; preds = %_llgo_27, %_llgo_26 - %251 = load ptr, ptr @_llgo_main.T2, align 8 - %252 = load ptr, ptr @"*_llgo_main.T2", align 8 - %253 = icmp eq ptr %252, null - br i1 %253, label %_llgo_29, label %_llgo_30 + %251 = load ptr, ptr @"*_llgo_main.T2", align 8 + %252 = icmp eq ptr %251, null + br i1 %252, label %_llgo_29, label %_llgo_30 _llgo_29: ; preds = %_llgo_28 - %254 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %251) + %253 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 14, i64 1, i64 1) + %254 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %253) store ptr %254, ptr @"*_llgo_main.T2", align 8 br label %_llgo_30 _llgo_30: ; preds = %_llgo_29, %_llgo_28 - %255 = load ptr, ptr @_llgo_main.T3, align 8 + %255 = load ptr, ptr @"*_llgo_main.T3", align 8 %256 = icmp eq ptr %255, null br i1 %256, label %_llgo_31, label %_llgo_32 _llgo_31: ; preds = %_llgo_30 %257 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 3, i64 0, i64 1) - %258 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %257, i32 0, i32 6 - %259 = load i8, ptr %258, align 1 - %260 = or i8 %259, 32 - store i8 %260, ptr %258, align 1 - store ptr %257, ptr @_llgo_main.T3, align 8 + %258 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %257) + store ptr %258, ptr @"*_llgo_main.T3", align 8 br label %_llgo_32 _llgo_32: ; preds = %_llgo_31, %_llgo_30 - %261 = load ptr, ptr @_llgo_int8, align 8 + %259 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %260 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %261 = load ptr, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8 %262 = icmp eq ptr %261, null br i1 %262, label %_llgo_33, label %_llgo_34 _llgo_33: ; preds = %_llgo_32 - %263 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3) - %264 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %263, i32 0, i32 6 - %265 = load i8, ptr %264, align 1 - %266 = or i8 %265, 32 - store i8 %266, ptr %264, align 1 - store ptr %263, ptr @_llgo_int8, align 8 + %263 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %264 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %263, i32 0, i32 0 + store ptr @7, ptr %264, align 8 + %265 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %263, i32 0, i32 1 + store i64 6, ptr %265, align 4 + %266 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %263, align 8 + %267 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %268 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %267, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %266, ptr %268, align 8 + %269 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %267, i32 0, i32 1 + store ptr %259, ptr %269, align 8 + %270 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %267, align 8 + %271 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %272 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %271, i32 0, i32 0 + store ptr @8, ptr %272, align 8 + %273 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %271, i32 0, i32 1 + store i64 6, ptr %273, align 4 + %274 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %271, align 8 + %275 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %276 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %275, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %274, ptr %276, align 8 + %277 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %275, i32 0, i32 1 + store ptr %260, ptr %277, align 8 + %278 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %275, align 8 + %279 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) + %280 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %279, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %270, ptr %280, align 8 + %281 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %279, i64 1 + store %"github.com/goplus/llgo/internal/abi.Imethod" %278, ptr %281, align 8 + %282 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %283 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %282, i32 0, i32 0 + store ptr %279, ptr %283, align 8 + %284 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %282, i32 0, i32 1 + store i64 2, ptr %284, align 4 + %285 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %282, i32 0, i32 2 + store i64 2, ptr %285, align 4 + %286 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %282, align 8 + %287 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %288 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %287, i32 0, i32 0 + store ptr @6, ptr %288, align 8 + %289 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %287, i32 0, i32 1 + store i64 4, ptr %289, align 4 + %290 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %287, align 8 + %291 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %292 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %291, i32 0, i32 0 + store ptr null, ptr %292, align 8 + %293 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %291, i32 0, i32 1 + store i64 0, ptr %293, align 4 + %294 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %291, align 8 + %295 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %290, %"github.com/goplus/llgo/internal/runtime.String" %294, %"github.com/goplus/llgo/internal/runtime.Slice" %286) + store ptr %295, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8 br label %_llgo_34 _llgo_34: ; preds = %_llgo_33, %_llgo_32 - %267 = load ptr, ptr @_llgo_int8, align 8 - br i1 %256, label %_llgo_35, label %_llgo_36 + %296 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %297 = load ptr, ptr @_llgo_main.I, align 8 + %298 = icmp eq ptr %297, null + br i1 %298, label %_llgo_35, label %_llgo_36 _llgo_35: ; preds = %_llgo_34 - %268 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %269 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %268, i32 0, i32 0 - store ptr @7, ptr %269, align 8 - %270 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %268, i32 0, i32 1 - store i64 6, ptr %270, align 4 - %271 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %268, align 8 - %272 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %273 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %274 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %271, ptr %274, align 8 - %275 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 1 - store ptr %272, ptr %275, align 8 - %276 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 2 - store ptr @"main.(*T3).Invoke", ptr %276, align 8 - %277 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 3 - store ptr @"main.(*T3).Invoke", ptr %277, align 8 - %278 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %273, align 8 - %279 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) - %280 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %279, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %278, ptr %280, align 8 - %281 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %282 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %281, i32 0, i32 0 - store ptr %279, ptr %282, align 8 - %283 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %281, i32 0, i32 1 - store i64 1, ptr %283, align 4 - %284 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %281, i32 0, i32 2 - store i64 1, ptr %284, align 4 - %285 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %281, align 8 - %286 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %287 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %286, i32 0, i32 0 - store ptr @6, ptr %287, align 8 - %288 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %286, i32 0, i32 1 - store i64 4, ptr %288, align 4 - %289 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %286, align 8 - %290 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %291 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %290, i32 0, i32 0 - store ptr @12, ptr %291, align 8 - %292 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %290, i32 0, i32 1 - store i64 2, ptr %292, align 4 - %293 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %290, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %257, %"github.com/goplus/llgo/internal/runtime.String" %289, %"github.com/goplus/llgo/internal/runtime.String" %293, ptr %267, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %285) + %299 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %300 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %299, i32 0, i32 0 + store ptr @7, ptr %300, align 8 + %301 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %299, i32 0, i32 1 + store i64 6, ptr %301, align 4 + %302 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %299, align 8 + %303 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %304 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %303, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %302, ptr %304, align 8 + %305 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %303, i32 0, i32 1 + store ptr %296, ptr %305, align 8 + %306 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %303, align 8 + %307 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %308 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %307, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %306, ptr %308, align 8 + %309 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %310 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %309, i32 0, i32 0 + store ptr %307, ptr %310, align 8 + %311 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %309, i32 0, i32 1 + store i64 1, ptr %311, align 4 + %312 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %309, i32 0, i32 2 + store i64 1, ptr %312, align 4 + %313 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %309, align 8 + %314 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %315 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %314, i32 0, i32 0 + store ptr @6, ptr %315, align 8 + %316 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %314, i32 0, i32 1 + store i64 4, ptr %316, align 4 + %317 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %314, align 8 + %318 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %319 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %318, i32 0, i32 0 + store ptr @13, ptr %319, align 8 + %320 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %318, i32 0, i32 1 + store i64 6, ptr %320, align 4 + %321 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %318, align 8 + %322 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %317, %"github.com/goplus/llgo/internal/runtime.String" %321, %"github.com/goplus/llgo/internal/runtime.Slice" %313) + store ptr %322, ptr @_llgo_main.I, align 8 br label %_llgo_36 _llgo_36: ; preds = %_llgo_35, %_llgo_34 - %294 = load ptr, ptr @_llgo_main.T3, align 8 - %295 = load ptr, ptr @"*_llgo_main.T3", align 8 - %296 = icmp eq ptr %295, null - br i1 %296, label %_llgo_37, label %_llgo_38 + %323 = load ptr, ptr @_llgo_any, align 8 + %324 = icmp eq ptr %323, null + br i1 %324, label %_llgo_37, label %_llgo_38 _llgo_37: ; preds = %_llgo_36 - %297 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %294) - store ptr %297, ptr @"*_llgo_main.T3", align 8 + %325 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + %326 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %327 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, i32 0, i32 0 + store ptr %325, ptr %327, align 8 + %328 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, i32 0, i32 1 + store i64 0, ptr %328, align 4 + %329 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, i32 0, i32 2 + store i64 0, ptr %329, align 4 + %330 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, align 8 + %331 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %332 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %331, i32 0, i32 0 + store ptr @6, ptr %332, align 8 + %333 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %331, i32 0, i32 1 + store i64 4, ptr %333, align 4 + %334 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %331, align 8 + %335 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %336 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %335, i32 0, i32 0 + store ptr null, ptr %336, align 8 + %337 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %335, i32 0, i32 1 + store i64 0, ptr %337, align 4 + %338 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %335, align 8 + %339 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %334, %"github.com/goplus/llgo/internal/runtime.String" %338, %"github.com/goplus/llgo/internal/runtime.Slice" %330) + store ptr %339, ptr @_llgo_any, align 8 br label %_llgo_38 _llgo_38: ; preds = %_llgo_37, %_llgo_36 - %298 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %299 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %300 = load ptr, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8 - %301 = icmp eq ptr %300, null - br i1 %301, label %_llgo_39, label %_llgo_40 - -_llgo_39: ; preds = %_llgo_38 - %302 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %303 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %302, i32 0, i32 0 - store ptr @7, ptr %303, align 8 - %304 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %302, i32 0, i32 1 - store i64 6, ptr %304, align 4 - %305 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %302, align 8 - %306 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %307 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %306, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %305, ptr %307, align 8 - %308 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %306, i32 0, i32 1 - store ptr %298, ptr %308, align 8 - %309 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %306, align 8 - %310 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %311 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %310, i32 0, i32 0 - store ptr @8, ptr %311, align 8 - %312 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %310, i32 0, i32 1 - store i64 6, ptr %312, align 4 - %313 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %310, align 8 - %314 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %315 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %314, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %313, ptr %315, align 8 - %316 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %314, i32 0, i32 1 - store ptr %299, ptr %316, align 8 - %317 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %314, align 8 - %318 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) - %319 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %318, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %309, ptr %319, align 8 - %320 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %318, i64 1 - store %"github.com/goplus/llgo/internal/abi.Imethod" %317, ptr %320, align 8 - %321 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %322 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %321, i32 0, i32 0 - store ptr %318, ptr %322, align 8 - %323 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %321, i32 0, i32 1 - store i64 2, ptr %323, align 4 - %324 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %321, i32 0, i32 2 - store i64 2, ptr %324, align 4 - %325 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %321, align 8 - %326 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %327 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %326, i32 0, i32 0 - store ptr @6, ptr %327, align 8 - %328 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %326, i32 0, i32 1 - store i64 4, ptr %328, align 4 - %329 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %326, align 8 - %330 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %331 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %330, i32 0, i32 0 - store ptr null, ptr %331, align 8 - %332 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %330, i32 0, i32 1 - store i64 0, ptr %332, align 4 - %333 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %330, align 8 - %334 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %329, %"github.com/goplus/llgo/internal/runtime.String" %333, %"github.com/goplus/llgo/internal/runtime.Slice" %325) - store ptr %334, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8 - br label %_llgo_40 - -_llgo_40: ; preds = %_llgo_39, %_llgo_38 - %335 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %336 = load ptr, ptr @_llgo_main.I, align 8 - %337 = icmp eq ptr %336, null - br i1 %337, label %_llgo_41, label %_llgo_42 - -_llgo_41: ; preds = %_llgo_40 - %338 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %339 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %338, i32 0, i32 0 - store ptr @7, ptr %339, align 8 - %340 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %338, i32 0, i32 1 - store i64 6, ptr %340, align 4 - %341 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %338, align 8 - %342 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %343 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %342, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %341, ptr %343, align 8 - %344 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %342, i32 0, i32 1 - store ptr %335, ptr %344, align 8 - %345 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %342, align 8 - %346 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %347 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %346, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %345, ptr %347, align 8 - %348 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %349 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %348, i32 0, i32 0 - store ptr %346, ptr %349, align 8 - %350 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %348, i32 0, i32 1 - store i64 1, ptr %350, align 4 - %351 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %348, i32 0, i32 2 - store i64 1, ptr %351, align 4 - %352 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %348, align 8 - %353 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %354 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %353, i32 0, i32 0 - store ptr @6, ptr %354, align 8 - %355 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %353, i32 0, i32 1 - store i64 4, ptr %355, align 4 - %356 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %353, align 8 - %357 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %358 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %357, i32 0, i32 0 - store ptr @14, ptr %358, align 8 - %359 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %357, i32 0, i32 1 - store i64 6, ptr %359, align 4 - %360 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %357, align 8 - %361 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %356, %"github.com/goplus/llgo/internal/runtime.String" %360, %"github.com/goplus/llgo/internal/runtime.Slice" %352) - store ptr %361, ptr @_llgo_main.I, align 8 - br label %_llgo_42 - -_llgo_42: ; preds = %_llgo_41, %_llgo_40 - %362 = load ptr, ptr @_llgo_any, align 8 - %363 = icmp eq ptr %362, null - br i1 %363, label %_llgo_43, label %_llgo_44 - -_llgo_43: ; preds = %_llgo_42 - %364 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %365 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %366 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %365, i32 0, i32 0 - store ptr %364, ptr %366, align 8 - %367 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %365, i32 0, i32 1 - store i64 0, ptr %367, align 4 - %368 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %365, i32 0, i32 2 - store i64 0, ptr %368, align 4 - %369 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %365, align 8 - %370 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %371 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %370, i32 0, i32 0 - store ptr @6, ptr %371, align 8 - %372 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %370, i32 0, i32 1 - store i64 4, ptr %372, align 4 - %373 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %370, align 8 - %374 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %375 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %374, i32 0, i32 0 - store ptr null, ptr %375, align 8 - %376 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %374, i32 0, i32 1 - store i64 0, ptr %376, align 4 - %377 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %374, align 8 - %378 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %373, %"github.com/goplus/llgo/internal/runtime.String" %377, %"github.com/goplus/llgo/internal/runtime.Slice" %369) - store ptr %378, ptr @_llgo_any, align 8 - br label %_llgo_44 - -_llgo_44: ; preds = %_llgo_43, %_llgo_42 ret void } diff --git a/cl/_testgo/reader/out.ll b/cl/_testgo/reader/out.ll index eb947bdf..5ed32eb1 100644 --- a/cl/_testgo/reader/out.ll +++ b/cl/_testgo/reader/out.ll @@ -22,7 +22,6 @@ source_filename = "main" @_llgo_main.Writer = linkonce global ptr null, align 8 @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY" = linkonce global ptr null, align 8 @"[]_llgo_byte" = linkonce global ptr null, align 8 -@_llgo_byte = linkonce global ptr null, align 8 @_llgo_int = linkonce global ptr null, align 8 @_llgo_error = linkonce global ptr null, align 8 @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null, align 8 @@ -59,41 +58,17 @@ source_filename = "main" @__llgo_argv = global ptr null, align 8 @17 = private unnamed_addr constant [11 x i8] c"hello world", align 1 @"*_llgo_main.stringReader" = global ptr null, align 8 -@_llgo_main.stringReader = global ptr null, align 8 -@"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk" = global ptr null, align 8 -@18 = private unnamed_addr constant [1 x i8] c"s", align 1 -@19 = private unnamed_addr constant [1 x i8] c"i", align 1 -@20 = private unnamed_addr constant [8 x i8] c"prevRune", align 1 -@21 = private unnamed_addr constant [3 x i8] c"Len", align 1 -@"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA" = linkonce global ptr null, align 8 -@22 = private unnamed_addr constant [6 x i8] c"ReadAt", align 1 -@"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c" = linkonce global ptr null, align 8 -@23 = private unnamed_addr constant [8 x i8] c"ReadByte", align 1 -@"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM" = linkonce global ptr null, align 8 -@24 = private unnamed_addr constant [8 x i8] c"ReadRune", align 1 -@"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU" = linkonce global ptr null, align 8 -@_llgo_rune = linkonce global ptr null, align 8 -@25 = private unnamed_addr constant [4 x i8] c"Seek", align 1 -@"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms" = linkonce global ptr null, align 8 -@26 = private unnamed_addr constant [4 x i8] c"Size", align 1 -@"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug" = linkonce global ptr null, align 8 -@27 = private unnamed_addr constant [10 x i8] c"UnreadByte", align 1 -@28 = private unnamed_addr constant [10 x i8] c"UnreadRune", align 1 -@29 = private unnamed_addr constant [12 x i8] c"stringReader", align 1 @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE" = linkonce global ptr null, align 8 @"*_llgo_main.errorString" = global ptr null, align 8 -@_llgo_main.errorString = global ptr null, align 8 -@"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null, align 8 -@30 = private unnamed_addr constant [11 x i8] c"errorString", align 1 @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null, align 8 -@31 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1 -@32 = private unnamed_addr constant [37 x i8] c"stringsReader.ReadAt: negative offset", align 1 -@33 = private unnamed_addr constant [34 x i8] c"stringsReader.Seek: invalid whence", align 1 -@34 = private unnamed_addr constant [37 x i8] c"stringsReader.Seek: negative position", align 1 -@35 = private unnamed_addr constant [48 x i8] c"stringsReader.UnreadByte: at beginning of string", align 1 -@36 = private unnamed_addr constant [49 x i8] c"strings.Reader.UnreadRune: at beginning of string", align 1 -@37 = private unnamed_addr constant [62 x i8] c"strings.Reader.UnreadRune: previous operation was not ReadRune", align 1 -@38 = private unnamed_addr constant [48 x i8] c"stringsReader.WriteTo: invalid WriteString count", align 1 +@18 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1 +@19 = private unnamed_addr constant [37 x i8] c"stringsReader.ReadAt: negative offset", align 1 +@20 = private unnamed_addr constant [34 x i8] c"stringsReader.Seek: invalid whence", align 1 +@21 = private unnamed_addr constant [37 x i8] c"stringsReader.Seek: negative position", align 1 +@22 = private unnamed_addr constant [48 x i8] c"stringsReader.UnreadByte: at beginning of string", align 1 +@23 = private unnamed_addr constant [49 x i8] c"strings.Reader.UnreadRune: at beginning of string", align 1 +@24 = private unnamed_addr constant [62 x i8] c"strings.Reader.UnreadRune: previous operation was not ReadRune", align 1 +@25 = private unnamed_addr constant [48 x i8] c"stringsReader.WriteTo: invalid WriteString count", align 1 define %"github.com/goplus/llgo/internal/runtime.iface" @main.NopCloser(%"github.com/goplus/llgo/internal/runtime.iface" %0) { _llgo_0: @@ -595,7 +570,7 @@ _llgo_1: ; preds = %_llgo_0 _llgo_2: ; preds = %_llgo_0 %29 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %29, i32 0, i32 0 - store ptr @31, ptr %30, align 8 + store ptr @18, ptr %30, align 8 %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %29, i32 0, i32 1 store i64 21, ptr %31, align 4 %32 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %29, align 8 @@ -722,7 +697,7 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 %4 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 0 - store ptr @32, ptr %5, align 8 + store ptr @19, ptr %5, align 8 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 37, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 @@ -914,7 +889,7 @@ _llgo_6: ; preds = %_llgo_4 _llgo_7: ; preds = %_llgo_6 %16 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 0 - store ptr @33, ptr %17, align 8 + store ptr @20, ptr %17, align 8 %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 1 store i64 34, ptr %18, align 4 %19 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %16, align 8 @@ -925,7 +900,7 @@ _llgo_7: ; preds = %_llgo_6 _llgo_8: ; preds = %_llgo_1 %21 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 0 - store ptr @34, ptr %22, align 8 + store ptr @21, ptr %22, align 8 %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 1 store i64 37, ptr %23, align 4 %24 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %21, align 8 @@ -959,7 +934,7 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 %4 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 0 - store ptr @35, ptr %5, align 8 + store ptr @22, ptr %5, align 8 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 48, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 @@ -987,7 +962,7 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 %4 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 0 - store ptr @36, ptr %5, align 8 + store ptr @23, ptr %5, align 8 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 49, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 @@ -1003,7 +978,7 @@ _llgo_2: ; preds = %_llgo_0 _llgo_3: ; preds = %_llgo_2 %12 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %12, i32 0, i32 0 - store ptr @37, ptr %13, align 8 + store ptr @24, ptr %13, align 8 %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %12, i32 0, i32 1 store i64 62, ptr %14, align 4 %15 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %12, align 8 @@ -1052,7 +1027,7 @@ _llgo_2: ; preds = %_llgo_0 _llgo_3: ; preds = %_llgo_2 %20 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 0 - store ptr @38, ptr %21, align 8 + store ptr @25, ptr %21, align 8 %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 1 store i64 48, ptr %22, align 4 %23 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %20, align 8 @@ -1112,1578 +1087,980 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.IfaceType"(%"github.com/go define void @"main.init$after"() { _llgo_0: - %0 = load ptr, ptr @_llgo_byte, align 8 + %0 = load ptr, ptr @"[]_llgo_byte", align 8 %1 = icmp eq ptr %0, null br i1 %1, label %_llgo_1, label %_llgo_2 _llgo_1: ; preds = %_llgo_0 %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8) - %3 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %2, i32 0, i32 6 - %4 = load i8, ptr %3, align 1 - %5 = or i8 %4, 32 - store i8 %5, ptr %3, align 1 - store ptr %2, ptr @_llgo_byte, align 8 + %3 = call ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr %2) + store ptr %3, ptr @"[]_llgo_byte", align 8 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 - %6 = load ptr, ptr @_llgo_byte, align 8 - %7 = load ptr, ptr @"[]_llgo_byte", align 8 - %8 = icmp eq ptr %7, null - br i1 %8, label %_llgo_3, label %_llgo_4 + %4 = load ptr, ptr @"[]_llgo_byte", align 8 + %5 = load ptr, ptr @_llgo_int, align 8 + %6 = icmp eq ptr %5, null + br i1 %6, label %_llgo_3, label %_llgo_4 _llgo_3: ; preds = %_llgo_2 - %9 = call ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr %6) - store ptr %9, ptr @"[]_llgo_byte", align 8 + %7 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %8 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %7, i32 0, i32 6 + %9 = load i8, ptr %8, align 1 + %10 = or i8 %9, 32 + store i8 %10, ptr %8, align 1 + store ptr %7, ptr @_llgo_int, align 8 br label %_llgo_4 _llgo_4: ; preds = %_llgo_3, %_llgo_2 - %10 = load ptr, ptr @"[]_llgo_byte", align 8 %11 = load ptr, ptr @_llgo_int, align 8 - %12 = icmp eq ptr %11, null - br i1 %12, label %_llgo_5, label %_llgo_6 + %12 = load ptr, ptr @_llgo_string, align 8 + %13 = icmp eq ptr %12, null + br i1 %13, label %_llgo_5, label %_llgo_6 _llgo_5: ; preds = %_llgo_4 - %13 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) - %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %13, i32 0, i32 6 - %15 = load i8, ptr %14, align 1 - %16 = or i8 %15, 32 - store i8 %16, ptr %14, align 1 - store ptr %13, ptr @_llgo_int, align 8 + %14 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + store ptr %14, ptr @_llgo_string, align 8 br label %_llgo_6 _llgo_6: ; preds = %_llgo_5, %_llgo_4 - %17 = load ptr, ptr @_llgo_int, align 8 - %18 = load ptr, ptr @_llgo_string, align 8 - %19 = icmp eq ptr %18, null - br i1 %19, label %_llgo_7, label %_llgo_8 + %15 = load ptr, ptr @_llgo_string, align 8 + %16 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %17 = icmp eq ptr %16, null + br i1 %17, label %_llgo_7, label %_llgo_8 _llgo_7: ; preds = %_llgo_6 - %20 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) - store ptr %20, ptr @_llgo_string, align 8 + %18 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + %19 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %20 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %19, i32 0, i32 0 + store ptr %18, ptr %20, align 8 + %21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %19, i32 0, i32 1 + store i64 0, ptr %21, align 4 + %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %19, i32 0, i32 2 + store i64 0, ptr %22, align 4 + %23 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %19, align 8 + %24 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) + %25 = getelementptr ptr, ptr %24, i64 0 + store ptr %15, ptr %25, align 8 + %26 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %26, i32 0, i32 0 + store ptr %24, ptr %27, align 8 + %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %26, i32 0, i32 1 + store i64 1, ptr %28, align 4 + %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %26, i32 0, i32 2 + store i64 1, ptr %29, align 4 + %30 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %26, align 8 + %31 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %23, %"github.com/goplus/llgo/internal/runtime.Slice" %30, i1 false) + store ptr %31, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 br label %_llgo_8 _llgo_8: ; preds = %_llgo_7, %_llgo_6 - %21 = load ptr, ptr @_llgo_string, align 8 - %22 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %23 = icmp eq ptr %22, null - br i1 %23, label %_llgo_9, label %_llgo_10 + %32 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %33 = load ptr, ptr @_llgo_error, align 8 + %34 = icmp eq ptr %33, null + br i1 %34, label %_llgo_9, label %_llgo_10 _llgo_9: ; preds = %_llgo_8 - %24 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %25 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %25, i32 0, i32 0 - store ptr %24, ptr %26, align 8 - %27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %25, i32 0, i32 1 - store i64 0, ptr %27, align 4 - %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %25, i32 0, i32 2 - store i64 0, ptr %28, align 4 - %29 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %25, align 8 - %30 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %31 = getelementptr ptr, ptr %30, i64 0 - store ptr %21, ptr %31, align 8 - %32 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %32, i32 0, i32 0 - store ptr %30, ptr %33, align 8 - %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %32, i32 0, i32 1 - store i64 1, ptr %34, align 4 - %35 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %32, i32 0, i32 2 - store i64 1, ptr %35, align 4 - %36 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %32, align 8 - %37 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %29, %"github.com/goplus/llgo/internal/runtime.Slice" %36, i1 false) - store ptr %37, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %35 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %35, i32 0, i32 0 + store ptr @0, ptr %36, align 8 + %37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %35, i32 0, i32 1 + store i64 5, ptr %37, align 4 + %38 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %35, align 8 + %39 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %40 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %39, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %38, ptr %40, align 8 + %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %39, i32 0, i32 1 + store ptr %32, ptr %41, align 8 + %42 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %39, align 8 + %43 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %44 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %43, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %42, ptr %44, align 8 + %45 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %46 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %45, i32 0, i32 0 + store ptr %43, ptr %46, align 8 + %47 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %45, i32 0, i32 1 + store i64 1, ptr %47, align 4 + %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %45, i32 0, i32 2 + store i64 1, ptr %48, align 4 + %49 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %45, align 8 + %50 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %50, i32 0, i32 0 + store ptr @1, ptr %51, align 8 + %52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %50, i32 0, i32 1 + store i64 4, ptr %52, align 4 + %53 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %50, align 8 + %54 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %55 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %54, i32 0, i32 0 + store ptr @2, ptr %55, align 8 + %56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %54, i32 0, i32 1 + store i64 5, ptr %56, align 4 + %57 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %54, align 8 + %58 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %53, %"github.com/goplus/llgo/internal/runtime.String" %57, %"github.com/goplus/llgo/internal/runtime.Slice" %49) + store ptr %58, ptr @_llgo_error, align 8 br label %_llgo_10 _llgo_10: ; preds = %_llgo_9, %_llgo_8 - %38 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %39 = load ptr, ptr @_llgo_error, align 8 - %40 = icmp eq ptr %39, null - br i1 %40, label %_llgo_11, label %_llgo_12 + %59 = load ptr, ptr @_llgo_error, align 8 + %60 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %61 = icmp eq ptr %60, null + br i1 %61, label %_llgo_11, label %_llgo_12 _llgo_11: ; preds = %_llgo_10 - %41 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %42 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %41, i32 0, i32 0 - store ptr @0, ptr %42, align 8 - %43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %41, i32 0, i32 1 - store i64 5, ptr %43, align 4 - %44 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %41, align 8 - %45 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %46 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %45, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %44, ptr %46, align 8 - %47 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %45, i32 0, i32 1 - store ptr %38, ptr %47, align 8 - %48 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %45, align 8 - %49 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %50 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %49, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %48, ptr %50, align 8 - %51 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %51, i32 0, i32 0 - store ptr %49, ptr %52, align 8 - %53 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %51, i32 0, i32 1 - store i64 1, ptr %53, align 4 - %54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %51, i32 0, i32 2 - store i64 1, ptr %54, align 4 - %55 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %51, align 8 - %56 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %56, i32 0, i32 0 - store ptr @1, ptr %57, align 8 - %58 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %56, i32 0, i32 1 - store i64 4, ptr %58, align 4 - %59 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %56, align 8 - %60 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %61 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %60, i32 0, i32 0 - store ptr @2, ptr %61, align 8 - %62 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %60, i32 0, i32 1 - store i64 5, ptr %62, align 4 - %63 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %60, align 8 - %64 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %59, %"github.com/goplus/llgo/internal/runtime.String" %63, %"github.com/goplus/llgo/internal/runtime.Slice" %55) - store ptr %64, ptr @_llgo_error, align 8 + %62 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) + %63 = getelementptr ptr, ptr %62, i64 0 + store ptr %4, ptr %63, align 8 + %64 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %65 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %64, i32 0, i32 0 + store ptr %62, ptr %65, align 8 + %66 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %64, i32 0, i32 1 + store i64 1, ptr %66, align 4 + %67 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %64, i32 0, i32 2 + store i64 1, ptr %67, align 4 + %68 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %64, align 8 + %69 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + %70 = getelementptr ptr, ptr %69, i64 0 + store ptr %11, ptr %70, align 8 + %71 = getelementptr ptr, ptr %69, i64 1 + store ptr %59, ptr %71, align 8 + %72 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %72, i32 0, i32 0 + store ptr %69, ptr %73, align 8 + %74 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %72, i32 0, i32 1 + store i64 2, ptr %74, align 4 + %75 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %72, i32 0, i32 2 + store i64 2, ptr %75, align 4 + %76 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %72, align 8 + %77 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %68, %"github.com/goplus/llgo/internal/runtime.Slice" %76, i1 false) + store ptr %77, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 br label %_llgo_12 _llgo_12: ; preds = %_llgo_11, %_llgo_10 - %65 = load ptr, ptr @_llgo_error, align 8 - %66 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %67 = icmp eq ptr %66, null - br i1 %67, label %_llgo_13, label %_llgo_14 + %78 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %79 = load ptr, ptr @_llgo_main.Writer, align 8 + %80 = icmp eq ptr %79, null + br i1 %80, label %_llgo_13, label %_llgo_14 _llgo_13: ; preds = %_llgo_12 - %68 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %69 = getelementptr ptr, ptr %68, i64 0 - store ptr %10, ptr %69, align 8 - %70 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %70, i32 0, i32 0 - store ptr %68, ptr %71, align 8 - %72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %70, i32 0, i32 1 - store i64 1, ptr %72, align 4 - %73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %70, i32 0, i32 2 - store i64 1, ptr %73, align 4 - %74 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %70, align 8 - %75 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %76 = getelementptr ptr, ptr %75, i64 0 - store ptr %17, ptr %76, align 8 - %77 = getelementptr ptr, ptr %75, i64 1 - store ptr %65, ptr %77, align 8 - %78 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %79 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %78, i32 0, i32 0 - store ptr %75, ptr %79, align 8 - %80 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %78, i32 0, i32 1 - store i64 2, ptr %80, align 4 - %81 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %78, i32 0, i32 2 - store i64 2, ptr %81, align 4 - %82 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %78, align 8 - %83 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %74, %"github.com/goplus/llgo/internal/runtime.Slice" %82, i1 false) - store ptr %83, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %81 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %82 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %81, i32 0, i32 0 + store ptr @3, ptr %82, align 8 + %83 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %81, i32 0, i32 1 + store i64 5, ptr %83, align 4 + %84 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %81, align 8 + %85 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %86 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %85, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %84, ptr %86, align 8 + %87 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %85, i32 0, i32 1 + store ptr %78, ptr %87, align 8 + %88 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %85, align 8 + %89 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %90 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %89, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %88, ptr %90, align 8 + %91 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %92 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %91, i32 0, i32 0 + store ptr %89, ptr %92, align 8 + %93 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %91, i32 0, i32 1 + store i64 1, ptr %93, align 4 + %94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %91, i32 0, i32 2 + store i64 1, ptr %94, align 4 + %95 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %91, align 8 + %96 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %97 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %96, i32 0, i32 0 + store ptr @1, ptr %97, align 8 + %98 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %96, i32 0, i32 1 + store i64 4, ptr %98, align 4 + %99 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %96, align 8 + %100 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %100, i32 0, i32 0 + store ptr @4, ptr %101, align 8 + %102 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %100, i32 0, i32 1 + store i64 11, ptr %102, align 4 + %103 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %100, align 8 + %104 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %99, %"github.com/goplus/llgo/internal/runtime.String" %103, %"github.com/goplus/llgo/internal/runtime.Slice" %95) + store ptr %104, ptr @_llgo_main.Writer, align 8 br label %_llgo_14 _llgo_14: ; preds = %_llgo_13, %_llgo_12 - %84 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %85 = load ptr, ptr @_llgo_main.Writer, align 8 - %86 = icmp eq ptr %85, null - br i1 %86, label %_llgo_15, label %_llgo_16 + %105 = load ptr, ptr @_llgo_main.Writer, align 8 + %106 = load ptr, ptr @_llgo_int64, align 8 + %107 = icmp eq ptr %106, null + br i1 %107, label %_llgo_15, label %_llgo_16 _llgo_15: ; preds = %_llgo_14 - %87 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %88 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %87, i32 0, i32 0 - store ptr @3, ptr %88, align 8 - %89 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %87, i32 0, i32 1 - store i64 5, ptr %89, align 4 - %90 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %87, align 8 - %91 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %92 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %91, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %90, ptr %92, align 8 - %93 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %91, i32 0, i32 1 - store ptr %84, ptr %93, align 8 - %94 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %91, align 8 - %95 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %96 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %95, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %94, ptr %96, align 8 - %97 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %98 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %97, i32 0, i32 0 - store ptr %95, ptr %98, align 8 - %99 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %97, i32 0, i32 1 - store i64 1, ptr %99, align 4 - %100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %97, i32 0, i32 2 - store i64 1, ptr %100, align 4 - %101 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %97, align 8 - %102 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %103 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %102, i32 0, i32 0 - store ptr @1, ptr %103, align 8 - %104 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %102, i32 0, i32 1 - store i64 4, ptr %104, align 4 - %105 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %102, align 8 - %106 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %107 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %106, i32 0, i32 0 - store ptr @4, ptr %107, align 8 - %108 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %106, i32 0, i32 1 - store i64 11, ptr %108, align 4 - %109 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %106, align 8 - %110 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %105, %"github.com/goplus/llgo/internal/runtime.String" %109, %"github.com/goplus/llgo/internal/runtime.Slice" %101) - store ptr %110, ptr @_llgo_main.Writer, align 8 + %108 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 6) + %109 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %108, i32 0, i32 6 + %110 = load i8, ptr %109, align 1 + %111 = or i8 %110, 32 + store i8 %111, ptr %109, align 1 + store ptr %108, ptr @_llgo_int64, align 8 br label %_llgo_16 _llgo_16: ; preds = %_llgo_15, %_llgo_14 - %111 = load ptr, ptr @_llgo_main.Writer, align 8 %112 = load ptr, ptr @_llgo_int64, align 8 - %113 = icmp eq ptr %112, null - br i1 %113, label %_llgo_17, label %_llgo_18 + %113 = load ptr, ptr @_llgo_error, align 8 + %114 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 + %115 = icmp eq ptr %114, null + br i1 %115, label %_llgo_17, label %_llgo_18 _llgo_17: ; preds = %_llgo_16 - %114 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 6) - %115 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %114, i32 0, i32 6 - %116 = load i8, ptr %115, align 1 - %117 = or i8 %116, 32 - store i8 %117, ptr %115, align 1 - store ptr %114, ptr @_llgo_int64, align 8 + %116 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) + %117 = getelementptr ptr, ptr %116, i64 0 + store ptr %105, ptr %117, align 8 + %118 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %119 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %118, i32 0, i32 0 + store ptr %116, ptr %119, align 8 + %120 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %118, i32 0, i32 1 + store i64 1, ptr %120, align 4 + %121 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %118, i32 0, i32 2 + store i64 1, ptr %121, align 4 + %122 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %118, align 8 + %123 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + %124 = getelementptr ptr, ptr %123, i64 0 + store ptr %112, ptr %124, align 8 + %125 = getelementptr ptr, ptr %123, i64 1 + store ptr %113, ptr %125, align 8 + %126 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %127 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 0 + store ptr %123, ptr %127, align 8 + %128 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 1 + store i64 2, ptr %128, align 4 + %129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 2 + store i64 2, ptr %129, align 4 + %130 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, align 8 + %131 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %122, %"github.com/goplus/llgo/internal/runtime.Slice" %130, i1 false) + store ptr %131, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 br label %_llgo_18 _llgo_18: ; preds = %_llgo_17, %_llgo_16 - %118 = load ptr, ptr @_llgo_int64, align 8 - %119 = load ptr, ptr @_llgo_error, align 8 - %120 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 - %121 = icmp eq ptr %120, null - br i1 %121, label %_llgo_19, label %_llgo_20 + %132 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 + %133 = load ptr, ptr @_llgo_main.WriterTo, align 8 + %134 = icmp eq ptr %133, null + br i1 %134, label %_llgo_19, label %_llgo_20 _llgo_19: ; preds = %_llgo_18 - %122 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %123 = getelementptr ptr, ptr %122, i64 0 - store ptr %111, ptr %123, align 8 - %124 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %125 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %124, i32 0, i32 0 - store ptr %122, ptr %125, align 8 - %126 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %124, i32 0, i32 1 - store i64 1, ptr %126, align 4 - %127 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %124, i32 0, i32 2 - store i64 1, ptr %127, align 4 - %128 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %124, align 8 - %129 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %130 = getelementptr ptr, ptr %129, i64 0 - store ptr %118, ptr %130, align 8 - %131 = getelementptr ptr, ptr %129, i64 1 - store ptr %119, ptr %131, align 8 - %132 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %133 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, i32 0, i32 0 - store ptr %129, ptr %133, align 8 - %134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, i32 0, i32 1 - store i64 2, ptr %134, align 4 - %135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, i32 0, i32 2 - store i64 2, ptr %135, align 4 - %136 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, align 8 - %137 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %128, %"github.com/goplus/llgo/internal/runtime.Slice" %136, i1 false) - store ptr %137, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 + %135 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %136 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %135, i32 0, i32 0 + store ptr @5, ptr %136, align 8 + %137 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %135, i32 0, i32 1 + store i64 7, ptr %137, align 4 + %138 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %135, align 8 + %139 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %140 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %139, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %138, ptr %140, align 8 + %141 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %139, i32 0, i32 1 + store ptr %132, ptr %141, align 8 + %142 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %139, align 8 + %143 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %144 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %143, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %142, ptr %144, align 8 + %145 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %146 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %145, i32 0, i32 0 + store ptr %143, ptr %146, align 8 + %147 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %145, i32 0, i32 1 + store i64 1, ptr %147, align 4 + %148 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %145, i32 0, i32 2 + store i64 1, ptr %148, align 4 + %149 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %145, align 8 + %150 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %151 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %150, i32 0, i32 0 + store ptr @1, ptr %151, align 8 + %152 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %150, i32 0, i32 1 + store i64 4, ptr %152, align 4 + %153 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %150, align 8 + %154 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %155 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %154, i32 0, i32 0 + store ptr @6, ptr %155, align 8 + %156 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %154, i32 0, i32 1 + store i64 13, ptr %156, align 4 + %157 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %154, align 8 + %158 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %153, %"github.com/goplus/llgo/internal/runtime.String" %157, %"github.com/goplus/llgo/internal/runtime.Slice" %149) + store ptr %158, ptr @_llgo_main.WriterTo, align 8 br label %_llgo_20 _llgo_20: ; preds = %_llgo_19, %_llgo_18 - %138 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 - %139 = load ptr, ptr @_llgo_main.WriterTo, align 8 - %140 = icmp eq ptr %139, null - br i1 %140, label %_llgo_21, label %_llgo_22 + %159 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 + %160 = load ptr, ptr @"_llgo_iface$eN81k1zqixGTyagHw_4nqH4mGfwwehTOCTXUlbT9kzk", align 8 + %161 = icmp eq ptr %160, null + br i1 %161, label %_llgo_21, label %_llgo_22 _llgo_21: ; preds = %_llgo_20 - %141 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %142 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %141, i32 0, i32 0 - store ptr @5, ptr %142, align 8 - %143 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %141, i32 0, i32 1 - store i64 7, ptr %143, align 4 - %144 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %141, align 8 - %145 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %146 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %145, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %144, ptr %146, align 8 - %147 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %145, i32 0, i32 1 - store ptr %138, ptr %147, align 8 - %148 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %145, align 8 - %149 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %150 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %149, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %148, ptr %150, align 8 - %151 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %152 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %151, i32 0, i32 0 - store ptr %149, ptr %152, align 8 - %153 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %151, i32 0, i32 1 - store i64 1, ptr %153, align 4 - %154 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %151, i32 0, i32 2 - store i64 1, ptr %154, align 4 - %155 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %151, align 8 - %156 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %157 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %156, i32 0, i32 0 - store ptr @1, ptr %157, align 8 - %158 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %156, i32 0, i32 1 - store i64 4, ptr %158, align 4 - %159 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %156, align 8 - %160 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %161 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %160, i32 0, i32 0 - store ptr @6, ptr %161, align 8 - %162 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %160, i32 0, i32 1 - store i64 13, ptr %162, align 4 - %163 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %160, align 8 - %164 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %159, %"github.com/goplus/llgo/internal/runtime.String" %163, %"github.com/goplus/llgo/internal/runtime.Slice" %155) - store ptr %164, ptr @_llgo_main.WriterTo, align 8 + %162 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %163 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %162, i32 0, i32 0 + store ptr @5, ptr %163, align 8 + %164 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %162, i32 0, i32 1 + store i64 7, ptr %164, align 4 + %165 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %162, align 8 + %166 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %167 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %166, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %165, ptr %167, align 8 + %168 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %166, i32 0, i32 1 + store ptr %159, ptr %168, align 8 + %169 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %166, align 8 + %170 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %171 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %170, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %169, ptr %171, align 8 + %172 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %173 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %172, i32 0, i32 0 + store ptr %170, ptr %173, align 8 + %174 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %172, i32 0, i32 1 + store i64 1, ptr %174, align 4 + %175 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %172, i32 0, i32 2 + store i64 1, ptr %175, align 4 + %176 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %172, align 8 + %177 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %178 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %177, i32 0, i32 0 + store ptr @1, ptr %178, align 8 + %179 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %177, i32 0, i32 1 + store i64 4, ptr %179, align 4 + %180 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %177, align 8 + %181 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %182 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %181, i32 0, i32 0 + store ptr null, ptr %182, align 8 + %183 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %181, i32 0, i32 1 + store i64 0, ptr %183, align 4 + %184 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %181, align 8 + %185 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %180, %"github.com/goplus/llgo/internal/runtime.String" %184, %"github.com/goplus/llgo/internal/runtime.Slice" %176) + store ptr %185, ptr @"_llgo_iface$eN81k1zqixGTyagHw_4nqH4mGfwwehTOCTXUlbT9kzk", align 8 br label %_llgo_22 _llgo_22: ; preds = %_llgo_21, %_llgo_20 - %165 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 - %166 = load ptr, ptr @"_llgo_iface$eN81k1zqixGTyagHw_4nqH4mGfwwehTOCTXUlbT9kzk", align 8 - %167 = icmp eq ptr %166, null - br i1 %167, label %_llgo_23, label %_llgo_24 + %186 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 3, i64 3) + store ptr %186, ptr @_llgo_main.nopCloserWriterTo, align 8 + %187 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %188 = load ptr, ptr @_llgo_main.Reader, align 8 + %189 = icmp eq ptr %188, null + br i1 %189, label %_llgo_23, label %_llgo_24 _llgo_23: ; preds = %_llgo_22 - %168 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %169 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %168, i32 0, i32 0 - store ptr @5, ptr %169, align 8 - %170 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %168, i32 0, i32 1 - store i64 7, ptr %170, align 4 - %171 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %168, align 8 - %172 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %173 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %172, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %171, ptr %173, align 8 - %174 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %172, i32 0, i32 1 - store ptr %165, ptr %174, align 8 - %175 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %172, align 8 - %176 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %177 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %176, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %175, ptr %177, align 8 - %178 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %179 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %178, i32 0, i32 0 - store ptr %176, ptr %179, align 8 - %180 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %178, i32 0, i32 1 - store i64 1, ptr %180, align 4 - %181 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %178, i32 0, i32 2 - store i64 1, ptr %181, align 4 - %182 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %178, align 8 - %183 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %184 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %183, i32 0, i32 0 - store ptr @1, ptr %184, align 8 - %185 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %183, i32 0, i32 1 - store i64 4, ptr %185, align 4 - %186 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %183, align 8 - %187 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %188 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %187, i32 0, i32 0 - store ptr null, ptr %188, align 8 - %189 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %187, i32 0, i32 1 - store i64 0, ptr %189, align 4 - %190 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %187, align 8 - %191 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %186, %"github.com/goplus/llgo/internal/runtime.String" %190, %"github.com/goplus/llgo/internal/runtime.Slice" %182) - store ptr %191, ptr @"_llgo_iface$eN81k1zqixGTyagHw_4nqH4mGfwwehTOCTXUlbT9kzk", align 8 + %190 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %191 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %190, i32 0, i32 0 + store ptr @7, ptr %191, align 8 + %192 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %190, i32 0, i32 1 + store i64 4, ptr %192, align 4 + %193 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %190, align 8 + %194 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %195 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %194, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %193, ptr %195, align 8 + %196 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %194, i32 0, i32 1 + store ptr %187, ptr %196, align 8 + %197 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %194, align 8 + %198 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %199 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %198, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %197, ptr %199, align 8 + %200 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %201 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %200, i32 0, i32 0 + store ptr %198, ptr %201, align 8 + %202 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %200, i32 0, i32 1 + store i64 1, ptr %202, align 4 + %203 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %200, i32 0, i32 2 + store i64 1, ptr %203, align 4 + %204 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %200, align 8 + %205 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %206 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %205, i32 0, i32 0 + store ptr @1, ptr %206, align 8 + %207 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %205, i32 0, i32 1 + store i64 4, ptr %207, align 4 + %208 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %205, align 8 + %209 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %210 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %209, i32 0, i32 0 + store ptr @8, ptr %210, align 8 + %211 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %209, i32 0, i32 1 + store i64 11, ptr %211, align 4 + %212 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %209, align 8 + %213 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %208, %"github.com/goplus/llgo/internal/runtime.String" %212, %"github.com/goplus/llgo/internal/runtime.Slice" %204) + store ptr %213, ptr @_llgo_main.Reader, align 8 br label %_llgo_24 _llgo_24: ; preds = %_llgo_23, %_llgo_22 - %192 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 3, i64 3) - store ptr %192, ptr @_llgo_main.nopCloserWriterTo, align 8 - %193 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %194 = load ptr, ptr @_llgo_main.Reader, align 8 - %195 = icmp eq ptr %194, null - br i1 %195, label %_llgo_25, label %_llgo_26 + %214 = load ptr, ptr @_llgo_main.Reader, align 8 + %215 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 + %216 = icmp eq ptr %215, null + br i1 %216, label %_llgo_25, label %_llgo_26 _llgo_25: ; preds = %_llgo_24 - %196 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %197 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %196, i32 0, i32 0 - store ptr @7, ptr %197, align 8 - %198 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %196, i32 0, i32 1 - store i64 4, ptr %198, align 4 - %199 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %196, align 8 - %200 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %201 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %200, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %199, ptr %201, align 8 - %202 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %200, i32 0, i32 1 - store ptr %193, ptr %202, align 8 - %203 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %200, align 8 - %204 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %205 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %204, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %203, ptr %205, align 8 - %206 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %207 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %206, i32 0, i32 0 - store ptr %204, ptr %207, align 8 - %208 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %206, i32 0, i32 1 - store i64 1, ptr %208, align 4 - %209 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %206, i32 0, i32 2 - store i64 1, ptr %209, align 4 - %210 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %206, align 8 - %211 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %212 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %211, i32 0, i32 0 - store ptr @1, ptr %212, align 8 - %213 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %211, i32 0, i32 1 - store i64 4, ptr %213, align 4 - %214 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %211, align 8 - %215 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %216 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %215, i32 0, i32 0 - store ptr @8, ptr %216, align 8 - %217 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %215, i32 0, i32 1 - store i64 11, ptr %217, align 4 - %218 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %215, align 8 - %219 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %214, %"github.com/goplus/llgo/internal/runtime.String" %218, %"github.com/goplus/llgo/internal/runtime.Slice" %210) - store ptr %219, ptr @_llgo_main.Reader, align 8 + %217 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %218 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %217, i32 0, i32 0 + store ptr @9, ptr %218, align 8 + %219 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %217, i32 0, i32 1 + store i64 6, ptr %219, align 4 + %220 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %217, align 8 + %221 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %222 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %221, i32 0, i32 0 + store ptr null, ptr %222, align 8 + %223 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %221, i32 0, i32 1 + store i64 0, ptr %223, align 4 + %224 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %221, align 8 + %225 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %220, ptr %214, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %224, i1 true) + %226 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %227 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %226, i32 0, i32 0 + store ptr @1, ptr %227, align 8 + %228 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %226, i32 0, i32 1 + store i64 4, ptr %228, align 4 + %229 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %226, align 8 + %230 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) + %231 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %230, i64 0 + store %"github.com/goplus/llgo/internal/abi.StructField" %225, ptr %231, align 8 + %232 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %233 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %232, i32 0, i32 0 + store ptr %230, ptr %233, align 8 + %234 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %232, i32 0, i32 1 + store i64 1, ptr %234, align 4 + %235 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %232, i32 0, i32 2 + store i64 1, ptr %235, align 4 + %236 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %232, align 8 + %237 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %229, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %236) + store ptr %237, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 br label %_llgo_26 _llgo_26: ; preds = %_llgo_25, %_llgo_24 - %220 = load ptr, ptr @_llgo_main.Reader, align 8 - %221 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 - %222 = icmp eq ptr %221, null - br i1 %222, label %_llgo_27, label %_llgo_28 + %238 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 + %239 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %240 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %239, i32 0, i32 0 + store ptr @10, ptr %240, align 8 + %241 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %239, i32 0, i32 1 + store i64 5, ptr %241, align 4 + %242 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %239, align 8 + %243 = load ptr, ptr @_llgo_error, align 8 + %244 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %245 = icmp eq ptr %244, null + br i1 %245, label %_llgo_27, label %_llgo_28 _llgo_27: ; preds = %_llgo_26 - %223 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %224 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %223, i32 0, i32 0 - store ptr @9, ptr %224, align 8 - %225 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %223, i32 0, i32 1 - store i64 6, ptr %225, align 4 - %226 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %223, align 8 - %227 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %228 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %227, i32 0, i32 0 - store ptr null, ptr %228, align 8 - %229 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %227, i32 0, i32 1 - store i64 0, ptr %229, align 4 - %230 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %227, align 8 - %231 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %226, ptr %220, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %230, i1 true) - %232 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %233 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %232, i32 0, i32 0 - store ptr @1, ptr %233, align 8 - %234 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %232, i32 0, i32 1 - store i64 4, ptr %234, align 4 - %235 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %232, align 8 - %236 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) - %237 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %236, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %231, ptr %237, align 8 - %238 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %239 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %238, i32 0, i32 0 - store ptr %236, ptr %239, align 8 - %240 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %238, i32 0, i32 1 - store i64 1, ptr %240, align 4 - %241 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %238, i32 0, i32 2 - store i64 1, ptr %241, align 4 - %242 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %238, align 8 - %243 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %235, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %242) - store ptr %243, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 + %246 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + %247 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %248 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %247, i32 0, i32 0 + store ptr %246, ptr %248, align 8 + %249 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %247, i32 0, i32 1 + store i64 0, ptr %249, align 4 + %250 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %247, i32 0, i32 2 + store i64 0, ptr %250, align 4 + %251 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %247, align 8 + %252 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) + %253 = getelementptr ptr, ptr %252, i64 0 + store ptr %243, ptr %253, align 8 + %254 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %255 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %254, i32 0, i32 0 + store ptr %252, ptr %255, align 8 + %256 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %254, i32 0, i32 1 + store i64 1, ptr %256, align 4 + %257 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %254, i32 0, i32 2 + store i64 1, ptr %257, align 4 + %258 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %254, align 8 + %259 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %251, %"github.com/goplus/llgo/internal/runtime.Slice" %258, i1 false) + store ptr %259, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 br label %_llgo_28 _llgo_28: ; preds = %_llgo_27, %_llgo_26 - %244 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 - %245 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %246 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %245, i32 0, i32 0 - store ptr @10, ptr %246, align 8 - %247 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %245, i32 0, i32 1 - store i64 5, ptr %247, align 4 - %248 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %245, align 8 - %249 = load ptr, ptr @_llgo_error, align 8 - %250 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - %251 = icmp eq ptr %250, null - br i1 %251, label %_llgo_29, label %_llgo_30 - -_llgo_29: ; preds = %_llgo_28 - %252 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %253 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %254 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %253, i32 0, i32 0 - store ptr %252, ptr %254, align 8 - %255 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %253, i32 0, i32 1 - store i64 0, ptr %255, align 4 - %256 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %253, i32 0, i32 2 - store i64 0, ptr %256, align 4 - %257 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %253, align 8 - %258 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %259 = getelementptr ptr, ptr %258, i64 0 - store ptr %249, ptr %259, align 8 - %260 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %261 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %260, i32 0, i32 0 - store ptr %258, ptr %261, align 8 - %262 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %260, i32 0, i32 1 - store i64 1, ptr %262, align 4 - %263 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %260, i32 0, i32 2 - store i64 1, ptr %263, align 4 - %264 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %260, align 8 - %265 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %257, %"github.com/goplus/llgo/internal/runtime.Slice" %264, i1 false) - store ptr %265, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - br label %_llgo_30 - -_llgo_30: ; preds = %_llgo_29, %_llgo_28 - %266 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %260 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %261 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 + %262 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %261, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %242, ptr %262, align 8 + %263 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %261, i32 0, i32 1 + store ptr %260, ptr %263, align 8 + %264 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %261, i32 0, i32 2 + store ptr @"main.(*nopCloserWriterTo).Close", ptr %264, align 8 + %265 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %261, i32 0, i32 3 + store ptr @"main.(*nopCloserWriterTo).Close", ptr %265, align 8 + %266 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %261, align 8 %267 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 %268 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %267, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %248, ptr %268, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %242, ptr %268, align 8 %269 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %267, i32 0, i32 1 - store ptr %266, ptr %269, align 8 + store ptr %260, ptr %269, align 8 %270 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %267, i32 0, i32 2 store ptr @"main.(*nopCloserWriterTo).Close", ptr %270, align 8 %271 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %267, i32 0, i32 3 - store ptr @"main.(*nopCloserWriterTo).Close", ptr %271, align 8 + store ptr @main.nopCloserWriterTo.Close, ptr %271, align 8 %272 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %267, align 8 - %273 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %274 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %248, ptr %274, align 8 - %275 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 1 - store ptr %266, ptr %275, align 8 - %276 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 2 - store ptr @"main.(*nopCloserWriterTo).Close", ptr %276, align 8 - %277 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %273, i32 0, i32 3 - store ptr @main.nopCloserWriterTo.Close, ptr %277, align 8 - %278 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %273, align 8 - %279 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %280 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %279, i32 0, i32 0 - store ptr @7, ptr %280, align 8 - %281 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %279, i32 0, i32 1 - store i64 4, ptr %281, align 4 - %282 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %279, align 8 - %283 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %273 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %274 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %273, i32 0, i32 0 + store ptr @7, ptr %274, align 8 + %275 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %273, i32 0, i32 1 + store i64 4, ptr %275, align 4 + %276 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %273, align 8 + %277 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %278 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 + %279 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %278, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %276, ptr %279, align 8 + %280 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %278, i32 0, i32 1 + store ptr %277, ptr %280, align 8 + %281 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %278, i32 0, i32 2 + store ptr @"main.(*nopCloserWriterTo).Read", ptr %281, align 8 + %282 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %278, i32 0, i32 3 + store ptr @"main.(*nopCloserWriterTo).Read", ptr %282, align 8 + %283 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %278, align 8 %284 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 %285 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %284, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %282, ptr %285, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %276, ptr %285, align 8 %286 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %284, i32 0, i32 1 - store ptr %283, ptr %286, align 8 + store ptr %277, ptr %286, align 8 %287 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %284, i32 0, i32 2 store ptr @"main.(*nopCloserWriterTo).Read", ptr %287, align 8 %288 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %284, i32 0, i32 3 - store ptr @"main.(*nopCloserWriterTo).Read", ptr %288, align 8 + store ptr @main.nopCloserWriterTo.Read, ptr %288, align 8 %289 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %284, align 8 - %290 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %291 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %290, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %282, ptr %291, align 8 - %292 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %290, i32 0, i32 1 - store ptr %283, ptr %292, align 8 - %293 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %290, i32 0, i32 2 - store ptr @"main.(*nopCloserWriterTo).Read", ptr %293, align 8 - %294 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %290, i32 0, i32 3 - store ptr @main.nopCloserWriterTo.Read, ptr %294, align 8 - %295 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %290, align 8 - %296 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %297 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %296, i32 0, i32 0 - store ptr @5, ptr %297, align 8 - %298 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %296, i32 0, i32 1 - store i64 7, ptr %298, align 4 - %299 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %296, align 8 - %300 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 + %290 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %291 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %290, i32 0, i32 0 + store ptr @5, ptr %291, align 8 + %292 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %290, i32 0, i32 1 + store i64 7, ptr %292, align 4 + %293 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %290, align 8 + %294 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 + %295 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 + %296 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %295, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %293, ptr %296, align 8 + %297 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %295, i32 0, i32 1 + store ptr %294, ptr %297, align 8 + %298 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %295, i32 0, i32 2 + store ptr @"main.(*nopCloserWriterTo).WriteTo", ptr %298, align 8 + %299 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %295, i32 0, i32 3 + store ptr @"main.(*nopCloserWriterTo).WriteTo", ptr %299, align 8 + %300 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %295, align 8 %301 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 %302 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %301, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %299, ptr %302, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %293, ptr %302, align 8 %303 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %301, i32 0, i32 1 - store ptr %300, ptr %303, align 8 + store ptr %294, ptr %303, align 8 %304 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %301, i32 0, i32 2 store ptr @"main.(*nopCloserWriterTo).WriteTo", ptr %304, align 8 %305 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %301, i32 0, i32 3 - store ptr @"main.(*nopCloserWriterTo).WriteTo", ptr %305, align 8 + store ptr @main.nopCloserWriterTo.WriteTo, ptr %305, align 8 %306 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %301, align 8 - %307 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %308 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %307, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %299, ptr %308, align 8 - %309 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %307, i32 0, i32 1 - store ptr %300, ptr %309, align 8 - %310 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %307, i32 0, i32 2 - store ptr @"main.(*nopCloserWriterTo).WriteTo", ptr %310, align 8 - %311 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %307, i32 0, i32 3 - store ptr @main.nopCloserWriterTo.WriteTo, ptr %311, align 8 - %312 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %307, align 8 - %313 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 120) - %314 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %313, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %278, ptr %314, align 8 - %315 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %313, i64 1 - store %"github.com/goplus/llgo/internal/abi.Method" %295, ptr %315, align 8 - %316 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %313, i64 2 - store %"github.com/goplus/llgo/internal/abi.Method" %312, ptr %316, align 8 - %317 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %318 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %317, i32 0, i32 0 - store ptr %313, ptr %318, align 8 - %319 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %317, i32 0, i32 1 - store i64 3, ptr %319, align 4 - %320 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %317, i32 0, i32 2 - store i64 3, ptr %320, align 4 - %321 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %317, align 8 - %322 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 120) - %323 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %322, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %272, ptr %323, align 8 - %324 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %322, i64 1 - store %"github.com/goplus/llgo/internal/abi.Method" %289, ptr %324, align 8 - %325 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %322, i64 2 - store %"github.com/goplus/llgo/internal/abi.Method" %306, ptr %325, align 8 - %326 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %327 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, i32 0, i32 0 - store ptr %322, ptr %327, align 8 - %328 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, i32 0, i32 1 - store i64 3, ptr %328, align 4 - %329 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, i32 0, i32 2 - store i64 3, ptr %329, align 4 - %330 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %326, align 8 - %331 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %332 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %331, i32 0, i32 0 - store ptr @1, ptr %332, align 8 - %333 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %331, i32 0, i32 1 - store i64 4, ptr %333, align 4 - %334 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %331, align 8 - %335 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %336 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %335, i32 0, i32 0 - store ptr @11, ptr %336, align 8 - %337 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %335, i32 0, i32 1 - store i64 17, ptr %337, align 4 - %338 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %335, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %192, %"github.com/goplus/llgo/internal/runtime.String" %334, %"github.com/goplus/llgo/internal/runtime.String" %338, ptr %244, %"github.com/goplus/llgo/internal/runtime.Slice" %321, %"github.com/goplus/llgo/internal/runtime.Slice" %330) - %339 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - %340 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %341 = load ptr, ptr @"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I", align 8 - %342 = icmp eq ptr %341, null - br i1 %342, label %_llgo_31, label %_llgo_32 + %307 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 120) + %308 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %307, i64 0 + store %"github.com/goplus/llgo/internal/abi.Method" %272, ptr %308, align 8 + %309 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %307, i64 1 + store %"github.com/goplus/llgo/internal/abi.Method" %289, ptr %309, align 8 + %310 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %307, i64 2 + store %"github.com/goplus/llgo/internal/abi.Method" %306, ptr %310, align 8 + %311 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %312 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %311, i32 0, i32 0 + store ptr %307, ptr %312, align 8 + %313 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %311, i32 0, i32 1 + store i64 3, ptr %313, align 4 + %314 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %311, i32 0, i32 2 + store i64 3, ptr %314, align 4 + %315 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %311, align 8 + %316 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 120) + %317 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %316, i64 0 + store %"github.com/goplus/llgo/internal/abi.Method" %266, ptr %317, align 8 + %318 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %316, i64 1 + store %"github.com/goplus/llgo/internal/abi.Method" %283, ptr %318, align 8 + %319 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %316, i64 2 + store %"github.com/goplus/llgo/internal/abi.Method" %300, ptr %319, align 8 + %320 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %321 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %320, i32 0, i32 0 + store ptr %316, ptr %321, align 8 + %322 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %320, i32 0, i32 1 + store i64 3, ptr %322, align 4 + %323 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %320, i32 0, i32 2 + store i64 3, ptr %323, align 4 + %324 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %320, align 8 + %325 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %326 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %325, i32 0, i32 0 + store ptr @1, ptr %326, align 8 + %327 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %325, i32 0, i32 1 + store i64 4, ptr %327, align 4 + %328 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %325, align 8 + %329 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %330 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %329, i32 0, i32 0 + store ptr @11, ptr %330, align 8 + %331 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %329, i32 0, i32 1 + store i64 17, ptr %331, align 4 + %332 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %329, align 8 + call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %186, %"github.com/goplus/llgo/internal/runtime.String" %328, %"github.com/goplus/llgo/internal/runtime.String" %332, ptr %238, %"github.com/goplus/llgo/internal/runtime.Slice" %315, %"github.com/goplus/llgo/internal/runtime.Slice" %324) + %333 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %334 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %335 = load ptr, ptr @"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I", align 8 + %336 = icmp eq ptr %335, null + br i1 %336, label %_llgo_29, label %_llgo_30 -_llgo_31: ; preds = %_llgo_30 - %343 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %344 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %343, i32 0, i32 0 - store ptr @10, ptr %344, align 8 - %345 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %343, i32 0, i32 1 - store i64 5, ptr %345, align 4 - %346 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %343, align 8 - %347 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %348 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %347, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %346, ptr %348, align 8 - %349 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %347, i32 0, i32 1 - store ptr %339, ptr %349, align 8 - %350 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %347, align 8 - %351 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %352 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %351, i32 0, i32 0 - store ptr @7, ptr %352, align 8 - %353 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %351, i32 0, i32 1 - store i64 4, ptr %353, align 4 - %354 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %351, align 8 - %355 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %356 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %355, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %354, ptr %356, align 8 - %357 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %355, i32 0, i32 1 - store ptr %340, ptr %357, align 8 - %358 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %355, align 8 - %359 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) - %360 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %359, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %350, ptr %360, align 8 - %361 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %359, i64 1 - store %"github.com/goplus/llgo/internal/abi.Imethod" %358, ptr %361, align 8 - %362 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %363 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %362, i32 0, i32 0 - store ptr %359, ptr %363, align 8 - %364 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %362, i32 0, i32 1 - store i64 2, ptr %364, align 4 - %365 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %362, i32 0, i32 2 - store i64 2, ptr %365, align 4 - %366 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %362, align 8 - %367 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %368 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %367, i32 0, i32 0 - store ptr @1, ptr %368, align 8 - %369 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %367, i32 0, i32 1 - store i64 4, ptr %369, align 4 - %370 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %367, align 8 - %371 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %372 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %371, i32 0, i32 0 - store ptr null, ptr %372, align 8 - %373 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %371, i32 0, i32 1 - store i64 0, ptr %373, align 4 - %374 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %371, align 8 - %375 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %370, %"github.com/goplus/llgo/internal/runtime.String" %374, %"github.com/goplus/llgo/internal/runtime.Slice" %366) - store ptr %375, ptr @"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I", align 8 - br label %_llgo_32 +_llgo_29: ; preds = %_llgo_28 + %337 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %338 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %337, i32 0, i32 0 + store ptr @10, ptr %338, align 8 + %339 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %337, i32 0, i32 1 + store i64 5, ptr %339, align 4 + %340 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %337, align 8 + %341 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %342 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %341, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %340, ptr %342, align 8 + %343 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %341, i32 0, i32 1 + store ptr %333, ptr %343, align 8 + %344 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %341, align 8 + %345 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %346 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %345, i32 0, i32 0 + store ptr @7, ptr %346, align 8 + %347 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %345, i32 0, i32 1 + store i64 4, ptr %347, align 4 + %348 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %345, align 8 + %349 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %350 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %349, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %348, ptr %350, align 8 + %351 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %349, i32 0, i32 1 + store ptr %334, ptr %351, align 8 + %352 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %349, align 8 + %353 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 48) + %354 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %353, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %344, ptr %354, align 8 + %355 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %353, i64 1 + store %"github.com/goplus/llgo/internal/abi.Imethod" %352, ptr %355, align 8 + %356 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %357 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %356, i32 0, i32 0 + store ptr %353, ptr %357, align 8 + %358 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %356, i32 0, i32 1 + store i64 2, ptr %358, align 4 + %359 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %356, i32 0, i32 2 + store i64 2, ptr %359, align 4 + %360 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %356, align 8 + %361 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %362 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %361, i32 0, i32 0 + store ptr @1, ptr %362, align 8 + %363 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %361, i32 0, i32 1 + store i64 4, ptr %363, align 4 + %364 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %361, align 8 + %365 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %366 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %365, i32 0, i32 0 + store ptr null, ptr %366, align 8 + %367 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %365, i32 0, i32 1 + store i64 0, ptr %367, align 4 + %368 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %365, align 8 + %369 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %364, %"github.com/goplus/llgo/internal/runtime.String" %368, %"github.com/goplus/llgo/internal/runtime.Slice" %360) + store ptr %369, ptr @"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I", align 8 + br label %_llgo_30 -_llgo_32: ; preds = %_llgo_31, %_llgo_30 - %376 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 2, i64 2) - store ptr %376, ptr @_llgo_main.nopCloser, align 8 - %377 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 - %378 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %379 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %378, i32 0, i32 0 - store ptr @10, ptr %379, align 8 - %380 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %378, i32 0, i32 1 - store i64 5, ptr %380, align 4 - %381 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %378, align 8 - %382 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 +_llgo_30: ; preds = %_llgo_29, %_llgo_28 + %370 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 2, i64 2) + store ptr %370, ptr @_llgo_main.nopCloser, align 8 + %371 = load ptr, ptr @"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y", align 8 + %372 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %373 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %372, i32 0, i32 0 + store ptr @10, ptr %373, align 8 + %374 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %372, i32 0, i32 1 + store i64 5, ptr %374, align 4 + %375 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %372, align 8 + %376 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 + %377 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 + %378 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %377, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %375, ptr %378, align 8 + %379 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %377, i32 0, i32 1 + store ptr %376, ptr %379, align 8 + %380 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %377, i32 0, i32 2 + store ptr @"main.(*nopCloser).Close", ptr %380, align 8 + %381 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %377, i32 0, i32 3 + store ptr @"main.(*nopCloser).Close", ptr %381, align 8 + %382 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %377, align 8 %383 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 %384 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %383, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %381, ptr %384, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %375, ptr %384, align 8 %385 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %383, i32 0, i32 1 - store ptr %382, ptr %385, align 8 + store ptr %376, ptr %385, align 8 %386 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %383, i32 0, i32 2 store ptr @"main.(*nopCloser).Close", ptr %386, align 8 %387 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %383, i32 0, i32 3 - store ptr @"main.(*nopCloser).Close", ptr %387, align 8 + store ptr @main.nopCloser.Close, ptr %387, align 8 %388 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %383, align 8 - %389 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %390 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %389, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %381, ptr %390, align 8 - %391 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %389, i32 0, i32 1 - store ptr %382, ptr %391, align 8 - %392 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %389, i32 0, i32 2 - store ptr @"main.(*nopCloser).Close", ptr %392, align 8 - %393 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %389, i32 0, i32 3 - store ptr @main.nopCloser.Close, ptr %393, align 8 - %394 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %389, align 8 - %395 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %396 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %395, i32 0, i32 0 - store ptr @7, ptr %396, align 8 - %397 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %395, i32 0, i32 1 - store i64 4, ptr %397, align 4 - %398 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %395, align 8 - %399 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %389 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %390 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %389, i32 0, i32 0 + store ptr @7, ptr %390, align 8 + %391 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %389, i32 0, i32 1 + store i64 4, ptr %391, align 4 + %392 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %389, align 8 + %393 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %394 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 + %395 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %394, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %392, ptr %395, align 8 + %396 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %394, i32 0, i32 1 + store ptr %393, ptr %396, align 8 + %397 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %394, i32 0, i32 2 + store ptr @"main.(*nopCloser).Read", ptr %397, align 8 + %398 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %394, i32 0, i32 3 + store ptr @"main.(*nopCloser).Read", ptr %398, align 8 + %399 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %394, align 8 %400 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 %401 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %400, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %398, ptr %401, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %392, ptr %401, align 8 %402 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %400, i32 0, i32 1 - store ptr %399, ptr %402, align 8 + store ptr %393, ptr %402, align 8 %403 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %400, i32 0, i32 2 store ptr @"main.(*nopCloser).Read", ptr %403, align 8 %404 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %400, i32 0, i32 3 - store ptr @"main.(*nopCloser).Read", ptr %404, align 8 + store ptr @main.nopCloser.Read, ptr %404, align 8 %405 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %400, align 8 - %406 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %407 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %406, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %398, ptr %407, align 8 - %408 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %406, i32 0, i32 1 - store ptr %399, ptr %408, align 8 - %409 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %406, i32 0, i32 2 - store ptr @"main.(*nopCloser).Read", ptr %409, align 8 - %410 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %406, i32 0, i32 3 - store ptr @main.nopCloser.Read, ptr %410, align 8 - %411 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %406, align 8 - %412 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 80) - %413 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %412, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %394, ptr %413, align 8 - %414 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %412, i64 1 - store %"github.com/goplus/llgo/internal/abi.Method" %411, ptr %414, align 8 - %415 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %416 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %415, i32 0, i32 0 - store ptr %412, ptr %416, align 8 - %417 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %415, i32 0, i32 1 - store i64 2, ptr %417, align 4 - %418 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %415, i32 0, i32 2 - store i64 2, ptr %418, align 4 - %419 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %415, align 8 - %420 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 80) - %421 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %420, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %388, ptr %421, align 8 - %422 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %420, i64 1 - store %"github.com/goplus/llgo/internal/abi.Method" %405, ptr %422, align 8 - %423 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %424 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %423, i32 0, i32 0 - store ptr %420, ptr %424, align 8 - %425 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %423, i32 0, i32 1 - store i64 2, ptr %425, align 4 - %426 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %423, i32 0, i32 2 - store i64 2, ptr %426, align 4 - %427 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %423, align 8 - %428 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %429 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %428, i32 0, i32 0 - store ptr @1, ptr %429, align 8 - %430 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %428, i32 0, i32 1 - store i64 4, ptr %430, align 4 - %431 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %428, align 8 - %432 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %433 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %432, i32 0, i32 0 - store ptr @12, ptr %433, align 8 - %434 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %432, i32 0, i32 1 - store i64 9, ptr %434, align 4 - %435 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %432, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %376, %"github.com/goplus/llgo/internal/runtime.String" %431, %"github.com/goplus/llgo/internal/runtime.String" %435, ptr %377, %"github.com/goplus/llgo/internal/runtime.Slice" %419, %"github.com/goplus/llgo/internal/runtime.Slice" %427) - %436 = load ptr, ptr @_llgo_string, align 8 - %437 = load ptr, ptr @_llgo_int, align 8 - %438 = load ptr, ptr @_llgo_error, align 8 - %439 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 - %440 = icmp eq ptr %439, null - br i1 %440, label %_llgo_33, label %_llgo_34 + %406 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 80) + %407 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %406, i64 0 + store %"github.com/goplus/llgo/internal/abi.Method" %388, ptr %407, align 8 + %408 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %406, i64 1 + store %"github.com/goplus/llgo/internal/abi.Method" %405, ptr %408, align 8 + %409 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %410 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %409, i32 0, i32 0 + store ptr %406, ptr %410, align 8 + %411 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %409, i32 0, i32 1 + store i64 2, ptr %411, align 4 + %412 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %409, i32 0, i32 2 + store i64 2, ptr %412, align 4 + %413 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %409, align 8 + %414 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 80) + %415 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %414, i64 0 + store %"github.com/goplus/llgo/internal/abi.Method" %382, ptr %415, align 8 + %416 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %414, i64 1 + store %"github.com/goplus/llgo/internal/abi.Method" %399, ptr %416, align 8 + %417 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %418 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %417, i32 0, i32 0 + store ptr %414, ptr %418, align 8 + %419 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %417, i32 0, i32 1 + store i64 2, ptr %419, align 4 + %420 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %417, i32 0, i32 2 + store i64 2, ptr %420, align 4 + %421 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %417, align 8 + %422 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %423 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %422, i32 0, i32 0 + store ptr @1, ptr %423, align 8 + %424 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %422, i32 0, i32 1 + store i64 4, ptr %424, align 4 + %425 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %422, align 8 + %426 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %427 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %426, i32 0, i32 0 + store ptr @12, ptr %427, align 8 + %428 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %426, i32 0, i32 1 + store i64 9, ptr %428, align 4 + %429 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %426, align 8 + call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %370, %"github.com/goplus/llgo/internal/runtime.String" %425, %"github.com/goplus/llgo/internal/runtime.String" %429, ptr %371, %"github.com/goplus/llgo/internal/runtime.Slice" %413, %"github.com/goplus/llgo/internal/runtime.Slice" %421) + %430 = load ptr, ptr @_llgo_string, align 8 + %431 = load ptr, ptr @_llgo_int, align 8 + %432 = load ptr, ptr @_llgo_error, align 8 + %433 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 + %434 = icmp eq ptr %433, null + br i1 %434, label %_llgo_31, label %_llgo_32 + +_llgo_31: ; preds = %_llgo_30 + %435 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) + %436 = getelementptr ptr, ptr %435, i64 0 + store ptr %430, ptr %436, align 8 + %437 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %438 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %437, i32 0, i32 0 + store ptr %435, ptr %438, align 8 + %439 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %437, i32 0, i32 1 + store i64 1, ptr %439, align 4 + %440 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %437, i32 0, i32 2 + store i64 1, ptr %440, align 4 + %441 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %437, align 8 + %442 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + %443 = getelementptr ptr, ptr %442, i64 0 + store ptr %431, ptr %443, align 8 + %444 = getelementptr ptr, ptr %442, i64 1 + store ptr %432, ptr %444, align 8 + %445 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %446 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %445, i32 0, i32 0 + store ptr %442, ptr %446, align 8 + %447 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %445, i32 0, i32 1 + store i64 2, ptr %447, align 4 + %448 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %445, i32 0, i32 2 + store i64 2, ptr %448, align 4 + %449 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %445, align 8 + %450 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %441, %"github.com/goplus/llgo/internal/runtime.Slice" %449, i1 false) + store ptr %450, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 + br label %_llgo_32 + +_llgo_32: ; preds = %_llgo_31, %_llgo_30 + %451 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 + %452 = load ptr, ptr @_llgo_main.StringWriter, align 8 + %453 = icmp eq ptr %452, null + br i1 %453, label %_llgo_33, label %_llgo_34 _llgo_33: ; preds = %_llgo_32 - %441 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %442 = getelementptr ptr, ptr %441, i64 0 - store ptr %436, ptr %442, align 8 - %443 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %444 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %443, i32 0, i32 0 - store ptr %441, ptr %444, align 8 - %445 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %443, i32 0, i32 1 - store i64 1, ptr %445, align 4 - %446 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %443, i32 0, i32 2 - store i64 1, ptr %446, align 4 - %447 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %443, align 8 - %448 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %449 = getelementptr ptr, ptr %448, i64 0 - store ptr %437, ptr %449, align 8 - %450 = getelementptr ptr, ptr %448, i64 1 - store ptr %438, ptr %450, align 8 - %451 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %452 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %451, i32 0, i32 0 - store ptr %448, ptr %452, align 8 - %453 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %451, i32 0, i32 1 - store i64 2, ptr %453, align 4 - %454 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %451, i32 0, i32 2 - store i64 2, ptr %454, align 4 - %455 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %451, align 8 - %456 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %447, %"github.com/goplus/llgo/internal/runtime.Slice" %455, i1 false) - store ptr %456, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 + %454 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %455 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %454, i32 0, i32 0 + store ptr @13, ptr %455, align 8 + %456 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %454, i32 0, i32 1 + store i64 11, ptr %456, align 4 + %457 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %454, align 8 + %458 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %459 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %458, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %457, ptr %459, align 8 + %460 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %458, i32 0, i32 1 + store ptr %451, ptr %460, align 8 + %461 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %458, align 8 + %462 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %463 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %462, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %461, ptr %463, align 8 + %464 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %465 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %464, i32 0, i32 0 + store ptr %462, ptr %465, align 8 + %466 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %464, i32 0, i32 1 + store i64 1, ptr %466, align 4 + %467 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %464, i32 0, i32 2 + store i64 1, ptr %467, align 4 + %468 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %464, align 8 + %469 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %470 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %469, i32 0, i32 0 + store ptr @1, ptr %470, align 8 + %471 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %469, i32 0, i32 1 + store i64 4, ptr %471, align 4 + %472 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %469, align 8 + %473 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %474 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %473, i32 0, i32 0 + store ptr @14, ptr %474, align 8 + %475 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %473, i32 0, i32 1 + store i64 17, ptr %475, align 4 + %476 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %473, align 8 + %477 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %472, %"github.com/goplus/llgo/internal/runtime.String" %476, %"github.com/goplus/llgo/internal/runtime.Slice" %468) + store ptr %477, ptr @_llgo_main.StringWriter, align 8 br label %_llgo_34 _llgo_34: ; preds = %_llgo_33, %_llgo_32 - %457 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 - %458 = load ptr, ptr @_llgo_main.StringWriter, align 8 - %459 = icmp eq ptr %458, null - br i1 %459, label %_llgo_35, label %_llgo_36 + %478 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 + %479 = load ptr, ptr @"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU", align 8 + %480 = icmp eq ptr %479, null + br i1 %480, label %_llgo_35, label %_llgo_36 _llgo_35: ; preds = %_llgo_34 - %460 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %461 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %460, i32 0, i32 0 - store ptr @13, ptr %461, align 8 - %462 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %460, i32 0, i32 1 - store i64 11, ptr %462, align 4 - %463 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %460, align 8 - %464 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %465 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %464, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %463, ptr %465, align 8 - %466 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %464, i32 0, i32 1 - store ptr %457, ptr %466, align 8 - %467 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %464, align 8 - %468 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %469 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %468, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %467, ptr %469, align 8 - %470 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %471 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %470, i32 0, i32 0 - store ptr %468, ptr %471, align 8 - %472 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %470, i32 0, i32 1 - store i64 1, ptr %472, align 4 - %473 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %470, i32 0, i32 2 - store i64 1, ptr %473, align 4 - %474 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %470, align 8 - %475 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %476 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %475, i32 0, i32 0 - store ptr @1, ptr %476, align 8 - %477 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %475, i32 0, i32 1 - store i64 4, ptr %477, align 4 - %478 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %475, align 8 - %479 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %480 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %479, i32 0, i32 0 - store ptr @14, ptr %480, align 8 - %481 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %479, i32 0, i32 1 - store i64 17, ptr %481, align 4 - %482 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %479, align 8 - %483 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %478, %"github.com/goplus/llgo/internal/runtime.String" %482, %"github.com/goplus/llgo/internal/runtime.Slice" %474) - store ptr %483, ptr @_llgo_main.StringWriter, align 8 + %481 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %482 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %481, i32 0, i32 0 + store ptr @13, ptr %482, align 8 + %483 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %481, i32 0, i32 1 + store i64 11, ptr %483, align 4 + %484 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %481, align 8 + %485 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %486 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %485, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %484, ptr %486, align 8 + %487 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %485, i32 0, i32 1 + store ptr %478, ptr %487, align 8 + %488 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %485, align 8 + %489 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %490 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %489, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %488, ptr %490, align 8 + %491 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %492 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %491, i32 0, i32 0 + store ptr %489, ptr %492, align 8 + %493 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %491, i32 0, i32 1 + store i64 1, ptr %493, align 4 + %494 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %491, i32 0, i32 2 + store i64 1, ptr %494, align 4 + %495 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %491, align 8 + %496 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %497 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %496, i32 0, i32 0 + store ptr @1, ptr %497, align 8 + %498 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %496, i32 0, i32 1 + store i64 4, ptr %498, align 4 + %499 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %496, align 8 + %500 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %501 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %500, i32 0, i32 0 + store ptr null, ptr %501, align 8 + %502 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %500, i32 0, i32 1 + store i64 0, ptr %502, align 4 + %503 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %500, align 8 + %504 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %499, %"github.com/goplus/llgo/internal/runtime.String" %503, %"github.com/goplus/llgo/internal/runtime.Slice" %495) + store ptr %504, ptr @"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU", align 8 br label %_llgo_36 _llgo_36: ; preds = %_llgo_35, %_llgo_34 - %484 = load ptr, ptr @"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw", align 8 - %485 = load ptr, ptr @"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU", align 8 - %486 = icmp eq ptr %485, null - br i1 %486, label %_llgo_37, label %_llgo_38 + %505 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 10) + %506 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %505) + store ptr %506, ptr @"*_llgo_main.stringReader", align 8 + %507 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 + %508 = load ptr, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8 + %509 = icmp eq ptr %508, null + br i1 %509, label %_llgo_37, label %_llgo_38 _llgo_37: ; preds = %_llgo_36 - %487 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %488 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %487, i32 0, i32 0 - store ptr @13, ptr %488, align 8 - %489 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %487, i32 0, i32 1 - store i64 11, ptr %489, align 4 - %490 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %487, align 8 - %491 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %492 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %491, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %490, ptr %492, align 8 - %493 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %491, i32 0, i32 1 - store ptr %484, ptr %493, align 8 - %494 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %491, align 8 - %495 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %496 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %495, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %494, ptr %496, align 8 - %497 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %498 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %497, i32 0, i32 0 - store ptr %495, ptr %498, align 8 - %499 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %497, i32 0, i32 1 - store i64 1, ptr %499, align 4 - %500 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %497, i32 0, i32 2 - store i64 1, ptr %500, align 4 - %501 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %497, align 8 - %502 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %503 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %502, i32 0, i32 0 - store ptr @1, ptr %503, align 8 - %504 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %502, i32 0, i32 1 - store i64 4, ptr %504, align 4 - %505 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %502, align 8 - %506 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %507 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %506, i32 0, i32 0 - store ptr null, ptr %507, align 8 - %508 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %506, i32 0, i32 1 - store i64 0, ptr %508, align 4 - %509 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %506, align 8 - %510 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %505, %"github.com/goplus/llgo/internal/runtime.String" %509, %"github.com/goplus/llgo/internal/runtime.Slice" %501) - store ptr %510, ptr @"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU", align 8 + %510 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %511 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %510, i32 0, i32 0 + store ptr @7, ptr %511, align 8 + %512 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %510, i32 0, i32 1 + store i64 4, ptr %512, align 4 + %513 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %510, align 8 + %514 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %515 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %514, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %513, ptr %515, align 8 + %516 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %514, i32 0, i32 1 + store ptr %507, ptr %516, align 8 + %517 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %514, align 8 + %518 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %519 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %518, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %517, ptr %519, align 8 + %520 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %521 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %520, i32 0, i32 0 + store ptr %518, ptr %521, align 8 + %522 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %520, i32 0, i32 1 + store i64 1, ptr %522, align 4 + %523 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %520, i32 0, i32 2 + store i64 1, ptr %523, align 4 + %524 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %520, align 8 + %525 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %526 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %525, i32 0, i32 0 + store ptr @1, ptr %526, align 8 + %527 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %525, i32 0, i32 1 + store i64 4, ptr %527, align 4 + %528 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %525, align 8 + %529 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %530 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %529, i32 0, i32 0 + store ptr null, ptr %530, align 8 + %531 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %529, i32 0, i32 1 + store i64 0, ptr %531, align 4 + %532 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %529, align 8 + %533 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %528, %"github.com/goplus/llgo/internal/runtime.String" %532, %"github.com/goplus/llgo/internal/runtime.Slice" %524) + store ptr %533, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8 br label %_llgo_38 _llgo_38: ; preds = %_llgo_37, %_llgo_36 - %511 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 10) - store ptr %511, ptr @_llgo_main.stringReader, align 8 - %512 = load ptr, ptr @_llgo_string, align 8 - %513 = load ptr, ptr @_llgo_int64, align 8 - %514 = load ptr, ptr @_llgo_int, align 8 - %515 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %516 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %515, i32 0, i32 0 - store ptr @18, ptr %516, align 8 - %517 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %515, i32 0, i32 1 - store i64 1, ptr %517, align 4 - %518 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %515, align 8 - %519 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %520 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %519, i32 0, i32 0 - store ptr null, ptr %520, align 8 - %521 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %519, i32 0, i32 1 - store i64 0, ptr %521, align 4 - %522 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %519, align 8 - %523 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %518, ptr %512, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %522, i1 false) - %524 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %525 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %524, i32 0, i32 0 - store ptr @19, ptr %525, align 8 - %526 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %524, i32 0, i32 1 - store i64 1, ptr %526, align 4 - %527 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %524, align 8 - %528 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %529 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %528, i32 0, i32 0 - store ptr null, ptr %529, align 8 - %530 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %528, i32 0, i32 1 - store i64 0, ptr %530, align 4 - %531 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %528, align 8 - %532 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %527, ptr %513, i64 16, %"github.com/goplus/llgo/internal/runtime.String" %531, i1 false) - %533 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %534 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %533, i32 0, i32 0 - store ptr @20, ptr %534, align 8 - %535 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %533, i32 0, i32 1 - store i64 8, ptr %535, align 4 - %536 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %533, align 8 - %537 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %538 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %537, i32 0, i32 0 - store ptr null, ptr %538, align 8 - %539 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %537, i32 0, i32 1 - store i64 0, ptr %539, align 4 - %540 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %537, align 8 - %541 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %536, ptr %514, i64 24, %"github.com/goplus/llgo/internal/runtime.String" %540, i1 false) - %542 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %543 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %542, i32 0, i32 0 - store ptr @1, ptr %543, align 8 - %544 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %542, i32 0, i32 1 - store i64 4, ptr %544, align 4 - %545 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %542, align 8 - %546 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 168) - %547 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %546, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %523, ptr %547, align 8 - %548 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %546, i64 1 - store %"github.com/goplus/llgo/internal/abi.StructField" %532, ptr %548, align 8 - %549 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %546, i64 2 - store %"github.com/goplus/llgo/internal/abi.StructField" %541, ptr %549, align 8 - %550 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %551 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %550, i32 0, i32 0 - store ptr %546, ptr %551, align 8 - %552 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %550, i32 0, i32 1 - store i64 3, ptr %552, align 4 - %553 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %550, i32 0, i32 2 - store i64 3, ptr %553, align 4 - %554 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %550, align 8 - %555 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %545, i64 32, %"github.com/goplus/llgo/internal/runtime.Slice" %554) - store ptr %555, ptr @"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk", align 8 - %556 = load ptr, ptr @"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk", align 8 - %557 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %558 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %557, i32 0, i32 0 - store ptr @21, ptr %558, align 8 - %559 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %557, i32 0, i32 1 - store i64 3, ptr %559, align 4 - %560 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %557, align 8 - %561 = load ptr, ptr @_llgo_int, align 8 - %562 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %563 = icmp eq ptr %562, null - br i1 %563, label %_llgo_39, label %_llgo_40 + %534 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 1) + %535 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %534) + store ptr %535, ptr @"*_llgo_main.errorString", align 8 + %536 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %537 = load ptr, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 + %538 = icmp eq ptr %537, null + br i1 %538, label %_llgo_39, label %_llgo_40 _llgo_39: ; preds = %_llgo_38 - %564 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %565 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %566 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %565, i32 0, i32 0 - store ptr %564, ptr %566, align 8 - %567 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %565, i32 0, i32 1 - store i64 0, ptr %567, align 4 - %568 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %565, i32 0, i32 2 - store i64 0, ptr %568, align 4 - %569 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %565, align 8 - %570 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %571 = getelementptr ptr, ptr %570, i64 0 - store ptr %561, ptr %571, align 8 - %572 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %573 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %572, i32 0, i32 0 - store ptr %570, ptr %573, align 8 - %574 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %572, i32 0, i32 1 - store i64 1, ptr %574, align 4 - %575 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %572, i32 0, i32 2 - store i64 1, ptr %575, align 4 - %576 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %572, align 8 - %577 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %569, %"github.com/goplus/llgo/internal/runtime.Slice" %576, i1 false) - store ptr %577, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 + %539 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %540 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %539, i32 0, i32 0 + store ptr @0, ptr %540, align 8 + %541 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %539, i32 0, i32 1 + store i64 5, ptr %541, align 4 + %542 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %539, align 8 + %543 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 + %544 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %543, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %542, ptr %544, align 8 + %545 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %543, i32 0, i32 1 + store ptr %536, ptr %545, align 8 + %546 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %543, align 8 + %547 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + %548 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %547, i64 0 + store %"github.com/goplus/llgo/internal/abi.Imethod" %546, ptr %548, align 8 + %549 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %550 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %549, i32 0, i32 0 + store ptr %547, ptr %550, align 8 + %551 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %549, i32 0, i32 1 + store i64 1, ptr %551, align 4 + %552 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %549, i32 0, i32 2 + store i64 1, ptr %552, align 4 + %553 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %549, align 8 + %554 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %555 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %554, i32 0, i32 0 + store ptr @1, ptr %555, align 8 + %556 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %554, i32 0, i32 1 + store i64 4, ptr %556, align 4 + %557 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %554, align 8 + %558 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %559 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %558, i32 0, i32 0 + store ptr null, ptr %559, align 8 + %560 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %558, i32 0, i32 1 + store i64 0, ptr %560, align 4 + %561 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %558, align 8 + %562 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %557, %"github.com/goplus/llgo/internal/runtime.String" %561, %"github.com/goplus/llgo/internal/runtime.Slice" %553) + store ptr %562, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 br label %_llgo_40 _llgo_40: ; preds = %_llgo_39, %_llgo_38 - %578 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8 - %579 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %580 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %579, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %560, ptr %580, align 8 - %581 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %579, i32 0, i32 1 - store ptr %578, ptr %581, align 8 - %582 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %579, i32 0, i32 2 - store ptr @"main.(*stringReader).Len", ptr %582, align 8 - %583 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %579, i32 0, i32 3 - store ptr @"main.(*stringReader).Len", ptr %583, align 8 - %584 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %579, align 8 - %585 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %586 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %585, i32 0, i32 0 - store ptr @7, ptr %586, align 8 - %587 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %585, i32 0, i32 1 - store i64 4, ptr %587, align 4 - %588 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %585, align 8 - %589 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %590 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %591 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %590, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %588, ptr %591, align 8 - %592 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %590, i32 0, i32 1 - store ptr %589, ptr %592, align 8 - %593 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %590, i32 0, i32 2 - store ptr @"main.(*stringReader).Read", ptr %593, align 8 - %594 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %590, i32 0, i32 3 - store ptr @"main.(*stringReader).Read", ptr %594, align 8 - %595 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %590, align 8 - %596 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %597 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %596, i32 0, i32 0 - store ptr @22, ptr %597, align 8 - %598 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %596, i32 0, i32 1 - store i64 6, ptr %598, align 4 - %599 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %596, align 8 - %600 = load ptr, ptr @"[]_llgo_byte", align 8 - %601 = load ptr, ptr @_llgo_int64, align 8 - %602 = load ptr, ptr @_llgo_int, align 8 - %603 = load ptr, ptr @_llgo_error, align 8 - %604 = load ptr, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8 - %605 = icmp eq ptr %604, null - br i1 %605, label %_llgo_41, label %_llgo_42 - -_llgo_41: ; preds = %_llgo_40 - %606 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %607 = getelementptr ptr, ptr %606, i64 0 - store ptr %600, ptr %607, align 8 - %608 = getelementptr ptr, ptr %606, i64 1 - store ptr %601, ptr %608, align 8 - %609 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %610 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %609, i32 0, i32 0 - store ptr %606, ptr %610, align 8 - %611 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %609, i32 0, i32 1 - store i64 2, ptr %611, align 4 - %612 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %609, i32 0, i32 2 - store i64 2, ptr %612, align 4 - %613 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %609, align 8 - %614 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %615 = getelementptr ptr, ptr %614, i64 0 - store ptr %602, ptr %615, align 8 - %616 = getelementptr ptr, ptr %614, i64 1 - store ptr %603, ptr %616, align 8 - %617 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %618 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %617, i32 0, i32 0 - store ptr %614, ptr %618, align 8 - %619 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %617, i32 0, i32 1 - store i64 2, ptr %619, align 4 - %620 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %617, i32 0, i32 2 - store i64 2, ptr %620, align 4 - %621 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %617, align 8 - %622 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %613, %"github.com/goplus/llgo/internal/runtime.Slice" %621, i1 false) - store ptr %622, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8 - br label %_llgo_42 - -_llgo_42: ; preds = %_llgo_41, %_llgo_40 - %623 = load ptr, ptr @"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c", align 8 - %624 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %625 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %624, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %599, ptr %625, align 8 - %626 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %624, i32 0, i32 1 - store ptr %623, ptr %626, align 8 - %627 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %624, i32 0, i32 2 - store ptr @"main.(*stringReader).ReadAt", ptr %627, align 8 - %628 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %624, i32 0, i32 3 - store ptr @"main.(*stringReader).ReadAt", ptr %628, align 8 - %629 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %624, align 8 - %630 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %631 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %630, i32 0, i32 0 - store ptr @23, ptr %631, align 8 - %632 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %630, i32 0, i32 1 - store i64 8, ptr %632, align 4 - %633 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %630, align 8 - %634 = load ptr, ptr @_llgo_byte, align 8 - %635 = load ptr, ptr @_llgo_error, align 8 - %636 = load ptr, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8 - %637 = icmp eq ptr %636, null - br i1 %637, label %_llgo_43, label %_llgo_44 - -_llgo_43: ; preds = %_llgo_42 - %638 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %639 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %640 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %639, i32 0, i32 0 - store ptr %638, ptr %640, align 8 - %641 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %639, i32 0, i32 1 - store i64 0, ptr %641, align 4 - %642 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %639, i32 0, i32 2 - store i64 0, ptr %642, align 4 - %643 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %639, align 8 - %644 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %645 = getelementptr ptr, ptr %644, i64 0 - store ptr %634, ptr %645, align 8 - %646 = getelementptr ptr, ptr %644, i64 1 - store ptr %635, ptr %646, align 8 - %647 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %648 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %647, i32 0, i32 0 - store ptr %644, ptr %648, align 8 - %649 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %647, i32 0, i32 1 - store i64 2, ptr %649, align 4 - %650 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %647, i32 0, i32 2 - store i64 2, ptr %650, align 4 - %651 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %647, align 8 - %652 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %643, %"github.com/goplus/llgo/internal/runtime.Slice" %651, i1 false) - store ptr %652, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8 - br label %_llgo_44 - -_llgo_44: ; preds = %_llgo_43, %_llgo_42 - %653 = load ptr, ptr @"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM", align 8 - %654 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %655 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %654, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %633, ptr %655, align 8 - %656 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %654, i32 0, i32 1 - store ptr %653, ptr %656, align 8 - %657 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %654, i32 0, i32 2 - store ptr @"main.(*stringReader).ReadByte", ptr %657, align 8 - %658 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %654, i32 0, i32 3 - store ptr @"main.(*stringReader).ReadByte", ptr %658, align 8 - %659 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %654, align 8 - %660 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %661 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %660, i32 0, i32 0 - store ptr @24, ptr %661, align 8 - %662 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %660, i32 0, i32 1 - store i64 8, ptr %662, align 4 - %663 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %660, align 8 - %664 = load ptr, ptr @_llgo_rune, align 8 - %665 = icmp eq ptr %664, null - br i1 %665, label %_llgo_45, label %_llgo_46 - -_llgo_45: ; preds = %_llgo_44 - %666 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5) - %667 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %666, i32 0, i32 6 - %668 = load i8, ptr %667, align 1 - %669 = or i8 %668, 32 - store i8 %669, ptr %667, align 1 - store ptr %666, ptr @_llgo_rune, align 8 - br label %_llgo_46 - -_llgo_46: ; preds = %_llgo_45, %_llgo_44 - %670 = load ptr, ptr @_llgo_rune, align 8 - %671 = load ptr, ptr @_llgo_int, align 8 - %672 = load ptr, ptr @_llgo_error, align 8 - %673 = load ptr, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8 - %674 = icmp eq ptr %673, null - br i1 %674, label %_llgo_47, label %_llgo_48 - -_llgo_47: ; preds = %_llgo_46 - %675 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %676 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %677 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %676, i32 0, i32 0 - store ptr %675, ptr %677, align 8 - %678 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %676, i32 0, i32 1 - store i64 0, ptr %678, align 4 - %679 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %676, i32 0, i32 2 - store i64 0, ptr %679, align 4 - %680 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %676, align 8 - %681 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %682 = getelementptr ptr, ptr %681, i64 0 - store ptr %670, ptr %682, align 8 - %683 = getelementptr ptr, ptr %681, i64 1 - store ptr %671, ptr %683, align 8 - %684 = getelementptr ptr, ptr %681, i64 2 - store ptr %672, ptr %684, align 8 - %685 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %686 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %685, i32 0, i32 0 - store ptr %681, ptr %686, align 8 - %687 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %685, i32 0, i32 1 - store i64 3, ptr %687, align 4 - %688 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %685, i32 0, i32 2 - store i64 3, ptr %688, align 4 - %689 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %685, align 8 - %690 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %680, %"github.com/goplus/llgo/internal/runtime.Slice" %689, i1 false) - store ptr %690, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8 - br label %_llgo_48 - -_llgo_48: ; preds = %_llgo_47, %_llgo_46 - %691 = load ptr, ptr @"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU", align 8 - %692 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %693 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %692, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %663, ptr %693, align 8 - %694 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %692, i32 0, i32 1 - store ptr %691, ptr %694, align 8 - %695 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %692, i32 0, i32 2 - store ptr @"main.(*stringReader).ReadRune", ptr %695, align 8 - %696 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %692, i32 0, i32 3 - store ptr @"main.(*stringReader).ReadRune", ptr %696, align 8 - %697 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %692, align 8 - %698 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %699 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %698, i32 0, i32 0 - store ptr @25, ptr %699, align 8 - %700 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %698, i32 0, i32 1 - store i64 4, ptr %700, align 4 - %701 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %698, align 8 - %702 = load ptr, ptr @_llgo_int64, align 8 - %703 = load ptr, ptr @_llgo_int, align 8 - %704 = load ptr, ptr @_llgo_int64, align 8 - %705 = load ptr, ptr @_llgo_error, align 8 - %706 = load ptr, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8 - %707 = icmp eq ptr %706, null - br i1 %707, label %_llgo_49, label %_llgo_50 - -_llgo_49: ; preds = %_llgo_48 - %708 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %709 = getelementptr ptr, ptr %708, i64 0 - store ptr %702, ptr %709, align 8 - %710 = getelementptr ptr, ptr %708, i64 1 - store ptr %703, ptr %710, align 8 - %711 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %712 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %711, i32 0, i32 0 - store ptr %708, ptr %712, align 8 - %713 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %711, i32 0, i32 1 - store i64 2, ptr %713, align 4 - %714 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %711, i32 0, i32 2 - store i64 2, ptr %714, align 4 - %715 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %711, align 8 - %716 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - %717 = getelementptr ptr, ptr %716, i64 0 - store ptr %704, ptr %717, align 8 - %718 = getelementptr ptr, ptr %716, i64 1 - store ptr %705, ptr %718, align 8 - %719 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %720 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %719, i32 0, i32 0 - store ptr %716, ptr %720, align 8 - %721 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %719, i32 0, i32 1 - store i64 2, ptr %721, align 4 - %722 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %719, i32 0, i32 2 - store i64 2, ptr %722, align 4 - %723 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %719, align 8 - %724 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %715, %"github.com/goplus/llgo/internal/runtime.Slice" %723, i1 false) - store ptr %724, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8 - br label %_llgo_50 - -_llgo_50: ; preds = %_llgo_49, %_llgo_48 - %725 = load ptr, ptr @"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms", align 8 - %726 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %727 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %726, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %701, ptr %727, align 8 - %728 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %726, i32 0, i32 1 - store ptr %725, ptr %728, align 8 - %729 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %726, i32 0, i32 2 - store ptr @"main.(*stringReader).Seek", ptr %729, align 8 - %730 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %726, i32 0, i32 3 - store ptr @"main.(*stringReader).Seek", ptr %730, align 8 - %731 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %726, align 8 - %732 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %733 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %732, i32 0, i32 0 - store ptr @26, ptr %733, align 8 - %734 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %732, i32 0, i32 1 - store i64 4, ptr %734, align 4 - %735 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %732, align 8 - %736 = load ptr, ptr @_llgo_int64, align 8 - %737 = load ptr, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8 - %738 = icmp eq ptr %737, null - br i1 %738, label %_llgo_51, label %_llgo_52 - -_llgo_51: ; preds = %_llgo_50 - %739 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %740 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %741 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %740, i32 0, i32 0 - store ptr %739, ptr %741, align 8 - %742 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %740, i32 0, i32 1 - store i64 0, ptr %742, align 4 - %743 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %740, i32 0, i32 2 - store i64 0, ptr %743, align 4 - %744 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %740, align 8 - %745 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %746 = getelementptr ptr, ptr %745, i64 0 - store ptr %736, ptr %746, align 8 - %747 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %748 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %747, i32 0, i32 0 - store ptr %745, ptr %748, align 8 - %749 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %747, i32 0, i32 1 - store i64 1, ptr %749, align 4 - %750 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %747, i32 0, i32 2 - store i64 1, ptr %750, align 4 - %751 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %747, align 8 - %752 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %744, %"github.com/goplus/llgo/internal/runtime.Slice" %751, i1 false) - store ptr %752, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8 - br label %_llgo_52 - -_llgo_52: ; preds = %_llgo_51, %_llgo_50 - %753 = load ptr, ptr @"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug", align 8 - %754 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %755 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %754, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %735, ptr %755, align 8 - %756 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %754, i32 0, i32 1 - store ptr %753, ptr %756, align 8 - %757 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %754, i32 0, i32 2 - store ptr @"main.(*stringReader).Size", ptr %757, align 8 - %758 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %754, i32 0, i32 3 - store ptr @"main.(*stringReader).Size", ptr %758, align 8 - %759 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %754, align 8 - %760 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %761 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %760, i32 0, i32 0 - store ptr @27, ptr %761, align 8 - %762 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %760, i32 0, i32 1 - store i64 10, ptr %762, align 4 - %763 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %760, align 8 - %764 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - %765 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %766 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %765, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %763, ptr %766, align 8 - %767 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %765, i32 0, i32 1 - store ptr %764, ptr %767, align 8 - %768 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %765, i32 0, i32 2 - store ptr @"main.(*stringReader).UnreadByte", ptr %768, align 8 - %769 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %765, i32 0, i32 3 - store ptr @"main.(*stringReader).UnreadByte", ptr %769, align 8 - %770 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %765, align 8 - %771 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %772 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %771, i32 0, i32 0 - store ptr @28, ptr %772, align 8 - %773 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %771, i32 0, i32 1 - store i64 10, ptr %773, align 4 - %774 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %771, align 8 - %775 = load ptr, ptr @"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w", align 8 - %776 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %777 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %776, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %774, ptr %777, align 8 - %778 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %776, i32 0, i32 1 - store ptr %775, ptr %778, align 8 - %779 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %776, i32 0, i32 2 - store ptr @"main.(*stringReader).UnreadRune", ptr %779, align 8 - %780 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %776, i32 0, i32 3 - store ptr @"main.(*stringReader).UnreadRune", ptr %780, align 8 - %781 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %776, align 8 - %782 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %783 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %782, i32 0, i32 0 - store ptr @5, ptr %783, align 8 - %784 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %782, i32 0, i32 1 - store i64 7, ptr %784, align 4 - %785 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %782, align 8 - %786 = load ptr, ptr @"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk", align 8 - %787 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %788 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %787, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %785, ptr %788, align 8 - %789 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %787, i32 0, i32 1 - store ptr %786, ptr %789, align 8 - %790 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %787, i32 0, i32 2 - store ptr @"main.(*stringReader).WriteTo", ptr %790, align 8 - %791 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %787, i32 0, i32 3 - store ptr @"main.(*stringReader).WriteTo", ptr %791, align 8 - %792 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %787, align 8 - %793 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 400) - %794 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %584, ptr %794, align 8 - %795 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 1 - store %"github.com/goplus/llgo/internal/abi.Method" %595, ptr %795, align 8 - %796 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 2 - store %"github.com/goplus/llgo/internal/abi.Method" %629, ptr %796, align 8 - %797 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 3 - store %"github.com/goplus/llgo/internal/abi.Method" %659, ptr %797, align 8 - %798 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 4 - store %"github.com/goplus/llgo/internal/abi.Method" %697, ptr %798, align 8 - %799 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 5 - store %"github.com/goplus/llgo/internal/abi.Method" %731, ptr %799, align 8 - %800 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 6 - store %"github.com/goplus/llgo/internal/abi.Method" %759, ptr %800, align 8 - %801 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 7 - store %"github.com/goplus/llgo/internal/abi.Method" %770, ptr %801, align 8 - %802 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 8 - store %"github.com/goplus/llgo/internal/abi.Method" %781, ptr %802, align 8 - %803 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %793, i64 9 - store %"github.com/goplus/llgo/internal/abi.Method" %792, ptr %803, align 8 - %804 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %805 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %804, i32 0, i32 0 - store ptr %793, ptr %805, align 8 - %806 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %804, i32 0, i32 1 - store i64 10, ptr %806, align 4 - %807 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %804, i32 0, i32 2 - store i64 10, ptr %807, align 4 - %808 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %804, align 8 - %809 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %810 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %809, i32 0, i32 0 - store ptr @1, ptr %810, align 8 - %811 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %809, i32 0, i32 1 - store i64 4, ptr %811, align 4 - %812 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %809, align 8 - %813 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %814 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %813, i32 0, i32 0 - store ptr @29, ptr %814, align 8 - %815 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %813, i32 0, i32 1 - store i64 12, ptr %815, align 4 - %816 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %813, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %511, %"github.com/goplus/llgo/internal/runtime.String" %812, %"github.com/goplus/llgo/internal/runtime.String" %816, ptr %556, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %808) - %817 = load ptr, ptr @_llgo_main.stringReader, align 8 - %818 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %817) - store ptr %818, ptr @"*_llgo_main.stringReader", align 8 - %819 = load ptr, ptr @"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY", align 8 - %820 = load ptr, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8 - %821 = icmp eq ptr %820, null - br i1 %821, label %_llgo_53, label %_llgo_54 - -_llgo_53: ; preds = %_llgo_52 - %822 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %823 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %822, i32 0, i32 0 - store ptr @7, ptr %823, align 8 - %824 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %822, i32 0, i32 1 - store i64 4, ptr %824, align 4 - %825 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %822, align 8 - %826 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %827 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %826, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %825, ptr %827, align 8 - %828 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %826, i32 0, i32 1 - store ptr %819, ptr %828, align 8 - %829 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %826, align 8 - %830 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %831 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %830, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %829, ptr %831, align 8 - %832 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %833 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %832, i32 0, i32 0 - store ptr %830, ptr %833, align 8 - %834 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %832, i32 0, i32 1 - store i64 1, ptr %834, align 4 - %835 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %832, i32 0, i32 2 - store i64 1, ptr %835, align 4 - %836 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %832, align 8 - %837 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %838 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %837, i32 0, i32 0 - store ptr @1, ptr %838, align 8 - %839 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %837, i32 0, i32 1 - store i64 4, ptr %839, align 4 - %840 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %837, align 8 - %841 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %842 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %841, i32 0, i32 0 - store ptr null, ptr %842, align 8 - %843 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %841, i32 0, i32 1 - store i64 0, ptr %843, align 4 - %844 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %841, align 8 - %845 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %840, %"github.com/goplus/llgo/internal/runtime.String" %844, %"github.com/goplus/llgo/internal/runtime.Slice" %836) - store ptr %845, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8 - br label %_llgo_54 - -_llgo_54: ; preds = %_llgo_53, %_llgo_52 - %846 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 1) - store ptr %846, ptr @_llgo_main.errorString, align 8 - %847 = load ptr, ptr @_llgo_string, align 8 - %848 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %849 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %848, i32 0, i32 0 - store ptr @18, ptr %849, align 8 - %850 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %848, i32 0, i32 1 - store i64 1, ptr %850, align 4 - %851 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %848, align 8 - %852 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %853 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %852, i32 0, i32 0 - store ptr null, ptr %853, align 8 - %854 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %852, i32 0, i32 1 - store i64 0, ptr %854, align 4 - %855 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %852, align 8 - %856 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %851, ptr %847, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %855, i1 false) - %857 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %858 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %857, i32 0, i32 0 - store ptr @1, ptr %858, align 8 - %859 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %857, i32 0, i32 1 - store i64 4, ptr %859, align 4 - %860 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %857, align 8 - %861 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) - %862 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %861, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %856, ptr %862, align 8 - %863 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %864 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %863, i32 0, i32 0 - store ptr %861, ptr %864, align 8 - %865 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %863, i32 0, i32 1 - store i64 1, ptr %865, align 4 - %866 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %863, i32 0, i32 2 - store i64 1, ptr %866, align 4 - %867 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %863, align 8 - %868 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %860, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %867) - store ptr %868, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8 - %869 = load ptr, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8 - %870 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %871 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %870, i32 0, i32 0 - store ptr @0, ptr %871, align 8 - %872 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %870, i32 0, i32 1 - store i64 5, ptr %872, align 4 - %873 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %870, align 8 - %874 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %875 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %876 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %875, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %873, ptr %876, align 8 - %877 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %875, i32 0, i32 1 - store ptr %874, ptr %877, align 8 - %878 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %875, i32 0, i32 2 - store ptr @"main.(*errorString).Error", ptr %878, align 8 - %879 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %875, i32 0, i32 3 - store ptr @"main.(*errorString).Error", ptr %879, align 8 - %880 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %875, align 8 - %881 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) - %882 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %881, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %880, ptr %882, align 8 - %883 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %884 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %883, i32 0, i32 0 - store ptr %881, ptr %884, align 8 - %885 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %883, i32 0, i32 1 - store i64 1, ptr %885, align 4 - %886 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %883, i32 0, i32 2 - store i64 1, ptr %886, align 4 - %887 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %883, align 8 - %888 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %889 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %888, i32 0, i32 0 - store ptr @1, ptr %889, align 8 - %890 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %888, i32 0, i32 1 - store i64 4, ptr %890, align 4 - %891 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %888, align 8 - %892 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %893 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %892, i32 0, i32 0 - store ptr @30, ptr %893, align 8 - %894 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %892, i32 0, i32 1 - store i64 11, ptr %894, align 4 - %895 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %892, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %846, %"github.com/goplus/llgo/internal/runtime.String" %891, %"github.com/goplus/llgo/internal/runtime.String" %895, ptr %869, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %887) - %896 = load ptr, ptr @_llgo_main.errorString, align 8 - %897 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %896) - store ptr %897, ptr @"*_llgo_main.errorString", align 8 - %898 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %899 = load ptr, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 - %900 = icmp eq ptr %899, null - br i1 %900, label %_llgo_55, label %_llgo_56 - -_llgo_55: ; preds = %_llgo_54 - %901 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %902 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %901, i32 0, i32 0 - store ptr @0, ptr %902, align 8 - %903 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %901, i32 0, i32 1 - store i64 5, ptr %903, align 4 - %904 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %901, align 8 - %905 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %906 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %905, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %904, ptr %906, align 8 - %907 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %905, i32 0, i32 1 - store ptr %898, ptr %907, align 8 - %908 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %905, align 8 - %909 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %910 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %909, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %908, ptr %910, align 8 - %911 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %912 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %911, i32 0, i32 0 - store ptr %909, ptr %912, align 8 - %913 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %911, i32 0, i32 1 - store i64 1, ptr %913, align 4 - %914 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %911, i32 0, i32 2 - store i64 1, ptr %914, align 4 - %915 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %911, align 8 - %916 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %917 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %916, i32 0, i32 0 - store ptr @1, ptr %917, align 8 - %918 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %916, i32 0, i32 1 - store i64 4, ptr %918, align 4 - %919 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %916, align 8 - %920 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %921 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %920, i32 0, i32 0 - store ptr null, ptr %921, align 8 - %922 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %920, i32 0, i32 1 - store i64 0, ptr %922, align 4 - %923 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %920, align 8 - %924 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %919, %"github.com/goplus/llgo/internal/runtime.String" %923, %"github.com/goplus/llgo/internal/runtime.Slice" %915) - store ptr %924, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 - br label %_llgo_56 - -_llgo_56: ; preds = %_llgo_55, %_llgo_54 ret void } -declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) - declare ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr) +declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) + declare ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice", i1) declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) diff --git a/cl/_testgo/strucintf/out.ll b/cl/_testgo/strucintf/out.ll index 198f3c96..6a90e6a5 100644 --- a/cl/_testgo/strucintf/out.ll +++ b/cl/_testgo/strucintf/out.ll @@ -2,8 +2,8 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } -%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } +%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } @@ -29,18 +29,14 @@ _llgo_0: %3 = load { i64 }, ptr %1, align 4 %4 = load ptr, ptr @"main.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88", align 8 %5 = extractvalue { i64 } %3, 0 - %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %4, i32 0, i32 6 - %7 = load i8, ptr %6, align 1 - %8 = or i8 %7, 32 - store i8 %8, ptr %6, align 1 - %9 = inttoptr i64 %5 to ptr - %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %10, i32 0, i32 0 - store ptr %4, ptr %11, align 8 - %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %10, i32 0, i32 1 - store ptr %9, ptr %12, align 8 - %13 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %10, align 8 - ret %"github.com/goplus/llgo/internal/runtime.eface" %13 + %6 = inttoptr i64 %5 to ptr + %7 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %8 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, i32 0, i32 0 + store ptr %4, ptr %8, align 8 + %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, i32 0, i32 1 + store ptr %6, ptr %9, align 8 + %10 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, align 8 + ret %"github.com/goplus/llgo/internal/runtime.eface" %10 } define void @main.init() { diff --git a/cl/_testgo/struczero/out.ll b/cl/_testgo/struczero/out.ll index d48e942d..03daddf4 100644 --- a/cl/_testgo/struczero/out.ll +++ b/cl/_testgo/struczero/out.ll @@ -14,7 +14,6 @@ source_filename = "main" @"_llgo_github.com/goplus/llgo/cl/internal/foo.Foo" = linkonce global ptr null, align 8 @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs" = global ptr null, align 8 @"*_llgo_byte" = linkonce global ptr null, align 8 -@_llgo_byte = linkonce global ptr null, align 8 @_llgo_float32 = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [2 x i8] c"pb", align 1 @1 = private unnamed_addr constant [1 x i8] c"F", align 1 @@ -191,268 +190,254 @@ _llgo_1: ; preds = %_llgo_0 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 - %3 = load ptr, ptr @_llgo_byte, align 8 + %3 = load ptr, ptr @"*_llgo_byte", align 8 %4 = icmp eq ptr %3, null br i1 %4, label %_llgo_3, label %_llgo_4 _llgo_3: ; preds = %_llgo_2 %5 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8) - %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %5, i32 0, i32 6 - %7 = load i8, ptr %6, align 1 - %8 = or i8 %7, 32 - store i8 %8, ptr %6, align 1 - store ptr %5, ptr @_llgo_byte, align 8 + %6 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %5) + store ptr %6, ptr @"*_llgo_byte", align 8 br label %_llgo_4 _llgo_4: ; preds = %_llgo_3, %_llgo_2 - %9 = load ptr, ptr @_llgo_byte, align 8 - %10 = load ptr, ptr @"*_llgo_byte", align 8 - %11 = icmp eq ptr %10, null - br i1 %11, label %_llgo_5, label %_llgo_6 + %7 = load ptr, ptr @"*_llgo_byte", align 8 + %8 = load ptr, ptr @_llgo_float32, align 8 + %9 = icmp eq ptr %8, null + br i1 %9, label %_llgo_5, label %_llgo_6 _llgo_5: ; preds = %_llgo_4 - %12 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %9) - store ptr %12, ptr @"*_llgo_byte", align 8 + %10 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13) + %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %10, i32 0, i32 6 + %12 = load i8, ptr %11, align 1 + %13 = or i8 %12, 32 + store i8 %13, ptr %11, align 1 + store ptr %10, ptr @_llgo_float32, align 8 br label %_llgo_6 _llgo_6: ; preds = %_llgo_5, %_llgo_4 - %13 = load ptr, ptr @"*_llgo_byte", align 8 %14 = load ptr, ptr @_llgo_float32, align 8 - %15 = icmp eq ptr %14, null - br i1 %15, label %_llgo_7, label %_llgo_8 + %15 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %15, i32 0, i32 0 + store ptr @0, ptr %16, align 8 + %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %15, i32 0, i32 1 + store i64 2, ptr %17, align 4 + %18 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %15, align 8 + %19 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %20 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %19, i32 0, i32 0 + store ptr null, ptr %20, align 8 + %21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %19, i32 0, i32 1 + store i64 0, ptr %21, align 4 + %22 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %19, align 8 + %23 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %18, ptr %7, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %22, i1 false) + %24 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %25 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 0 + store ptr @1, ptr %25, align 8 + %26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 1 + store i64 1, ptr %26, align 4 + %27 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %24, align 8 + %28 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %28, i32 0, i32 0 + store ptr null, ptr %29, align 8 + %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %28, i32 0, i32 1 + store i64 0, ptr %30, align 4 + %31 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %28, align 8 + %32 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %27, ptr %14, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %31, i1 false) + %33 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %33, i32 0, i32 0 + store ptr @2, ptr %34, align 8 + %35 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %33, i32 0, i32 1 + store i64 4, ptr %35, align 4 + %36 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %33, align 8 + %37 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112) + %38 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %37, i64 0 + store %"github.com/goplus/llgo/internal/abi.StructField" %23, ptr %38, align 8 + %39 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %37, i64 1 + store %"github.com/goplus/llgo/internal/abi.StructField" %32, ptr %39, align 8 + %40 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %40, i32 0, i32 0 + store ptr %37, ptr %41, align 8 + %42 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %40, i32 0, i32 1 + store i64 2, ptr %42, align 4 + %43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %40, i32 0, i32 2 + store i64 2, ptr %43, align 4 + %44 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %40, align 8 + %45 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %36, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %44) + store ptr %45, ptr @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs", align 8 + %46 = load ptr, ptr @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs", align 8 + br i1 %1, label %_llgo_7, label %_llgo_8 _llgo_7: ; preds = %_llgo_6 - %16 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13) - %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %16, i32 0, i32 6 - %18 = load i8, ptr %17, align 1 - %19 = or i8 %18, 32 - store i8 %19, ptr %17, align 1 - store ptr %16, ptr @_llgo_float32, align 8 - br label %_llgo_8 - -_llgo_8: ; preds = %_llgo_7, %_llgo_6 - %20 = load ptr, ptr @_llgo_float32, align 8 - %21 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 0 - store ptr @0, ptr %22, align 8 - %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 1 - store i64 2, ptr %23, align 4 - %24 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %21, align 8 - %25 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %25, i32 0, i32 0 - store ptr null, ptr %26, align 8 - %27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %25, i32 0, i32 1 - store i64 0, ptr %27, align 4 - %28 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %25, align 8 - %29 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %24, ptr %13, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %28, i1 false) - %30 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %30, i32 0, i32 0 - store ptr @1, ptr %31, align 8 - %32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %30, i32 0, i32 1 - store i64 1, ptr %32, align 4 - %33 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %30, align 8 - %34 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %35 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %34, i32 0, i32 0 - store ptr null, ptr %35, align 8 - %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %34, i32 0, i32 1 - store i64 0, ptr %36, align 4 - %37 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %34, align 8 - %38 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %33, ptr %20, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %37, i1 false) - %39 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %40 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %39, i32 0, i32 0 - store ptr @2, ptr %40, align 8 - %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %39, i32 0, i32 1 - store i64 4, ptr %41, align 4 - %42 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %39, align 8 - %43 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112) - %44 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %43, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %29, ptr %44, align 8 - %45 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %43, i64 1 - store %"github.com/goplus/llgo/internal/abi.StructField" %38, ptr %45, align 8 - %46 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %47 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 0 - store ptr %43, ptr %47, align 8 - %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 1 - store i64 2, ptr %48, align 4 - %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 2 + %47 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %47, i32 0, i32 0 + store ptr @3, ptr %48, align 8 + %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %47, i32 0, i32 1 store i64 2, ptr %49, align 4 - %50 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, align 8 - %51 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %42, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %50) - store ptr %51, ptr @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs", align 8 - %52 = load ptr, ptr @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs", align 8 - br i1 %1, label %_llgo_9, label %_llgo_10 + %50 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %47, align 8 + %51 = load ptr, ptr @"*_llgo_byte", align 8 + %52 = load ptr, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8 + %53 = icmp eq ptr %52, null + br i1 %53, label %_llgo_9, label %_llgo_10 -_llgo_9: ; preds = %_llgo_8 - %53 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %53, i32 0, i32 0 - store ptr @3, ptr %54, align 8 - %55 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %53, i32 0, i32 1 - store i64 2, ptr %55, align 4 - %56 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %53, align 8 - %57 = load ptr, ptr @"*_llgo_byte", align 8 - %58 = load ptr, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8 - %59 = icmp eq ptr %58, null - br i1 %59, label %_llgo_11, label %_llgo_12 - -_llgo_10: ; preds = %_llgo_12, %_llgo_8 - %60 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 0) - store ptr %60, ptr @_llgo_main.bar, align 8 - %61 = load ptr, ptr @"*_llgo_byte", align 8 - %62 = load ptr, ptr @_llgo_float32, align 8 - %63 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %63, i32 0, i32 0 - store ptr @0, ptr %64, align 8 - %65 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %63, i32 0, i32 1 - store i64 2, ptr %65, align 4 - %66 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %63, align 8 - %67 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %67, i32 0, i32 0 - store ptr null, ptr %68, align 8 - %69 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %67, i32 0, i32 1 - store i64 0, ptr %69, align 4 - %70 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %67, align 8 - %71 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %66, ptr %61, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %70, i1 false) - %72 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 0 - store ptr @6, ptr %73, align 8 - %74 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 1 - store i64 1, ptr %74, align 4 - %75 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %72, align 8 - %76 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %76, i32 0, i32 0 - store ptr null, ptr %77, align 8 - %78 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %76, i32 0, i32 1 - store i64 0, ptr %78, align 4 - %79 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %76, align 8 - %80 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %75, ptr %62, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %79, i1 false) - %81 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %82 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %81, i32 0, i32 0 - store ptr @2, ptr %82, align 8 - %83 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %81, i32 0, i32 1 - store i64 4, ptr %83, align 4 - %84 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %81, align 8 - %85 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112) - %86 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %85, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %71, ptr %86, align 8 - %87 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %85, i64 1 - store %"github.com/goplus/llgo/internal/abi.StructField" %80, ptr %87, align 8 - %88 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %89 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %88, i32 0, i32 0 - store ptr %85, ptr %89, align 8 - %90 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %88, i32 0, i32 1 - store i64 2, ptr %90, align 4 - %91 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %88, i32 0, i32 2 - store i64 2, ptr %91, align 4 - %92 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %88, align 8 - %93 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %84, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %92) - store ptr %93, ptr @"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo", align 8 - %94 = load ptr, ptr @"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo", align 8 - %95 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %96 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %95, i32 0, i32 0 - store ptr @2, ptr %96, align 8 - %97 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %95, i32 0, i32 1 - store i64 4, ptr %97, align 4 - %98 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %95, align 8 - %99 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %99, i32 0, i32 0 - store ptr @7, ptr %100, align 8 - %101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %99, i32 0, i32 1 - store i64 3, ptr %101, align 4 - %102 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %99, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %60, %"github.com/goplus/llgo/internal/runtime.String" %98, %"github.com/goplus/llgo/internal/runtime.String" %102, ptr %94, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer) +_llgo_8: ; preds = %_llgo_10, %_llgo_6 + %54 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 0, i64 0) + store ptr %54, ptr @_llgo_main.bar, align 8 + %55 = load ptr, ptr @"*_llgo_byte", align 8 + %56 = load ptr, ptr @_llgo_float32, align 8 + %57 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %58 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %57, i32 0, i32 0 + store ptr @0, ptr %58, align 8 + %59 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %57, i32 0, i32 1 + store i64 2, ptr %59, align 4 + %60 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %57, align 8 + %61 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %62 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %61, i32 0, i32 0 + store ptr null, ptr %62, align 8 + %63 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %61, i32 0, i32 1 + store i64 0, ptr %63, align 4 + %64 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %61, align 8 + %65 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %60, ptr %55, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %64, i1 false) + %66 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %67 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 0 + store ptr @6, ptr %67, align 8 + %68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 1 + store i64 1, ptr %68, align 4 + %69 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %66, align 8 + %70 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %70, i32 0, i32 0 + store ptr null, ptr %71, align 8 + %72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %70, i32 0, i32 1 + store i64 0, ptr %72, align 4 + %73 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %70, align 8 + %74 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %69, ptr %56, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %73, i1 false) + %75 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %76 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %75, i32 0, i32 0 + store ptr @2, ptr %76, align 8 + %77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %75, i32 0, i32 1 + store i64 4, ptr %77, align 4 + %78 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %75, align 8 + %79 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112) + %80 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %79, i64 0 + store %"github.com/goplus/llgo/internal/abi.StructField" %65, ptr %80, align 8 + %81 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %79, i64 1 + store %"github.com/goplus/llgo/internal/abi.StructField" %74, ptr %81, align 8 + %82 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %83 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %82, i32 0, i32 0 + store ptr %79, ptr %83, align 8 + %84 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %82, i32 0, i32 1 + store i64 2, ptr %84, align 4 + %85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %82, i32 0, i32 2 + store i64 2, ptr %85, align 4 + %86 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %82, align 8 + %87 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %78, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %86) + store ptr %87, ptr @"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo", align 8 + %88 = load ptr, ptr @"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo", align 8 + %89 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %90 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %89, i32 0, i32 0 + store ptr @2, ptr %90, align 8 + %91 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %89, i32 0, i32 1 + store i64 4, ptr %91, align 4 + %92 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %89, align 8 + %93 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %94 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %93, i32 0, i32 0 + store ptr @7, ptr %94, align 8 + %95 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %93, i32 0, i32 1 + store i64 3, ptr %95, align 4 + %96 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %93, align 8 + call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %54, %"github.com/goplus/llgo/internal/runtime.String" %92, %"github.com/goplus/llgo/internal/runtime.String" %96, ptr %88, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer) ret void -_llgo_11: ; preds = %_llgo_9 - %103 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %104 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %105 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %104, i32 0, i32 0 - store ptr %103, ptr %105, align 8 - %106 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %104, i32 0, i32 1 - store i64 0, ptr %106, align 4 - %107 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %104, i32 0, i32 2 - store i64 0, ptr %107, align 4 - %108 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %104, align 8 - %109 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %110 = getelementptr ptr, ptr %109, i64 0 - store ptr %57, ptr %110, align 8 - %111 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %112 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %111, i32 0, i32 0 - store ptr %109, ptr %112, align 8 - %113 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %111, i32 0, i32 1 - store i64 1, ptr %113, align 4 - %114 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %111, i32 0, i32 2 - store i64 1, ptr %114, align 4 - %115 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %111, align 8 - %116 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %108, %"github.com/goplus/llgo/internal/runtime.Slice" %115, i1 false) - store ptr %116, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8 - br label %_llgo_12 +_llgo_9: ; preds = %_llgo_7 + %97 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + %98 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %99 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, i32 0, i32 0 + store ptr %97, ptr %99, align 8 + %100 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, i32 0, i32 1 + store i64 0, ptr %100, align 4 + %101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, i32 0, i32 2 + store i64 0, ptr %101, align 4 + %102 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %98, align 8 + %103 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) + %104 = getelementptr ptr, ptr %103, i64 0 + store ptr %51, ptr %104, align 8 + %105 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %106 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %105, i32 0, i32 0 + store ptr %103, ptr %106, align 8 + %107 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %105, i32 0, i32 1 + store i64 1, ptr %107, align 4 + %108 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %105, i32 0, i32 2 + store i64 1, ptr %108, align 4 + %109 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %105, align 8 + %110 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %102, %"github.com/goplus/llgo/internal/runtime.Slice" %109, i1 false) + store ptr %110, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8 + br label %_llgo_10 -_llgo_12: ; preds = %_llgo_11, %_llgo_9 - %117 = load ptr, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8 +_llgo_10: ; preds = %_llgo_9, %_llgo_7 + %111 = load ptr, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8 + %112 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 + %113 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %112, i32 0, i32 0 + store %"github.com/goplus/llgo/internal/runtime.String" %50, ptr %113, align 8 + %114 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %112, i32 0, i32 1 + store ptr %111, ptr %114, align 8 + %115 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %112, i32 0, i32 2 + store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Foo).Pb", ptr %115, align 8 + %116 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %112, i32 0, i32 3 + store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Foo).Pb", ptr %116, align 8 + %117 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %112, align 8 %118 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 %119 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %118, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %56, ptr %119, align 8 + store %"github.com/goplus/llgo/internal/runtime.String" %50, ptr %119, align 8 %120 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %118, i32 0, i32 1 - store ptr %117, ptr %120, align 8 + store ptr %111, ptr %120, align 8 %121 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %118, i32 0, i32 2 store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Foo).Pb", ptr %121, align 8 %122 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %118, i32 0, i32 3 - store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Foo).Pb", ptr %122, align 8 + store ptr @"github.com/goplus/llgo/cl/internal/foo.Foo.Pb", ptr %122, align 8 %123 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %118, align 8 - %124 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %125 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %56, ptr %125, align 8 - %126 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i32 0, i32 1 - store ptr %117, ptr %126, align 8 - %127 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i32 0, i32 2 - store ptr @"github.com/goplus/llgo/cl/internal/foo.(*Foo).Pb", ptr %127, align 8 - %128 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i32 0, i32 3 - store ptr @"github.com/goplus/llgo/cl/internal/foo.Foo.Pb", ptr %128, align 8 - %129 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %124, align 8 - %130 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) - %131 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %130, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %129, ptr %131, align 8 - %132 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %133 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, i32 0, i32 0 - store ptr %130, ptr %133, align 8 - %134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, i32 0, i32 1 - store i64 1, ptr %134, align 4 - %135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, i32 0, i32 2 + %124 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) + %125 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i64 0 + store %"github.com/goplus/llgo/internal/abi.Method" %123, ptr %125, align 8 + %126 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %127 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 0 + store ptr %124, ptr %127, align 8 + %128 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 1 + store i64 1, ptr %128, align 4 + %129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 2 + store i64 1, ptr %129, align 4 + %130 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, align 8 + %131 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) + %132 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %131, i64 0 + store %"github.com/goplus/llgo/internal/abi.Method" %117, ptr %132, align 8 + %133 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 0 + store ptr %131, ptr %134, align 8 + %135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 1 store i64 1, ptr %135, align 4 - %136 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %132, align 8 - %137 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) - %138 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %137, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %123, ptr %138, align 8 - %139 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %140 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, i32 0, i32 0 - store ptr %137, ptr %140, align 8 - %141 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, i32 0, i32 1 - store i64 1, ptr %141, align 4 - %142 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, i32 0, i32 2 - store i64 1, ptr %142, align 4 - %143 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %139, align 8 - %144 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %145 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %144, i32 0, i32 0 - store ptr @4, ptr %145, align 8 - %146 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %144, i32 0, i32 1 - store i64 38, ptr %146, align 4 - %147 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %144, align 8 - %148 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %149 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %148, i32 0, i32 0 - store ptr @5, ptr %149, align 8 - %150 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %148, i32 0, i32 1 - store i64 3, ptr %150, align 4 - %151 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %148, align 8 - call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %2, %"github.com/goplus/llgo/internal/runtime.String" %147, %"github.com/goplus/llgo/internal/runtime.String" %151, ptr %52, %"github.com/goplus/llgo/internal/runtime.Slice" %136, %"github.com/goplus/llgo/internal/runtime.Slice" %143) - br label %_llgo_10 + %136 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 2 + store i64 1, ptr %136, align 4 + %137 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, align 8 + %138 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %139 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %138, i32 0, i32 0 + store ptr @4, ptr %139, align 8 + %140 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %138, i32 0, i32 1 + store i64 38, ptr %140, align 4 + %141 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %138, align 8 + %142 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %143 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %142, i32 0, i32 0 + store ptr @5, ptr %143, align 8 + %144 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %142, i32 0, i32 1 + store i64 3, ptr %144, align 4 + %145 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %142, align 8 + call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %2, %"github.com/goplus/llgo/internal/runtime.String" %141, %"github.com/goplus/llgo/internal/runtime.String" %145, ptr %46, %"github.com/goplus/llgo/internal/runtime.Slice" %130, %"github.com/goplus/llgo/internal/runtime.Slice" %137) + br label %_llgo_8 } declare ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64, i64, i64) -declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) - declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) +declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) + declare ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String", i64, %"github.com/goplus/llgo/internal/runtime.Slice") declare %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1) diff --git a/cl/_testrt/any/out.ll b/cl/_testrt/any/out.ll index cd1ba873..e650db3f 100644 --- a/cl/_testrt/any/out.ll +++ b/cl/_testrt/any/out.ll @@ -7,7 +7,6 @@ source_filename = "main" @"main.init$guard" = global i1 false, align 1 @"*_llgo_int8" = linkonce global ptr null, align 8 -@_llgo_int8 = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1 @_llgo_string = linkonce global ptr null, align 8 @_llgo_int = linkonce global ptr null, align 8 @@ -109,79 +108,61 @@ _llgo_0: %6 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %3, align 8 %7 = call ptr @main.hi(%"github.com/goplus/llgo/internal/runtime.eface" %6) %8 = load ptr, ptr @_llgo_int, align 8 - %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %8, i32 0, i32 6 - %10 = load i8, ptr %9, align 1 - %11 = or i8 %10, 32 - store i8 %11, ptr %9, align 1 - %12 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %12, i32 0, i32 0 - store ptr %8, ptr %13, align 8 - %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %12, i32 0, i32 1 - store ptr inttoptr (i64 100 to ptr), ptr %14, align 8 - %15 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %12, align 8 - %16 = call i64 @main.incVal(%"github.com/goplus/llgo/internal/runtime.eface" %15) - %17 = call i32 (ptr, ...) @printf(ptr @1, ptr %7, i64 %16) + %9 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %9, i32 0, i32 0 + store ptr %8, ptr %10, align 8 + %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %9, i32 0, i32 1 + store ptr inttoptr (i64 100 to ptr), ptr %11, align 8 + %12 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %9, align 8 + %13 = call i64 @main.incVal(%"github.com/goplus/llgo/internal/runtime.eface" %12) + %14 = call i32 (ptr, ...) @printf(ptr @1, ptr %7, i64 %13) ret i32 0 } define void @"main.init$after"() { _llgo_0: - %0 = load ptr, ptr @_llgo_int8, align 8 + %0 = load ptr, ptr @"*_llgo_int8", align 8 %1 = icmp eq ptr %0, null br i1 %1, label %_llgo_1, label %_llgo_2 _llgo_1: ; preds = %_llgo_0 %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3) - %3 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %2, i32 0, i32 6 - %4 = load i8, ptr %3, align 1 - %5 = or i8 %4, 32 - store i8 %5, ptr %3, align 1 - store ptr %2, ptr @_llgo_int8, align 8 + %3 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %2) + store ptr %3, ptr @"*_llgo_int8", align 8 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 - %6 = load ptr, ptr @_llgo_int8, align 8 - %7 = load ptr, ptr @"*_llgo_int8", align 8 - %8 = icmp eq ptr %7, null - br i1 %8, label %_llgo_3, label %_llgo_4 + %4 = load ptr, ptr @_llgo_string, align 8 + %5 = icmp eq ptr %4, null + br i1 %5, label %_llgo_3, label %_llgo_4 _llgo_3: ; preds = %_llgo_2 - %9 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %6) - store ptr %9, ptr @"*_llgo_int8", align 8 + %6 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + store ptr %6, ptr @_llgo_string, align 8 br label %_llgo_4 _llgo_4: ; preds = %_llgo_3, %_llgo_2 - %10 = load ptr, ptr @_llgo_string, align 8 - %11 = icmp eq ptr %10, null - br i1 %11, label %_llgo_5, label %_llgo_6 + %7 = load ptr, ptr @_llgo_int, align 8 + %8 = icmp eq ptr %7, null + br i1 %8, label %_llgo_5, label %_llgo_6 _llgo_5: ; preds = %_llgo_4 - %12 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) - store ptr %12, ptr @_llgo_string, align 8 + %9 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %9, i32 0, i32 6 + %11 = load i8, ptr %10, align 1 + %12 = or i8 %11, 32 + store i8 %12, ptr %10, align 1 + store ptr %9, ptr @_llgo_int, align 8 br label %_llgo_6 _llgo_6: ; preds = %_llgo_5, %_llgo_4 - %13 = load ptr, ptr @_llgo_int, align 8 - %14 = icmp eq ptr %13, null - br i1 %14, label %_llgo_7, label %_llgo_8 - -_llgo_7: ; preds = %_llgo_6 - %15 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) - %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %15, i32 0, i32 6 - %17 = load i8, ptr %16, align 1 - %18 = or i8 %17, 32 - store i8 %18, ptr %16, align 1 - store ptr %15, ptr @_llgo_int, align 8 - br label %_llgo_8 - -_llgo_8: ; preds = %_llgo_7, %_llgo_6 ret void } -declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) - declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) +declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) + declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) declare void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface") diff --git a/cl/_testrt/builtin/out.ll b/cl/_testrt/builtin/out.ll index b5a08597..824c5cd1 100644 --- a/cl/_testrt/builtin/out.ll +++ b/cl/_testrt/builtin/out.ll @@ -3,8 +3,8 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } -%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } +%"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } @main.a = global i64 0, align 8 @main.b = global i64 0, align 8 @@ -310,19 +310,15 @@ _llgo_0: call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) %123 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 16) %124 = load ptr, ptr @_llgo_int, align 8 - %125 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %124, i32 0, i32 6 - %126 = load i8, ptr %125, align 1 - %127 = or i8 %126, 32 - store i8 %127, ptr %125, align 1 - %128 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %128, i32 0, i32 0 - store ptr %124, ptr %129, align 8 - %130 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %128, i32 0, i32 1 - store ptr inttoptr (i64 100 to ptr), ptr %130, align 8 - %131 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %128, align 8 - store %"github.com/goplus/llgo/internal/runtime.eface" %131, ptr %123, align 8 - %132 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %123, align 8 - %133 = ptrtoint ptr %123 to i64 + %125 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %126 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %125, i32 0, i32 0 + store ptr %124, ptr %126, align 8 + %127 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %125, i32 0, i32 1 + store ptr inttoptr (i64 100 to ptr), ptr %127, align 8 + %128 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %125, align 8 + store %"github.com/goplus/llgo/internal/runtime.eface" %128, ptr %123, align 8 + %129 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %123, align 8 + %130 = ptrtoint ptr %123 to i64 call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 true) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 0) @@ -339,282 +335,282 @@ _llgo_0: call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) call void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double 1.005000e+02) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintEface"(%"github.com/goplus/llgo/internal/runtime.eface" %132) + call void @"github.com/goplus/llgo/internal/runtime.PrintEface"(%"github.com/goplus/llgo/internal/runtime.eface" %129) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) call void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr %123) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %133) + call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %130) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) - %134 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 3) - %135 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 8) - %136 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %137 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %136, i32 0, i32 0 - store ptr %134, ptr %137, align 8 - %138 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %136, i32 0, i32 1 - store i64 3, ptr %138, align 4 - %139 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %136, i32 0, i32 2 - store i64 3, ptr %139, align 4 - %140 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %136, align 8 - %141 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %122, 0 - %142 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %122, 1 - %143 = call i64 @"github.com/goplus/llgo/internal/runtime.SliceCopy"(%"github.com/goplus/llgo/internal/runtime.Slice" %140, ptr %141, i64 %142, i64 1) - store i64 %143, ptr %135, align 4 - %144 = load i64, ptr %135, align 4 - %145 = getelementptr inbounds i8, ptr %134, i64 0 - %146 = load i8, ptr %145, align 1 - %147 = getelementptr inbounds i8, ptr %134, i64 1 - %148 = load i8, ptr %147, align 1 - %149 = getelementptr inbounds i8, ptr %134, i64 2 - %150 = load i8, ptr %149, align 1 - call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %144) + %131 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 3) + %132 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 8) + %133 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 0 + store ptr %131, ptr %134, align 8 + %135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 1 + store i64 3, ptr %135, align 4 + %136 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 2 + store i64 3, ptr %136, align 4 + %137 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, align 8 + %138 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %122, 0 + %139 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %122, 1 + %140 = call i64 @"github.com/goplus/llgo/internal/runtime.SliceCopy"(%"github.com/goplus/llgo/internal/runtime.Slice" %137, ptr %138, i64 %139, i64 1) + store i64 %140, ptr %132, align 4 + %141 = load i64, ptr %132, align 4 + %142 = getelementptr inbounds i8, ptr %131, i64 0 + %143 = load i8, ptr %142, align 1 + %144 = getelementptr inbounds i8, ptr %131, i64 1 + %145 = load i8, ptr %144, align 1 + %146 = getelementptr inbounds i8, ptr %131, i64 2 + %147 = load i8, ptr %146, align 1 + call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %141) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %151 = zext i8 %146 to i64 - call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %151) + %148 = zext i8 %143 to i64 + call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %148) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %152 = zext i8 %148 to i64 - call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %152) + %149 = zext i8 %145 to i64 + call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %149) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %153 = zext i8 %150 to i64 - call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %153) + %150 = zext i8 %147 to i64 + call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %150) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) - %154 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.NewSlice3"(ptr %134, i64 1, i64 3, i64 1, i64 3, i64 3) - %155 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %156 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %155, i32 0, i32 0 - store ptr @2, ptr %156, align 8 - %157 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %155, i32 0, i32 1 - store i64 4, ptr %157, align 4 - %158 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %155, align 8 - %159 = extractvalue %"github.com/goplus/llgo/internal/runtime.String" %158, 0 - %160 = extractvalue %"github.com/goplus/llgo/internal/runtime.String" %158, 1 - %161 = call i64 @"github.com/goplus/llgo/internal/runtime.SliceCopy"(%"github.com/goplus/llgo/internal/runtime.Slice" %154, ptr %159, i64 %160, i64 1) - store i64 %161, ptr %135, align 4 - %162 = load i64, ptr %135, align 4 - %163 = getelementptr inbounds i8, ptr %134, i64 0 - %164 = load i8, ptr %163, align 1 - %165 = getelementptr inbounds i8, ptr %134, i64 1 - %166 = load i8, ptr %165, align 1 - %167 = getelementptr inbounds i8, ptr %134, i64 2 - %168 = load i8, ptr %167, align 1 - call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %162) + %151 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.NewSlice3"(ptr %131, i64 1, i64 3, i64 1, i64 3, i64 3) + %152 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %153 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %152, i32 0, i32 0 + store ptr @2, ptr %153, align 8 + %154 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %152, i32 0, i32 1 + store i64 4, ptr %154, align 4 + %155 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %152, align 8 + %156 = extractvalue %"github.com/goplus/llgo/internal/runtime.String" %155, 0 + %157 = extractvalue %"github.com/goplus/llgo/internal/runtime.String" %155, 1 + %158 = call i64 @"github.com/goplus/llgo/internal/runtime.SliceCopy"(%"github.com/goplus/llgo/internal/runtime.Slice" %151, ptr %156, i64 %157, i64 1) + store i64 %158, ptr %132, align 4 + %159 = load i64, ptr %132, align 4 + %160 = getelementptr inbounds i8, ptr %131, i64 0 + %161 = load i8, ptr %160, align 1 + %162 = getelementptr inbounds i8, ptr %131, i64 1 + %163 = load i8, ptr %162, align 1 + %164 = getelementptr inbounds i8, ptr %131, i64 2 + %165 = load i8, ptr %164, align 1 + call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %159) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %169 = zext i8 %164 to i64 - call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %169) + %166 = zext i8 %161 to i64 + call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %166) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %170 = zext i8 %166 to i64 - call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %170) + %167 = zext i8 %163 to i64 + call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %167) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %171 = zext i8 %168 to i64 - call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %171) + %168 = zext i8 %165 to i64 + call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %168) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) - %172 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %173 = getelementptr inbounds { ptr }, ptr %172, i32 0, i32 0 - store ptr %135, ptr %173, align 8 - %174 = alloca { ptr, ptr }, align 8 - %175 = getelementptr inbounds { ptr, ptr }, ptr %174, i32 0, i32 0 - store ptr @"main.main$2", ptr %175, align 8 - %176 = getelementptr inbounds { ptr, ptr }, ptr %174, i32 0, i32 1 - store ptr %172, ptr %176, align 8 - %177 = load { ptr, ptr }, ptr %174, align 8 + %169 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) + %170 = getelementptr inbounds { ptr }, ptr %169, i32 0, i32 0 + store ptr %132, ptr %170, align 8 + %171 = alloca { ptr, ptr }, align 8 + %172 = getelementptr inbounds { ptr, ptr }, ptr %171, i32 0, i32 0 + store ptr @"main.main$2", ptr %172, align 8 + %173 = getelementptr inbounds { ptr, ptr }, ptr %171, i32 0, i32 1 + store ptr %169, ptr %173, align 8 + %174 = load { ptr, ptr }, ptr %171, align 8 call void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr @main.demo) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) call void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr @main.demo) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) call void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr @"main.main$1") call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %178 = extractvalue { ptr, ptr } %177, 0 - call void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr %178) + %175 = extractvalue { ptr, ptr } %174, 0 + call void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr %175) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) - %179 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %180 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %179, i32 0, i32 0 - store ptr @3, ptr %180, align 8 - %181 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %179, i32 0, i32 1 - store i64 7, ptr %181, align 4 - %182 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %179, align 8 - %183 = call ptr @"github.com/goplus/llgo/internal/runtime.NewStringIter"(%"github.com/goplus/llgo/internal/runtime.String" %182) + %176 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %177 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %176, i32 0, i32 0 + store ptr @3, ptr %177, align 8 + %178 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %176, i32 0, i32 1 + store i64 7, ptr %178, align 4 + %179 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %176, align 8 + %180 = call ptr @"github.com/goplus/llgo/internal/runtime.NewStringIter"(%"github.com/goplus/llgo/internal/runtime.String" %179) br label %_llgo_1 _llgo_1: ; preds = %_llgo_2, %_llgo_0 - %184 = call { i1, i64, i32 } @"github.com/goplus/llgo/internal/runtime.StringIterNext"(ptr %183) - %185 = extractvalue { i1, i64, i32 } %184, 0 - br i1 %185, label %_llgo_2, label %_llgo_3 + %181 = call { i1, i64, i32 } @"github.com/goplus/llgo/internal/runtime.StringIterNext"(ptr %180) + %182 = extractvalue { i1, i64, i32 } %181, 0 + br i1 %182, label %_llgo_2, label %_llgo_3 _llgo_2: ; preds = %_llgo_1 - %186 = extractvalue { i1, i64, i32 } %184, 1 - %187 = extractvalue { i1, i64, i32 } %184, 2 - call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %186) + %183 = extractvalue { i1, i64, i32 } %181, 1 + %184 = extractvalue { i1, i64, i32 } %181, 2 + call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %183) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %188 = sext i32 %187 to i64 - call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %188) + %185 = sext i32 %184 to i64 + call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %185) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) br label %_llgo_1 _llgo_3: ; preds = %_llgo_1 - %189 = call double @main.Inf(i64 1) - %190 = call double @main.Inf(i64 -1) - %191 = call double @main.NaN() - %192 = call double @main.NaN() - %193 = call i1 @main.IsNaN(double %192) - %194 = call i1 @main.IsNaN(double 1.000000e+00) - call void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double %189) + %186 = call double @main.Inf(i64 1) + %187 = call double @main.Inf(i64 -1) + %188 = call double @main.NaN() + %189 = call double @main.NaN() + %190 = call i1 @main.IsNaN(double %189) + %191 = call i1 @main.IsNaN(double 1.000000e+00) + call void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double %186) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double %190) + call void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double %187) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double %191) + call void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double %188) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %193) + call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %190) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %194) + call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %191) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) - %195 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %196 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %195, i32 0, i32 0 - store ptr @3, ptr %196, align 8 - %197 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %195, i32 0, i32 1 - store i64 7, ptr %197, align 4 - %198 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %195, align 8 - %199 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.StringToBytes"(%"github.com/goplus/llgo/internal/runtime.String" %198) - %200 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %201 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %200, i32 0, i32 0 - store ptr @3, ptr %201, align 8 - %202 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %200, i32 0, i32 1 - store i64 7, ptr %202, align 4 - %203 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %200, align 8 - %204 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.StringToRunes"(%"github.com/goplus/llgo/internal/runtime.String" %203) - call void @"github.com/goplus/llgo/internal/runtime.PrintSlice"(%"github.com/goplus/llgo/internal/runtime.Slice" %199) + %192 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %193 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %192, i32 0, i32 0 + store ptr @3, ptr %193, align 8 + %194 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %192, i32 0, i32 1 + store i64 7, ptr %194, align 4 + %195 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %192, align 8 + %196 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.StringToBytes"(%"github.com/goplus/llgo/internal/runtime.String" %195) + %197 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %198 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %197, i32 0, i32 0 + store ptr @3, ptr %198, align 8 + %199 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %197, i32 0, i32 1 + store i64 7, ptr %199, align 4 + %200 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %197, align 8 + %201 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.StringToRunes"(%"github.com/goplus/llgo/internal/runtime.String" %200) + call void @"github.com/goplus/llgo/internal/runtime.PrintSlice"(%"github.com/goplus/llgo/internal/runtime.Slice" %196) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintSlice"(%"github.com/goplus/llgo/internal/runtime.Slice" %204) + call void @"github.com/goplus/llgo/internal/runtime.PrintSlice"(%"github.com/goplus/llgo/internal/runtime.Slice" %201) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) - %205 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.StringFromBytes"(%"github.com/goplus/llgo/internal/runtime.Slice" %199) - %206 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.StringFromRunes"(%"github.com/goplus/llgo/internal/runtime.Slice" %204) - %207 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %199, 0 - %208 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %199, 1 - %209 = icmp sge i64 3, %208 - call void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1 %209) - %210 = getelementptr inbounds i8, ptr %207, i64 3 - %211 = load i8, ptr %210, align 1 - %212 = sext i8 %211 to i32 - %213 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.StringFromRune"(i32 %212) - %214 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %204, 0 - %215 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %204, 1 - %216 = icmp sge i64 0, %215 - call void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1 %216) - %217 = getelementptr inbounds i32, ptr %214, i64 0 - %218 = load i32, ptr %217, align 4 - %219 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.StringFromRune"(i32 %218) - call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %205) + %202 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.StringFromBytes"(%"github.com/goplus/llgo/internal/runtime.Slice" %196) + %203 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.StringFromRunes"(%"github.com/goplus/llgo/internal/runtime.Slice" %201) + %204 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %196, 0 + %205 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %196, 1 + %206 = icmp sge i64 3, %205 + call void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1 %206) + %207 = getelementptr inbounds i8, ptr %204, i64 3 + %208 = load i8, ptr %207, align 1 + %209 = sext i8 %208 to i32 + %210 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.StringFromRune"(i32 %209) + %211 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %201, 0 + %212 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %201, 1 + %213 = icmp sge i64 0, %212 + call void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1 %213) + %214 = getelementptr inbounds i32, ptr %211, i64 0 + %215 = load i32, ptr %214, align 4 + %216 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.StringFromRune"(i32 %215) + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %202) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %206) + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %203) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %213) + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %210) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %219) + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %216) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) - %220 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %221 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %220, i32 0, i32 0 - store ptr @4, ptr %221, align 8 - %222 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %220, i32 0, i32 1 - store i64 3, ptr %222, align 4 - %223 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %220, align 8 - %224 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %225 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %224, i32 0, i32 0 - store ptr @4, ptr %225, align 8 - %226 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %224, i32 0, i32 1 - store i64 3, ptr %226, align 4 - %227 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %224, align 8 - %228 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %223, %"github.com/goplus/llgo/internal/runtime.String" %227) - %229 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %230 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %229, i32 0, i32 0 - store ptr @4, ptr %230, align 8 - %231 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %229, i32 0, i32 1 - store i64 3, ptr %231, align 4 - %232 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %229, align 8 - %233 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %234 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %233, i32 0, i32 0 - store ptr @5, ptr %234, align 8 - %235 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %233, i32 0, i32 1 - store i64 3, ptr %235, align 4 - %236 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %233, align 8 - %237 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %232, %"github.com/goplus/llgo/internal/runtime.String" %236) - %238 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %239 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %238, i32 0, i32 0 - store ptr @4, ptr %239, align 8 - %240 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %238, i32 0, i32 1 - store i64 3, ptr %240, align 4 - %241 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %238, align 8 - %242 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %243 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %242, i32 0, i32 0 - store ptr @5, ptr %243, align 8 - %244 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %242, i32 0, i32 1 - store i64 3, ptr %244, align 4 - %245 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %242, align 8 - %246 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %241, %"github.com/goplus/llgo/internal/runtime.String" %245) - %247 = xor i1 %246, true - %248 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %249 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %248, i32 0, i32 0 - store ptr @4, ptr %249, align 8 - %250 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %248, i32 0, i32 1 - store i64 3, ptr %250, align 4 - %251 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %248, align 8 - %252 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %253 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %252, i32 0, i32 0 - store ptr @5, ptr %253, align 8 - %254 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %252, i32 0, i32 1 - store i64 3, ptr %254, align 4 - %255 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %252, align 8 - %256 = call i1 @"github.com/goplus/llgo/internal/runtime.StringLess"(%"github.com/goplus/llgo/internal/runtime.String" %251, %"github.com/goplus/llgo/internal/runtime.String" %255) - %257 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %258 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %257, i32 0, i32 0 - store ptr @4, ptr %258, align 8 - %259 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %257, i32 0, i32 1 - store i64 3, ptr %259, align 4 - %260 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %257, align 8 - %261 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %262 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %261, i32 0, i32 0 - store ptr @5, ptr %262, align 8 - %263 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %261, i32 0, i32 1 - store i64 3, ptr %263, align 4 - %264 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %261, align 8 - %265 = call i1 @"github.com/goplus/llgo/internal/runtime.StringLess"(%"github.com/goplus/llgo/internal/runtime.String" %264, %"github.com/goplus/llgo/internal/runtime.String" %260) - %266 = xor i1 %265, true - %267 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %268 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %267, i32 0, i32 0 - store ptr @4, ptr %268, align 8 - %269 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %267, i32 0, i32 1 - store i64 3, ptr %269, align 4 - %270 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %267, align 8 - %271 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %272 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %271, i32 0, i32 0 - store ptr @5, ptr %272, align 8 - %273 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %271, i32 0, i32 1 - store i64 3, ptr %273, align 4 - %274 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %271, align 8 - %275 = call i1 @"github.com/goplus/llgo/internal/runtime.StringLess"(%"github.com/goplus/llgo/internal/runtime.String" %274, %"github.com/goplus/llgo/internal/runtime.String" %270) - %276 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %277 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %276, i32 0, i32 0 - store ptr @4, ptr %277, align 8 - %278 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %276, i32 0, i32 1 - store i64 3, ptr %278, align 4 - %279 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %276, align 8 - %280 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %281 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %280, i32 0, i32 0 - store ptr @5, ptr %281, align 8 - %282 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %280, i32 0, i32 1 - store i64 3, ptr %282, align 4 - %283 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %280, align 8 - %284 = call i1 @"github.com/goplus/llgo/internal/runtime.StringLess"(%"github.com/goplus/llgo/internal/runtime.String" %279, %"github.com/goplus/llgo/internal/runtime.String" %283) - %285 = xor i1 %284, true - call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %228) + %217 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %218 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %217, i32 0, i32 0 + store ptr @4, ptr %218, align 8 + %219 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %217, i32 0, i32 1 + store i64 3, ptr %219, align 4 + %220 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %217, align 8 + %221 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %222 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %221, i32 0, i32 0 + store ptr @4, ptr %222, align 8 + %223 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %221, i32 0, i32 1 + store i64 3, ptr %223, align 4 + %224 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %221, align 8 + %225 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %220, %"github.com/goplus/llgo/internal/runtime.String" %224) + %226 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %227 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %226, i32 0, i32 0 + store ptr @4, ptr %227, align 8 + %228 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %226, i32 0, i32 1 + store i64 3, ptr %228, align 4 + %229 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %226, align 8 + %230 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %231 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %230, i32 0, i32 0 + store ptr @5, ptr %231, align 8 + %232 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %230, i32 0, i32 1 + store i64 3, ptr %232, align 4 + %233 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %230, align 8 + %234 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %229, %"github.com/goplus/llgo/internal/runtime.String" %233) + %235 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %236 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %235, i32 0, i32 0 + store ptr @4, ptr %236, align 8 + %237 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %235, i32 0, i32 1 + store i64 3, ptr %237, align 4 + %238 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %235, align 8 + %239 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %240 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %239, i32 0, i32 0 + store ptr @5, ptr %240, align 8 + %241 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %239, i32 0, i32 1 + store i64 3, ptr %241, align 4 + %242 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %239, align 8 + %243 = call i1 @"github.com/goplus/llgo/internal/runtime.StringEqual"(%"github.com/goplus/llgo/internal/runtime.String" %238, %"github.com/goplus/llgo/internal/runtime.String" %242) + %244 = xor i1 %243, true + %245 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %246 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %245, i32 0, i32 0 + store ptr @4, ptr %246, align 8 + %247 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %245, i32 0, i32 1 + store i64 3, ptr %247, align 4 + %248 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %245, align 8 + %249 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %250 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %249, i32 0, i32 0 + store ptr @5, ptr %250, align 8 + %251 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %249, i32 0, i32 1 + store i64 3, ptr %251, align 4 + %252 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %249, align 8 + %253 = call i1 @"github.com/goplus/llgo/internal/runtime.StringLess"(%"github.com/goplus/llgo/internal/runtime.String" %248, %"github.com/goplus/llgo/internal/runtime.String" %252) + %254 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %255 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %254, i32 0, i32 0 + store ptr @4, ptr %255, align 8 + %256 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %254, i32 0, i32 1 + store i64 3, ptr %256, align 4 + %257 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %254, align 8 + %258 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %259 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %258, i32 0, i32 0 + store ptr @5, ptr %259, align 8 + %260 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %258, i32 0, i32 1 + store i64 3, ptr %260, align 4 + %261 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %258, align 8 + %262 = call i1 @"github.com/goplus/llgo/internal/runtime.StringLess"(%"github.com/goplus/llgo/internal/runtime.String" %261, %"github.com/goplus/llgo/internal/runtime.String" %257) + %263 = xor i1 %262, true + %264 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %265 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %264, i32 0, i32 0 + store ptr @4, ptr %265, align 8 + %266 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %264, i32 0, i32 1 + store i64 3, ptr %266, align 4 + %267 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %264, align 8 + %268 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %269 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %268, i32 0, i32 0 + store ptr @5, ptr %269, align 8 + %270 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %268, i32 0, i32 1 + store i64 3, ptr %270, align 4 + %271 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %268, align 8 + %272 = call i1 @"github.com/goplus/llgo/internal/runtime.StringLess"(%"github.com/goplus/llgo/internal/runtime.String" %271, %"github.com/goplus/llgo/internal/runtime.String" %267) + %273 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %274 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %273, i32 0, i32 0 + store ptr @4, ptr %274, align 8 + %275 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %273, i32 0, i32 1 + store i64 3, ptr %275, align 4 + %276 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %273, align 8 + %277 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %278 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %277, i32 0, i32 0 + store ptr @5, ptr %278, align 8 + %279 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %277, i32 0, i32 1 + store i64 3, ptr %279, align 4 + %280 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %277, align 8 + %281 = call i1 @"github.com/goplus/llgo/internal/runtime.StringLess"(%"github.com/goplus/llgo/internal/runtime.String" %276, %"github.com/goplus/llgo/internal/runtime.String" %280) + %282 = xor i1 %281, true + call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %225) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %237) + call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %234) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %247) + call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %244) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %256) + call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %253) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %266) + call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %263) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %275) + call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %272) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %285) + call void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1 %282) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) ret i32 0 } diff --git a/cl/_testrt/eface/out.ll b/cl/_testrt/eface/out.ll index 461edfa9..49bac4b3 100644 --- a/cl/_testrt/eface/out.ll +++ b/cl/_testrt/eface/out.ll @@ -206,260 +206,204 @@ _llgo_0: call void @"github.com/goplus/llgo/internal/runtime.init"() call void @main.init() %2 = load ptr, ptr @_llgo_bool, align 8 - %3 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %2, i32 0, i32 6 - %4 = load i8, ptr %3, align 1 - %5 = or i8 %4, 32 - store i8 %5, ptr %3, align 1 - %6 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %6, i32 0, i32 0 - store ptr %2, ptr %7, align 8 - %8 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %6, i32 0, i32 1 - store ptr inttoptr (i64 -1 to ptr), ptr %8, align 8 - %9 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %6, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %9) - %10 = load ptr, ptr @_llgo_int, align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %10, i32 0, i32 6 - %12 = load i8, ptr %11, align 1 - %13 = or i8 %12, 32 - store i8 %13, ptr %11, align 1 - %14 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %14, i32 0, i32 0 - store ptr %10, ptr %15, align 8 - %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %14, i32 0, i32 1 - store ptr null, ptr %16, align 8 - %17 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %14, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %17) - %18 = load ptr, ptr @_llgo_int8, align 8 - %19 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %18, i32 0, i32 6 - %20 = load i8, ptr %19, align 1 - %21 = or i8 %20, 32 - store i8 %21, ptr %19, align 1 - %22 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %22, i32 0, i32 0 - store ptr %18, ptr %23, align 8 - %24 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %22, i32 0, i32 1 - store ptr null, ptr %24, align 8 - %25 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %22, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %25) - %26 = load ptr, ptr @_llgo_int16, align 8 - %27 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %26, i32 0, i32 6 - %28 = load i8, ptr %27, align 1 - %29 = or i8 %28, 32 - store i8 %29, ptr %27, align 1 - %30 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %30, i32 0, i32 0 - store ptr %26, ptr %31, align 8 - %32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %30, i32 0, i32 1 - store ptr null, ptr %32, align 8 - %33 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %30, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %33) - %34 = load ptr, ptr @_llgo_int32, align 8 - %35 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %34, i32 0, i32 6 - %36 = load i8, ptr %35, align 1 - %37 = or i8 %36, 32 - store i8 %37, ptr %35, align 1 + %3 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %3, i32 0, i32 0 + store ptr %2, ptr %4, align 8 + %5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %3, i32 0, i32 1 + store ptr inttoptr (i64 -1 to ptr), ptr %5, align 8 + %6 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %3, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %6) + %7 = load ptr, ptr @_llgo_int, align 8 + %8 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %8, i32 0, i32 0 + store ptr %7, ptr %9, align 8 + %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %8, i32 0, i32 1 + store ptr null, ptr %10, align 8 + %11 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %8, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %11) + %12 = load ptr, ptr @_llgo_int8, align 8 + %13 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %13, i32 0, i32 0 + store ptr %12, ptr %14, align 8 + %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %13, i32 0, i32 1 + store ptr null, ptr %15, align 8 + %16 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %13, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %16) + %17 = load ptr, ptr @_llgo_int16, align 8 + %18 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %18, i32 0, i32 0 + store ptr %17, ptr %19, align 8 + %20 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %18, i32 0, i32 1 + store ptr null, ptr %20, align 8 + %21 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %18, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %21) + %22 = load ptr, ptr @_llgo_int32, align 8 + %23 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %24 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %23, i32 0, i32 0 + store ptr %22, ptr %24, align 8 + %25 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %23, i32 0, i32 1 + store ptr null, ptr %25, align 8 + %26 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %23, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %26) + %27 = load ptr, ptr @_llgo_int64, align 8 + %28 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %28, i32 0, i32 0 + store ptr %27, ptr %29, align 8 + %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %28, i32 0, i32 1 + store ptr null, ptr %30, align 8 + %31 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %28, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %31) + %32 = load ptr, ptr @_llgo_uint, align 8 + %33 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %33, i32 0, i32 0 + store ptr %32, ptr %34, align 8 + %35 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %33, i32 0, i32 1 + store ptr null, ptr %35, align 8 + %36 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %33, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %36) + %37 = load ptr, ptr @_llgo_uint8, align 8 %38 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 %39 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %38, i32 0, i32 0 - store ptr %34, ptr %39, align 8 + store ptr %37, ptr %39, align 8 %40 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %38, i32 0, i32 1 store ptr null, ptr %40, align 8 %41 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %38, align 8 call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %41) - %42 = load ptr, ptr @_llgo_int64, align 8 - %43 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %42, i32 0, i32 6 - %44 = load i8, ptr %43, align 1 - %45 = or i8 %44, 32 - store i8 %45, ptr %43, align 1 - %46 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %47 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %46, i32 0, i32 0 - store ptr %42, ptr %47, align 8 - %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %46, i32 0, i32 1 - store ptr null, ptr %48, align 8 - %49 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %46, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %49) - %50 = load ptr, ptr @_llgo_uint, align 8 - %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %50, i32 0, i32 6 - %52 = load i8, ptr %51, align 1 - %53 = or i8 %52, 32 - store i8 %53, ptr %51, align 1 - %54 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %55 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %54, i32 0, i32 0 - store ptr %50, ptr %55, align 8 - %56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %54, i32 0, i32 1 - store ptr null, ptr %56, align 8 - %57 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %54, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %57) - %58 = load ptr, ptr @_llgo_uint8, align 8 - %59 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %58, i32 0, i32 6 - %60 = load i8, ptr %59, align 1 - %61 = or i8 %60, 32 - store i8 %61, ptr %59, align 1 - %62 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %63 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %62, i32 0, i32 0 - store ptr %58, ptr %63, align 8 - %64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %62, i32 0, i32 1 - store ptr null, ptr %64, align 8 - %65 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %62, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %65) - %66 = load ptr, ptr @_llgo_uint16, align 8 - %67 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %66, i32 0, i32 6 - %68 = load i8, ptr %67, align 1 - %69 = or i8 %68, 32 - store i8 %69, ptr %67, align 1 - %70 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %71 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %70, i32 0, i32 0 - store ptr %66, ptr %71, align 8 - %72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %70, i32 0, i32 1 - store ptr null, ptr %72, align 8 - %73 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %70, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %73) - %74 = load ptr, ptr @_llgo_uint32, align 8 - %75 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %74, i32 0, i32 6 - %76 = load i8, ptr %75, align 1 - %77 = or i8 %76, 32 - store i8 %77, ptr %75, align 1 - %78 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %79 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %78, i32 0, i32 0 - store ptr %74, ptr %79, align 8 - %80 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %78, i32 0, i32 1 - store ptr null, ptr %80, align 8 - %81 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %78, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %81) - %82 = load ptr, ptr @_llgo_uint64, align 8 - %83 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %82, i32 0, i32 6 - %84 = load i8, ptr %83, align 1 - %85 = or i8 %84, 32 - store i8 %85, ptr %83, align 1 - %86 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %87 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %86, i32 0, i32 0 - store ptr %82, ptr %87, align 8 - %88 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %86, i32 0, i32 1 - store ptr null, ptr %88, align 8 - %89 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %86, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %89) - %90 = load ptr, ptr @_llgo_uintptr, align 8 - %91 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %90, i32 0, i32 6 - %92 = load i8, ptr %91, align 1 - %93 = or i8 %92, 32 - store i8 %93, ptr %91, align 1 - %94 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %95 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %94, i32 0, i32 0 - store ptr %90, ptr %95, align 8 - %96 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %94, i32 0, i32 1 - store ptr null, ptr %96, align 8 - %97 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %94, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %97) - %98 = load ptr, ptr @_llgo_float32, align 8 - %99 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %98, i32 0, i32 6 - %100 = load i8, ptr %99, align 1 - %101 = or i8 %100, 32 - store i8 %101, ptr %99, align 1 - %102 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %103 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %102, i32 0, i32 0 - store ptr %98, ptr %103, align 8 - %104 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %102, i32 0, i32 1 - store ptr null, ptr %104, align 8 - %105 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %102, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %105) - %106 = load ptr, ptr @_llgo_float64, align 8 - %107 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %106, i32 0, i32 6 - %108 = load i8, ptr %107, align 1 - %109 = or i8 %108, 32 - store i8 %109, ptr %107, align 1 - %110 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %111 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %110, i32 0, i32 0 - store ptr %106, ptr %111, align 8 - %112 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %110, i32 0, i32 1 - store ptr null, ptr %112, align 8 - %113 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %110, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %113) - %114 = load ptr, ptr @"[10]_llgo_int", align 8 - %115 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 80) - store [10 x i64] zeroinitializer, ptr %115, align 4 - %116 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %117 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %116, i32 0, i32 0 - store ptr %114, ptr %117, align 8 - %118 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %116, i32 0, i32 1 - store ptr %115, ptr %118, align 8 - %119 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %116, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %119) - %120 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %121 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %122 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %121, i32 0, i32 0 - store ptr %120, ptr %122, align 8 - %123 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %121, i32 0, i32 1 - store ptr @"main.main$1", ptr %123, align 8 - %124 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %121, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %124) - %125 = load ptr, ptr @"*_llgo_int", align 8 - %126 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %127 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %126, i32 0, i32 0 - store ptr %125, ptr %127, align 8 - %128 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %126, i32 0, i32 1 - store ptr null, ptr %128, align 8 - %129 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %126, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %129) - %130 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 0) - %131 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %132 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %131, i32 0, i32 0 - store ptr %130, ptr %132, align 8 - %133 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %131, i32 0, i32 1 - store i64 0, ptr %133, align 4 - %134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %131, i32 0, i32 2 - store i64 0, ptr %134, align 4 - %135 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %131, align 8 - %136 = load ptr, ptr @"[]_llgo_int", align 8 - %137 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - store %"github.com/goplus/llgo/internal/runtime.Slice" %135, ptr %137, align 8 - %138 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %139 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %138, i32 0, i32 0 - store ptr %136, ptr %139, align 8 - %140 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %138, i32 0, i32 1 - store ptr %137, ptr %140, align 8 - %141 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %138, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %141) - %142 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %143 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %142, i32 0, i32 0 - store ptr @3, ptr %143, align 8 - %144 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %142, i32 0, i32 1 - store i64 5, ptr %144, align 4 - %145 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %142, align 8 - %146 = load ptr, ptr @_llgo_string, align 8 - %147 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %145, ptr %147, align 8 - %148 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %149 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %148, i32 0, i32 0 - store ptr %146, ptr %149, align 8 - %150 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %148, i32 0, i32 1 - store ptr %147, ptr %150, align 8 - %151 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %148, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %151) - %152 = load ptr, ptr @"main.struct$RKbUG45GE4henGMAdmt0Rju0JptyR8NsX7IZLsOI0OM", align 8 - %153 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - store { i8, i64, i64 } zeroinitializer, ptr %153, align 4 - %154 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %155 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %154, i32 0, i32 0 - store ptr %152, ptr %155, align 8 - %156 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %154, i32 0, i32 1 - store ptr %153, ptr %156, align 8 - %157 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %154, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %157) - %158 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %159 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %158, i32 0, i32 0 - store ptr null, ptr %159, align 8 - %160 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %158, i32 0, i32 1 - store i64 0, ptr %160, align 4 - %161 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %158, align 8 - %162 = load ptr, ptr @_llgo_main.T, align 8 - %163 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) - store %"github.com/goplus/llgo/internal/runtime.String" %161, ptr %163, align 8 - %164 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 - %165 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %164, i32 0, i32 0 - store ptr %162, ptr %165, align 8 - %166 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %164, i32 0, i32 1 - store ptr %163, ptr %166, align 8 - %167 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %164, align 8 - call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %167) + %42 = load ptr, ptr @_llgo_uint16, align 8 + %43 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %44 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %43, i32 0, i32 0 + store ptr %42, ptr %44, align 8 + %45 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %43, i32 0, i32 1 + store ptr null, ptr %45, align 8 + %46 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %43, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %46) + %47 = load ptr, ptr @_llgo_uint32, align 8 + %48 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %48, i32 0, i32 0 + store ptr %47, ptr %49, align 8 + %50 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %48, i32 0, i32 1 + store ptr null, ptr %50, align 8 + %51 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %48, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %51) + %52 = load ptr, ptr @_llgo_uint64, align 8 + %53 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %53, i32 0, i32 0 + store ptr %52, ptr %54, align 8 + %55 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %53, i32 0, i32 1 + store ptr null, ptr %55, align 8 + %56 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %53, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %56) + %57 = load ptr, ptr @_llgo_uintptr, align 8 + %58 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %59 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %58, i32 0, i32 0 + store ptr %57, ptr %59, align 8 + %60 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %58, i32 0, i32 1 + store ptr null, ptr %60, align 8 + %61 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %58, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %61) + %62 = load ptr, ptr @_llgo_float32, align 8 + %63 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %63, i32 0, i32 0 + store ptr %62, ptr %64, align 8 + %65 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %63, i32 0, i32 1 + store ptr null, ptr %65, align 8 + %66 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %63, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %66) + %67 = load ptr, ptr @_llgo_float64, align 8 + %68 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %69 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i32 0, i32 0 + store ptr %67, ptr %69, align 8 + %70 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i32 0, i32 1 + store ptr null, ptr %70, align 8 + %71 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %71) + %72 = load ptr, ptr @"[10]_llgo_int", align 8 + %73 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 80) + store [10 x i64] zeroinitializer, ptr %73, align 4 + %74 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %75 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %74, i32 0, i32 0 + store ptr %72, ptr %75, align 8 + %76 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %74, i32 0, i32 1 + store ptr %73, ptr %76, align 8 + %77 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %74, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %77) + %78 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %79 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %80 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %79, i32 0, i32 0 + store ptr %78, ptr %80, align 8 + %81 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %79, i32 0, i32 1 + store ptr @"main.main$1", ptr %81, align 8 + %82 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %79, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %82) + %83 = load ptr, ptr @"*_llgo_int", align 8 + %84 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %84, i32 0, i32 0 + store ptr %83, ptr %85, align 8 + %86 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %84, i32 0, i32 1 + store ptr null, ptr %86, align 8 + %87 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %84, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %87) + %88 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 0) + %89 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %90 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %89, i32 0, i32 0 + store ptr %88, ptr %90, align 8 + %91 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %89, i32 0, i32 1 + store i64 0, ptr %91, align 4 + %92 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %89, i32 0, i32 2 + store i64 0, ptr %92, align 4 + %93 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %89, align 8 + %94 = load ptr, ptr @"[]_llgo_int", align 8 + %95 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + store %"github.com/goplus/llgo/internal/runtime.Slice" %93, ptr %95, align 8 + %96 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %97 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %96, i32 0, i32 0 + store ptr %94, ptr %97, align 8 + %98 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %96, i32 0, i32 1 + store ptr %95, ptr %98, align 8 + %99 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %96, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %99) + %100 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %101 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %100, i32 0, i32 0 + store ptr @3, ptr %101, align 8 + %102 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %100, i32 0, i32 1 + store i64 5, ptr %102, align 4 + %103 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %100, align 8 + %104 = load ptr, ptr @_llgo_string, align 8 + %105 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %103, ptr %105, align 8 + %106 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %107 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %106, i32 0, i32 0 + store ptr %104, ptr %107, align 8 + %108 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %106, i32 0, i32 1 + store ptr %105, ptr %108, align 8 + %109 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %106, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %109) + %110 = load ptr, ptr @"main.struct$RKbUG45GE4henGMAdmt0Rju0JptyR8NsX7IZLsOI0OM", align 8 + %111 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) + store { i8, i64, i64 } zeroinitializer, ptr %111, align 4 + %112 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %113 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %112, i32 0, i32 0 + store ptr %110, ptr %113, align 8 + %114 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %112, i32 0, i32 1 + store ptr %111, ptr %114, align 8 + %115 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %112, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %115) + %116 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %117 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %116, i32 0, i32 0 + store ptr null, ptr %117, align 8 + %118 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %116, i32 0, i32 1 + store i64 0, ptr %118, align 4 + %119 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %116, align 8 + %120 = load ptr, ptr @_llgo_main.T, align 8 + %121 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) + store %"github.com/goplus/llgo/internal/runtime.String" %119, ptr %121, align 8 + %122 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %123 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %122, i32 0, i32 0 + store ptr %120, ptr %123, align 8 + %124 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %122, i32 0, i32 1 + store ptr %121, ptr %124, align 8 + %125 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %122, align 8 + call void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %125) ret i32 0 } @@ -688,13 +632,13 @@ _llgo_27: ; preds = %_llgo_26 br label %_llgo_28 _llgo_28: ; preds = %_llgo_27, %_llgo_26 - %84 = load ptr, ptr @_llgo_int, align 8 - %85 = load ptr, ptr @"[10]_llgo_int", align 8 - %86 = icmp eq ptr %85, null - br i1 %86, label %_llgo_29, label %_llgo_30 + %84 = load ptr, ptr @"[10]_llgo_int", align 8 + %85 = icmp eq ptr %84, null + br i1 %85, label %_llgo_29, label %_llgo_30 _llgo_29: ; preds = %_llgo_28 - %87 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 10, ptr %84) + %86 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %87 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 10, ptr %86) store ptr %87, ptr @"[10]_llgo_int", align 8 br label %_llgo_30 @@ -727,24 +671,24 @@ _llgo_31: ; preds = %_llgo_30 br label %_llgo_32 _llgo_32: ; preds = %_llgo_31, %_llgo_30 - %103 = load ptr, ptr @_llgo_int, align 8 - %104 = load ptr, ptr @"*_llgo_int", align 8 - %105 = icmp eq ptr %104, null - br i1 %105, label %_llgo_33, label %_llgo_34 + %103 = load ptr, ptr @"*_llgo_int", align 8 + %104 = icmp eq ptr %103, null + br i1 %104, label %_llgo_33, label %_llgo_34 _llgo_33: ; preds = %_llgo_32 - %106 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %103) + %105 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %106 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %105) store ptr %106, ptr @"*_llgo_int", align 8 br label %_llgo_34 _llgo_34: ; preds = %_llgo_33, %_llgo_32 - %107 = load ptr, ptr @_llgo_int, align 8 - %108 = load ptr, ptr @"[]_llgo_int", align 8 - %109 = icmp eq ptr %108, null - br i1 %109, label %_llgo_35, label %_llgo_36 + %107 = load ptr, ptr @"[]_llgo_int", align 8 + %108 = icmp eq ptr %107, null + br i1 %108, label %_llgo_35, label %_llgo_36 _llgo_35: ; preds = %_llgo_34 - %110 = call ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr %107) + %109 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %110 = call ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr %109) store ptr %110, ptr @"[]_llgo_int", align 8 br label %_llgo_36 diff --git a/internal/lib/internal/reflectlite/value.go b/internal/lib/internal/reflectlite/value.go index bc12cb00..d986048a 100644 --- a/internal/lib/internal/reflectlite/value.go +++ b/internal/lib/internal/reflectlite/value.go @@ -8,6 +8,7 @@ import ( "unsafe" "github.com/goplus/llgo/internal/abi" + _ "github.com/goplus/llgo/internal/runtime" ) // Value is the reflection interface to a Go value. diff --git a/internal/runtime/z_face.go b/internal/runtime/z_face.go index 74719a9f..e4d328cd 100644 --- a/internal/runtime/z_face.go +++ b/internal/runtime/z_face.go @@ -291,6 +291,10 @@ func IfacePtrData(i iface) unsafe.Pointer { return i.data } +func SetDirectIface(t *abi.Type) { + t.Kind_ |= abi.KindDirectIface +} + // Implements reports whether the type V implements the interface type T. func Implements(T, V *abi.Type) bool { if V == nil { diff --git a/ssa/abitype.go b/ssa/abitype.go index 8bc51af9..181ab1cb 100644 --- a/ssa/abitype.go +++ b/ssa/abitype.go @@ -118,12 +118,11 @@ func (b Builder) abiMethods(t *types.Named) (ret, pret int) { } // Method{name string, typ *FuncType, ifn, tfn abi.Text} -func (b Builder) abiMethodOf(m types.Object, mSig *types.Signature /*, bg Background = InGo */) (mthd, ptrMthd Expr) { +func (b Builder) abiMethodOf(mPkg *types.Package, mName string, mSig *types.Signature /*, bg Background = InGo */) (mthd, ptrMthd Expr) { prog := b.Prog - mPkg, mName := m.Pkg(), m.Name() name := b.Str(mName).impl if !token.IsExported(mName) { - name = b.Str(abi.FullName(mPkg, m.Name())).impl + name = b.Str(abi.FullName(mPkg, mName)).impl } abiSigGo := types.NewSignatureType(nil, nil, nil, mSig.Params(), mSig.Results(), mSig.Variadic()) abiSig := prog.FuncDecl(abiSigGo, InGo).raw.Type @@ -215,12 +214,19 @@ func (b Builder) abiInitNamed(ret Expr, t *types.Named) func() Expr { var mthds []Expr var ptrMthds = make([]Expr, 0, n) for i := 0; i < n; i++ { + var mPkg *types.Package + var mSig *types.Signature m := mset[i] - sig := m.Obj().(*types.Func).Type().(*types.Signature) - if _, ok := sig.Recv().Type().Underlying().(*types.Interface); ok { - sig = m.Type().(*types.Signature) + obj := m.Obj() + mName := obj.Name() + if token.IsExported(mName) { + mPkg = t.Obj().Pkg() + mSig = m.Type().(*types.Signature) + } else { + mPkg = obj.Pkg() + mSig = obj.Type().(*types.Signature) } - mthd, ptrMthd := b.abiMethodOf(m.Obj(), sig) + mthd, ptrMthd := b.abiMethodOf(mPkg, mName, mSig) if !mthd.IsNil() { mthds = append(mthds, mthd) } @@ -238,24 +244,24 @@ func (b Builder) abiInitNamed(ret Expr, t *types.Named) func() Expr { } func (b Builder) abiPointerOf(t *types.Pointer) func() Expr { - elem := b.abiType(t.Elem()) + elem := b.abiTypeOf(t.Elem()) return func() Expr { - return b.Call(b.Pkg.rtFunc("PointerTo"), elem) + return b.Call(b.Pkg.rtFunc("PointerTo"), elem()) } } func (b Builder) abiSliceOf(t *types.Slice) func() Expr { - elem := b.abiType(t.Elem()) + elem := b.abiTypeOf(t.Elem()) return func() Expr { - return b.Call(b.Pkg.rtFunc("SliceOf"), elem) + return b.Call(b.Pkg.rtFunc("SliceOf"), elem()) } } func (b Builder) abiArrayOf(t *types.Array) func() Expr { - elem := b.abiType(t.Elem()) + elem := b.abiTypeOf(t.Elem()) return func() Expr { n := b.Prog.IntVal(uint64(t.Len()), b.Prog.Uintptr()) - return b.Call(b.Pkg.rtFunc("ArrayOf"), n, elem) + return b.Call(b.Pkg.rtFunc("ArrayOf"), n, elem()) } } @@ -312,12 +318,17 @@ func (p Package) abiTypeInit(g Global, t types.Type, pub bool) { } vexpr := tabi() prog := p.Prog - kind, _, _ := abi.DataKindOf(t, 0, prog.is32Bits) - if kind == abi.Integer || kind == abi.BitCast { + kind, _, lvl := abi.DataKindOf(t, 0, prog.is32Bits) + switch kind { + case abi.Integer, abi.BitCast: // abi.Type.Kind_ |= abi.KindDirectIface const kindDirectIface = 1 << 5 pkind := b.FieldAddr(vexpr, 6) b.Store(pkind, b.BinOp(token.OR, b.Load(pkind), Expr{prog.IntVal(kindDirectIface, prog.Byte()).impl, prog.Byte()})) + case abi.Pointer: + if lvl > 0 { + b.InlineCall(b.Pkg.rtFunc("SetDirectIface"), vexpr) + } } b.Store(expr, vexpr) if pub { diff --git a/ssa/interface.go b/ssa/interface.go index e0cb95ee..0519742d 100644 --- a/ssa/interface.go +++ b/ssa/interface.go @@ -126,16 +126,10 @@ func (b Builder) MakeInterface(tinter Type, x Expr) (ret Expr) { default: panic("todo") } - // abi.Type.Kind_ |= abi.KindDirectIface - pkind := b.FieldAddr(tabi, 6) - b.Store(pkind, b.BinOp(token.OR, b.Load(pkind), Expr{prog.IntVal(kindDirectIface, prog.Byte()).impl, prog.Byte()})) data := llvm.CreateIntToPtr(b.impl, u, prog.tyVoidPtr()) return Expr{b.unsafeInterface(rawIntf, tabi, data), tinter} } -// abi.KindDirectIface -const kindDirectIface = 1 << 5 - func (b Builder) valFromData(typ Type, data llvm.Value) Expr { prog := b.Prog kind, real, lvl := abi.DataKindOf(typ.raw.Type, 0, prog.is32Bits)