From 76c1800a53c87053068f7c7b69482c61b1dc6067 Mon Sep 17 00:00:00 2001 From: xushiwei Date: Fri, 31 May 2024 08:12:27 +0800 Subject: [PATCH] abiTypes: abiTypeInit fix --- cl/_testdata/print/out.ll | 247 +++++++++++--- cl/_testdata/vargs/out.ll | 25 +- cl/_testgo/eface/in.go | 5 +- cl/_testgo/eface/out.ll | 483 ++++++++++++++++---------- cl/_testgo/errors/out.ll | 442 +++++++++++------------- cl/_testgo/strucintf/out.ll | 201 +++++------ cl/_testgo/struczero/out.ll | 547 ++++++++++++++++-------------- cl/_testrt/any/out.ll | 48 ++- cl/_testrt/builtin/out.ll | 19 +- cl/_testrt/cast/out.ll | 43 ++- cl/_testrt/panic/out.ll | 19 +- internal/abi/llgo_autogen.lla | Bin 3353 -> 3560 bytes internal/runtime/llgo_autogen.lla | Bin 13557 -> 12615 bytes internal/runtime/z_face.go | 6 - ssa/abitype.go | 18 +- ssa/interface.go | 1 - 16 files changed, 1238 insertions(+), 866 deletions(-) diff --git a/cl/_testdata/print/out.ll b/cl/_testdata/print/out.ll index 44457e288..9f89186a3 100644 --- a/cl/_testdata/print/out.ll +++ b/cl/_testdata/print/out.ll @@ -13,9 +13,24 @@ source_filename = "main" @__llgo_argc = global ptr null @__llgo_argv = global ptr null @1 = private unnamed_addr constant [5 x i8] c"llgo\00", align 1 +@_llgo_float32 = linkonce global ptr null +@_llgo_float64 = linkonce global ptr null @2 = private unnamed_addr constant [11 x i8] c"check bool\00", align 1 +@_llgo_string = linkonce global ptr null +@_llgo_bool = linkonce global ptr null @3 = private unnamed_addr constant [9 x i8] c"check &^\00", align 1 +@_llgo_int32 = linkonce global ptr null +@_llgo_int8 = linkonce global ptr null +@_llgo_int16 = linkonce global ptr null +@_llgo_int64 = linkonce global ptr null +@_llgo_int = linkonce global ptr null +@_llgo_uint8 = linkonce global ptr null +@_llgo_uint16 = linkonce global ptr null +@_llgo_uint32 = linkonce global ptr null +@_llgo_uint64 = linkonce global ptr null +@_llgo_uintptr = linkonce global ptr null @4 = private unnamed_addr constant [5 x i8] c"llgo\00", align 1 +@_llgo_uint = linkonce global ptr null @5 = private unnamed_addr constant [5 x i8] c"true\00", align 1 @6 = private unnamed_addr constant [6 x i8] c"false\00", align 1 @7 = private unnamed_addr constant [4 x i8] c"NaN\00", align 1 @@ -70,6 +85,7 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 store i1 true, ptr @"main.init$guard", align 1 + call void @"main.init$abi"() store i64 0, ptr @main.minhexdigits, align 4 br label %_llgo_2 @@ -103,7 +119,7 @@ _llgo_0: call void @main.printnl() call void @main.prinfsub(double 1.001000e+02) call void @main.printnl() - %6 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13) + %6 = load ptr, ptr @_llgo_float32, align 8 %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 @@ -112,7 +128,7 @@ _llgo_0: %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() - %11 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 14) + %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 @@ -132,7 +148,7 @@ _llgo_1: ; preds = %_llgo_3 %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %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 @@ -143,7 +159,7 @@ _llgo_1: ; preds = %_llgo_3 %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(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 %29, ptr %31, align 8 @@ -171,7 +187,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %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 @@ -182,7 +198,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(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 @@ -191,7 +207,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1) + %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 @@ -210,7 +226,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1) + %70 = load ptr, ptr @_llgo_bool, align 8 %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 @@ -219,7 +235,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(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 @@ -228,7 +244,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5) + %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 @@ -237,7 +253,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5) + %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 %88, ptr %90, align 8 @@ -246,7 +262,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %92 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %89, align 8 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5) + %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 @@ -255,7 +271,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3) + %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 @@ -264,7 +280,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 4) + %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 %106, ptr %108, align 8 @@ -273,7 +289,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %110 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %107, align 8 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5) + %112 = load ptr, ptr @_llgo_int32, align 8 %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 @@ -282,7 +298,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 6) + %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 @@ -291,7 +307,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %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 %124, ptr %126, align 8 @@ -300,7 +316,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %68, i64 10 - %130 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8) + %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 @@ -309,7 +325,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 9) + %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 @@ -318,7 +334,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 10) + %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 %142, ptr %144, align 8 @@ -327,7 +343,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %146 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %143, align 8 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 11) + %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 @@ -336,7 +352,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 12) + %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 @@ -351,7 +367,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1, %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %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 @@ -393,7 +409,7 @@ _llgo_0: define void @main.printany(%"github.com/goplus/llgo/internal/runtime.eface" %0) { _llgo_0: %1 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1) + %2 = load ptr, ptr @_llgo_bool, align 8 %3 = icmp eq ptr %1, %2 br i1 %3, label %_llgo_31, label %_llgo_32 @@ -406,7 +422,7 @@ _llgo_2: ; preds = %_llgo_33 _llgo_3: ; preds = %_llgo_33 %4 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %5 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %5 = load ptr, ptr @_llgo_int, align 8 %6 = icmp eq ptr %4, %5 br i1 %6, label %_llgo_34, label %_llgo_35 @@ -416,7 +432,7 @@ _llgo_4: ; preds = %_llgo_36 _llgo_5: ; preds = %_llgo_36 %7 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3) + %8 = load ptr, ptr @_llgo_int8, align 8 %9 = icmp eq ptr %7, %8 br i1 %9, label %_llgo_37, label %_llgo_38 @@ -427,7 +443,7 @@ _llgo_6: ; preds = %_llgo_39 _llgo_7: ; preds = %_llgo_39 %11 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %12 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 4) + %12 = load ptr, ptr @_llgo_int16, align 8 %13 = icmp eq ptr %11, %12 br i1 %13, label %_llgo_40, label %_llgo_41 @@ -438,7 +454,7 @@ _llgo_8: ; preds = %_llgo_42 _llgo_9: ; preds = %_llgo_42 %15 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %16 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5) + %16 = load ptr, ptr @_llgo_int32, align 8 %17 = icmp eq ptr %15, %16 br i1 %17, label %_llgo_43, label %_llgo_44 @@ -449,7 +465,7 @@ _llgo_10: ; preds = %_llgo_45 _llgo_11: ; preds = %_llgo_45 %19 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %20 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 6) + %20 = load ptr, ptr @_llgo_int64, align 8 %21 = icmp eq ptr %19, %20 br i1 %21, label %_llgo_46, label %_llgo_47 @@ -459,7 +475,7 @@ _llgo_12: ; preds = %_llgo_48 _llgo_13: ; preds = %_llgo_48 %22 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %23 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 7) + %23 = load ptr, ptr @_llgo_uint, align 8 %24 = icmp eq ptr %22, %23 br i1 %24, label %_llgo_49, label %_llgo_50 @@ -469,7 +485,7 @@ _llgo_14: ; preds = %_llgo_51 _llgo_15: ; preds = %_llgo_51 %25 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %26 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8) + %26 = load ptr, ptr @_llgo_uint8, align 8 %27 = icmp eq ptr %25, %26 br i1 %27, label %_llgo_52, label %_llgo_53 @@ -480,7 +496,7 @@ _llgo_16: ; preds = %_llgo_54 _llgo_17: ; preds = %_llgo_54 %29 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %30 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 9) + %30 = load ptr, ptr @_llgo_uint16, align 8 %31 = icmp eq ptr %29, %30 br i1 %31, label %_llgo_55, label %_llgo_56 @@ -491,7 +507,7 @@ _llgo_18: ; preds = %_llgo_57 _llgo_19: ; preds = %_llgo_57 %33 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %34 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 10) + %34 = load ptr, ptr @_llgo_uint32, align 8 %35 = icmp eq ptr %33, %34 br i1 %35, label %_llgo_58, label %_llgo_59 @@ -502,7 +518,7 @@ _llgo_20: ; preds = %_llgo_60 _llgo_21: ; preds = %_llgo_60 %37 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %38 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 11) + %38 = load ptr, ptr @_llgo_uint64, align 8 %39 = icmp eq ptr %37, %38 br i1 %39, label %_llgo_61, label %_llgo_62 @@ -512,7 +528,7 @@ _llgo_22: ; preds = %_llgo_63 _llgo_23: ; preds = %_llgo_63 %40 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %41 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 12) + %41 = load ptr, ptr @_llgo_uintptr, align 8 %42 = icmp eq ptr %40, %41 br i1 %42, label %_llgo_64, label %_llgo_65 @@ -522,7 +538,7 @@ _llgo_24: ; preds = %_llgo_66 _llgo_25: ; preds = %_llgo_66 %43 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %44 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13) + %44 = load ptr, ptr @_llgo_float32, align 8 %45 = icmp eq ptr %43, %44 br i1 %45, label %_llgo_67, label %_llgo_68 @@ -533,7 +549,7 @@ _llgo_26: ; preds = %_llgo_69 _llgo_27: ; preds = %_llgo_69 %47 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %48 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 14) + %48 = load ptr, ptr @_llgo_float64, align 8 %49 = icmp eq ptr %47, %48 br i1 %49, label %_llgo_70, label %_llgo_71 @@ -543,7 +559,7 @@ _llgo_28: ; preds = %_llgo_72 _llgo_29: ; preds = %_llgo_72 %50 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %51 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %51 = load ptr, ptr @_llgo_string, align 8 %52 = icmp eq ptr %50, %51 br i1 %52, label %_llgo_73, label %_llgo_74 @@ -1396,6 +1412,161 @@ declare i32 @printf(ptr, ...) declare void @"github.com/goplus/llgo/internal/runtime.init"() +define void @"main.init$abi"() { +_llgo_0: + %0 = load ptr, ptr @_llgo_float32, 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 13) + store ptr %2, ptr @_llgo_float32, align 8 + br label %_llgo_2 + +_llgo_2: ; preds = %_llgo_1, %_llgo_0 + %3 = load ptr, ptr @_llgo_float64, 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 14) + store ptr %5, ptr @_llgo_float64, align 8 + br label %_llgo_4 + +_llgo_4: ; preds = %_llgo_3, %_llgo_2 + %6 = load ptr, ptr @_llgo_string, align 8 + %7 = icmp eq ptr %6, null + br i1 %7, label %_llgo_5, label %_llgo_6 + +_llgo_5: ; preds = %_llgo_4 + %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + store ptr %8, ptr @_llgo_string, align 8 + br label %_llgo_6 + +_llgo_6: ; preds = %_llgo_5, %_llgo_4 + %9 = load ptr, ptr @_llgo_bool, align 8 + %10 = icmp eq ptr %9, null + br i1 %10, label %_llgo_7, label %_llgo_8 + +_llgo_7: ; preds = %_llgo_6 + %11 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1) + store ptr %11, ptr @_llgo_bool, align 8 + br label %_llgo_8 + +_llgo_8: ; preds = %_llgo_7, %_llgo_6 + %12 = load ptr, ptr @_llgo_int32, align 8 + %13 = icmp eq ptr %12, null + br i1 %13, label %_llgo_9, label %_llgo_10 + +_llgo_9: ; preds = %_llgo_8 + %14 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5) + store ptr %14, ptr @_llgo_int32, align 8 + br label %_llgo_10 + +_llgo_10: ; preds = %_llgo_9, %_llgo_8 + %15 = load ptr, ptr @_llgo_int8, align 8 + %16 = icmp eq ptr %15, null + br i1 %16, label %_llgo_11, label %_llgo_12 + +_llgo_11: ; preds = %_llgo_10 + %17 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3) + store ptr %17, ptr @_llgo_int8, align 8 + br label %_llgo_12 + +_llgo_12: ; preds = %_llgo_11, %_llgo_10 + %18 = load ptr, ptr @_llgo_int16, align 8 + %19 = icmp eq ptr %18, null + br i1 %19, label %_llgo_13, label %_llgo_14 + +_llgo_13: ; preds = %_llgo_12 + %20 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 4) + store ptr %20, ptr @_llgo_int16, align 8 + br label %_llgo_14 + +_llgo_14: ; preds = %_llgo_13, %_llgo_12 + %21 = load ptr, ptr @_llgo_int64, align 8 + %22 = icmp eq ptr %21, null + br i1 %22, label %_llgo_15, label %_llgo_16 + +_llgo_15: ; preds = %_llgo_14 + %23 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 6) + store ptr %23, ptr @_llgo_int64, align 8 + br label %_llgo_16 + +_llgo_16: ; preds = %_llgo_15, %_llgo_14 + %24 = load ptr, ptr @_llgo_int, align 8 + %25 = icmp eq ptr %24, null + br i1 %25, label %_llgo_17, label %_llgo_18 + +_llgo_17: ; preds = %_llgo_16 + %26 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + store ptr %26, ptr @_llgo_int, align 8 + br label %_llgo_18 + +_llgo_18: ; preds = %_llgo_17, %_llgo_16 + %27 = load ptr, ptr @_llgo_uint8, align 8 + %28 = icmp eq ptr %27, null + br i1 %28, label %_llgo_19, label %_llgo_20 + +_llgo_19: ; preds = %_llgo_18 + %29 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8) + store ptr %29, ptr @_llgo_uint8, align 8 + br label %_llgo_20 + +_llgo_20: ; preds = %_llgo_19, %_llgo_18 + %30 = load ptr, ptr @_llgo_uint16, align 8 + %31 = icmp eq ptr %30, null + br i1 %31, label %_llgo_21, label %_llgo_22 + +_llgo_21: ; preds = %_llgo_20 + %32 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 9) + store ptr %32, ptr @_llgo_uint16, align 8 + br label %_llgo_22 + +_llgo_22: ; preds = %_llgo_21, %_llgo_20 + %33 = load ptr, ptr @_llgo_uint32, align 8 + %34 = icmp eq ptr %33, null + br i1 %34, label %_llgo_23, label %_llgo_24 + +_llgo_23: ; preds = %_llgo_22 + %35 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 10) + store ptr %35, ptr @_llgo_uint32, align 8 + br label %_llgo_24 + +_llgo_24: ; preds = %_llgo_23, %_llgo_22 + %36 = load ptr, ptr @_llgo_uint64, align 8 + %37 = icmp eq ptr %36, null + br i1 %37, label %_llgo_25, label %_llgo_26 + +_llgo_25: ; preds = %_llgo_24 + %38 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 11) + store ptr %38, ptr @_llgo_uint64, align 8 + br label %_llgo_26 + +_llgo_26: ; preds = %_llgo_25, %_llgo_24 + %39 = load ptr, ptr @_llgo_uintptr, align 8 + %40 = icmp eq ptr %39, null + br i1 %40, label %_llgo_27, label %_llgo_28 + +_llgo_27: ; preds = %_llgo_26 + %41 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 12) + store ptr %41, ptr @_llgo_uintptr, align 8 + br label %_llgo_28 + +_llgo_28: ; preds = %_llgo_27, %_llgo_26 + %42 = load ptr, ptr @_llgo_uint, align 8 + %43 = icmp eq ptr %42, null + br i1 %43, label %_llgo_29, label %_llgo_30 + +_llgo_29: ; preds = %_llgo_28 + %44 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 7) + store ptr %44, ptr @_llgo_uint, align 8 + br label %_llgo_30 + +_llgo_30: ; preds = %_llgo_29, %_llgo_28 + ret void +} + declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) diff --git a/cl/_testdata/vargs/out.ll b/cl/_testdata/vargs/out.ll index 9d9d841e7..a687457b7 100644 --- a/cl/_testdata/vargs/out.ll +++ b/cl/_testdata/vargs/out.ll @@ -8,6 +8,7 @@ source_filename = "main" @"main.init$guard" = global ptr null @__llgo_argc = global ptr null @__llgo_argv = global ptr null +@_llgo_int = linkonce global ptr null @0 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 @1 = private unnamed_addr constant [22 x i8] c"type assertion failed\00", align 1 @@ -18,6 +19,7 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 store i1 true, ptr @"main.init$guard", align 1 + call void @"main.init$abi"() br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 @@ -32,7 +34,7 @@ _llgo_0: call void @main.init() %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %4 = load ptr, ptr @_llgo_int, align 8 %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 @@ -41,7 +43,7 @@ _llgo_0: %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %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 @@ -50,7 +52,7 @@ _llgo_0: %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(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 %16, ptr %18, align 8 @@ -88,7 +90,7 @@ _llgo_2: ; preds = %_llgo_1 %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %6, i64 %3 %8 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %7, align 8 %9 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %8, 0 - %10 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %10 = load ptr, ptr @_llgo_int, align 8 %11 = icmp eq ptr %9, %10 br i1 %11, label %_llgo_4, label %_llgo_5 @@ -116,6 +118,21 @@ declare void @"github.com/goplus/llgo/internal/runtime.init"() declare ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64) +define void @"main.init$abi"() { +_llgo_0: + %0 = load ptr, ptr @_llgo_int, 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 2) + store ptr %2, ptr @_llgo_int, align 8 + br label %_llgo_2 + +_llgo_2: ; preds = %_llgo_1, %_llgo_0 + ret void +} + declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) declare void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1) diff --git a/cl/_testgo/eface/in.go b/cl/_testgo/eface/in.go index 4f13ae5be..8b04a217a 100644 --- a/cl/_testgo/eface/in.go +++ b/cl/_testgo/eface/in.go @@ -45,8 +45,5 @@ func dump(v any) { func dumpTyp(t *abi.Type, sep string) { print(sep) - println(t.Kind(), t.Size_, t.PtrBytes, t.Hash, t.TFlag, t.Align_, t.Str_, t.PtrToThis_) - if t.Elem() != nil { - dumpTyp(t.Elem(), sep+"\t") - } + println(t.Kind(), t.Size_, t.PtrBytes, t.Hash, t.TFlag, t.Align_) } diff --git a/cl/_testgo/eface/out.ll b/cl/_testgo/eface/out.ll index ff8f5bc4a..e65c1abbc 100644 --- a/cl/_testgo/eface/out.ll +++ b/cl/_testgo/eface/out.ll @@ -10,22 +10,36 @@ source_filename = "main" @"main.init$guard" = global ptr null @0 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@1 = private unnamed_addr constant [2 x i8] c"\09\00", align 1 @__llgo_argc = global ptr null @__llgo_argv = global ptr null +@_llgo_bool = linkonce global ptr null +@_llgo_int = linkonce global ptr null +@_llgo_int8 = linkonce global ptr null +@_llgo_int16 = linkonce global ptr null +@_llgo_int32 = linkonce global ptr null +@_llgo_int64 = linkonce global ptr null +@_llgo_uint = linkonce global ptr null +@_llgo_uint8 = linkonce global ptr null +@_llgo_uint16 = linkonce global ptr null +@_llgo_uint32 = linkonce global ptr null +@_llgo_uint64 = linkonce global ptr null +@_llgo_uintptr = linkonce global ptr null +@_llgo_float32 = linkonce global ptr null +@_llgo_float64 = linkonce global ptr null @"[10]_llgo_int" = linkonce global ptr null @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null @"*_llgo_int" = linkonce global ptr null @"[]_llgo_int" = linkonce global ptr null -@2 = private unnamed_addr constant [6 x i8] c"hello\00", align 1 +@1 = private unnamed_addr constant [6 x i8] c"hello\00", align 1 +@_llgo_string = linkonce global ptr null @"main.struct$RKbUG45GE4henGMAdmt0Rju0JptyR8NsX7IZLsOI0OM" = global ptr null -@3 = private unnamed_addr constant [2 x i8] c"x\00", align 1 -@4 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@5 = private unnamed_addr constant [2 x i8] c"y\00", align 1 -@6 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@7 = private unnamed_addr constant [2 x i8] c"z\00", align 1 -@8 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@9 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@2 = private unnamed_addr constant [2 x i8] c"x\00", align 1 +@3 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@4 = private unnamed_addr constant [2 x i8] c"y\00", align 1 +@5 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@6 = private unnamed_addr constant [2 x i8] c"z\00", align 1 +@7 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@8 = private unnamed_addr constant [5 x i8] c"main\00", align 1 define void @main.dump(%"github.com/goplus/llgo/internal/runtime.eface" %0) { _llgo_0: @@ -57,46 +71,21 @@ _llgo_0: %10 = load i8, ptr %9, align 1 %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %0, i32 0, i32 4 %12 = load i8, ptr %11, align 1 - %13 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %0, i32 0, i32 9 - %14 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %13, align 8 - %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Type", ptr %0, i32 0, i32 10 - %16 = load ptr, ptr %15, align 8 call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %2) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %4) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %6) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %17 = zext i32 %8 to i64 - call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %17) + %13 = zext i32 %8 to i64 + call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %13) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %18 = zext i8 %10 to i64 - call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %18) + %14 = zext i8 %10 to i64 + call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %14) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %19 = zext i8 %12 to i64 - call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %19) - 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" %14) - call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr %16) + %15 = zext i8 %12 to i64 + call void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64 %15) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) - %20 = call ptr @"(*github.com/goplus/llgo/internal/abi.Type).Elem"(ptr %0) - %21 = icmp ne ptr %20, null - br i1 %21, label %_llgo_1, label %_llgo_2 - -_llgo_1: ; preds = %_llgo_0 - %22 = call ptr @"(*github.com/goplus/llgo/internal/abi.Type).Elem"(ptr %0) - %23 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %24 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %23, i32 0, i32 0 - store ptr @1, ptr %24, align 8 - %25 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %23, i32 0, i32 1 - store i64 1, ptr %25, align 4 - %26 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %23, align 8 - %27 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.StringCat"(%"github.com/goplus/llgo/internal/runtime.String" %1, %"github.com/goplus/llgo/internal/runtime.String" %26) - call void @main.dumpTyp(ptr %22, %"github.com/goplus/llgo/internal/runtime.String" %27) - br label %_llgo_2 - -_llgo_2: ; preds = %_llgo_1, %_llgo_0 ret void } @@ -121,7 +110,7 @@ _llgo_0: store ptr %1, ptr @__llgo_argv, align 8 call void @"github.com/goplus/llgo/internal/runtime.init"() call void @main.init() - %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1) + %2 = load ptr, ptr @_llgo_bool, align 8 %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 @@ -129,7 +118,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %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 @@ -137,7 +126,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3) + %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 @@ -145,7 +134,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 4) + %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 @@ -153,7 +142,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5) + %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 @@ -161,7 +150,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 6) + %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 @@ -169,7 +158,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 7) + %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 @@ -177,7 +166,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8) + %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 %37, ptr %39, align 8 @@ -185,7 +174,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 9) + %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 @@ -193,7 +182,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 10) + %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 @@ -201,7 +190,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 11) + %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 @@ -209,7 +198,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 12) + %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 @@ -217,7 +206,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13) + %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 @@ -225,7 +214,7 @@ _llgo_0: 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 14) + %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 @@ -280,11 +269,11 @@ _llgo_0: 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 @2, ptr %101, align 8 + store ptr @1, 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %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 @@ -317,158 +306,302 @@ declare void @"github.com/goplus/llgo/internal/runtime.PrintUint"(i64) declare void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8) -declare void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr) - -declare ptr @"(*github.com/goplus/llgo/internal/abi.Type).Elem"(ptr) - -declare %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.StringCat"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String") - declare void @"github.com/goplus/llgo/internal/abi.init"() declare void @"github.com/goplus/llgo/internal/runtime.init"() -declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) - -declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) - -define void @"main.main$1"() { -_llgo_0: - ret void -} - define void @"main.init$abi"() { _llgo_0: - %0 = load ptr, ptr @"[10]_llgo_int", align 8 + %0 = load ptr, ptr @_llgo_bool, 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 2) - %3 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 10, ptr %2) - store ptr %3, ptr @"[10]_llgo_int", align 8 + %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1) + store ptr %2, ptr @_llgo_bool, align 8 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 - %4 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 - %5 = icmp eq ptr %4, null - br i1 %5, label %_llgo_3, label %_llgo_4 + %3 = load ptr, ptr @_llgo_int, align 8 + %4 = icmp eq ptr %3, null + br i1 %4, label %_llgo_3, label %_llgo_4 _llgo_3: ; preds = %_llgo_2 - %6 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %7 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %8 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %7, i32 0, i32 0 - store ptr %6, ptr %8, align 8 - %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %7, i32 0, i32 1 - store i64 0, ptr %9, align 4 - %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %7, i32 0, i32 2 - store i64 0, ptr %10, align 4 - %11 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %7, 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.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %11, %"github.com/goplus/llgo/internal/runtime.Slice" %17, i1 false) - store ptr %18, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %5 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + store ptr %5, ptr @_llgo_int, align 8 br label %_llgo_4 _llgo_4: ; preds = %_llgo_3, %_llgo_2 - %19 = load ptr, ptr @"*_llgo_int", align 8 - %20 = icmp eq ptr %19, null - br i1 %20, label %_llgo_5, label %_llgo_6 + %6 = load ptr, ptr @_llgo_int8, align 8 + %7 = icmp eq ptr %6, null + br i1 %7, label %_llgo_5, label %_llgo_6 _llgo_5: ; preds = %_llgo_4 - %21 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) - %22 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %21) - store ptr %22, ptr @"*_llgo_int", align 8 + %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3) + store ptr %8, ptr @_llgo_int8, align 8 br label %_llgo_6 _llgo_6: ; preds = %_llgo_5, %_llgo_4 - %23 = load ptr, ptr @"[]_llgo_int", align 8 - %24 = icmp eq ptr %23, null - br i1 %24, label %_llgo_7, label %_llgo_8 + %9 = load ptr, ptr @_llgo_int16, align 8 + %10 = icmp eq ptr %9, null + br i1 %10, label %_llgo_7, label %_llgo_8 _llgo_7: ; preds = %_llgo_6 - %25 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) - %26 = call ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr %25) - store ptr %26, ptr @"[]_llgo_int", align 8 + %11 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 4) + store ptr %11, ptr @_llgo_int16, align 8 br label %_llgo_8 _llgo_8: ; preds = %_llgo_7, %_llgo_6 - %27 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %27, i32 0, i32 0 - store ptr @3, ptr %28, align 8 - %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %27, i32 0, i32 1 - store i64 1, ptr %29, align 4 - %30 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %27, align 8 - %31 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3) - %32 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %32, i32 0, i32 0 - store ptr @4, ptr %33, align 8 - %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %32, i32 0, i32 1 - store i64 0, ptr %34, align 4 - %35 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %32, align 8 - %36 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %30, ptr %31, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %35, i1 false) - %37 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %37, i32 0, i32 0 - store ptr @5, ptr %38, align 8 - %39 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %37, i32 0, i32 1 - store i64 1, ptr %39, align 4 - %40 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %37, align 8 - %41 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) - %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 @6, ptr %43, align 8 - %44 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %42, i32 0, i32 1 - store i64 0, ptr %44, align 4 - %45 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %42, align 8 - %46 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %40, ptr %41, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %45, i1 false) - %47 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %47, i32 0, i32 0 - store ptr @7, ptr %48, align 8 - %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %47, i32 0, i32 1 - store i64 1, ptr %49, align 4 - %50 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %47, align 8 - %51 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) - %52 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %53 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %52, i32 0, i32 0 - store ptr @8, ptr %53, align 8 - %54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %52, i32 0, i32 1 - store i64 0, ptr %54, align 4 - %55 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %52, align 8 - %56 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %50, ptr %51, i64 16, %"github.com/goplus/llgo/internal/runtime.String" %55, i1 false) - %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 @9, ptr %58, align 8 - %59 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %57, i32 0, i32 1 - store i64 4, ptr %59, align 4 - %60 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %57, align 8 - %61 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 168) - %62 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %61, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %36, ptr %62, align 8 - %63 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %61, i64 1 - store %"github.com/goplus/llgo/internal/abi.StructField" %46, ptr %63, align 8 - %64 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %61, i64 2 - store %"github.com/goplus/llgo/internal/abi.StructField" %56, ptr %64, align 8 - %65 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %66 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %65, i32 0, i32 0 - store ptr %61, ptr %66, align 8 - %67 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %65, i32 0, i32 1 - store i64 3, ptr %67, align 4 - %68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %65, i32 0, i32 2 - store i64 3, ptr %68, align 4 - %69 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %65, align 8 - %70 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %60, i64 24, %"github.com/goplus/llgo/internal/runtime.Slice" %69) - store ptr %70, ptr @"main.struct$RKbUG45GE4henGMAdmt0Rju0JptyR8NsX7IZLsOI0OM", align 8 + %12 = load ptr, ptr @_llgo_int32, align 8 + %13 = icmp eq ptr %12, null + br i1 %13, label %_llgo_9, label %_llgo_10 + +_llgo_9: ; preds = %_llgo_8 + %14 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5) + store ptr %14, ptr @_llgo_int32, align 8 + br label %_llgo_10 + +_llgo_10: ; preds = %_llgo_9, %_llgo_8 + %15 = load ptr, ptr @_llgo_int64, align 8 + %16 = icmp eq ptr %15, null + br i1 %16, label %_llgo_11, label %_llgo_12 + +_llgo_11: ; preds = %_llgo_10 + %17 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 6) + store ptr %17, ptr @_llgo_int64, align 8 + br label %_llgo_12 + +_llgo_12: ; preds = %_llgo_11, %_llgo_10 + %18 = load ptr, ptr @_llgo_uint, align 8 + %19 = icmp eq ptr %18, null + br i1 %19, label %_llgo_13, label %_llgo_14 + +_llgo_13: ; preds = %_llgo_12 + %20 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 7) + store ptr %20, ptr @_llgo_uint, align 8 + br label %_llgo_14 + +_llgo_14: ; preds = %_llgo_13, %_llgo_12 + %21 = load ptr, ptr @_llgo_uint8, align 8 + %22 = icmp eq ptr %21, null + br i1 %22, label %_llgo_15, label %_llgo_16 + +_llgo_15: ; preds = %_llgo_14 + %23 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8) + store ptr %23, ptr @_llgo_uint8, align 8 + br label %_llgo_16 + +_llgo_16: ; preds = %_llgo_15, %_llgo_14 + %24 = load ptr, ptr @_llgo_uint16, align 8 + %25 = icmp eq ptr %24, null + br i1 %25, label %_llgo_17, label %_llgo_18 + +_llgo_17: ; preds = %_llgo_16 + %26 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 9) + store ptr %26, ptr @_llgo_uint16, align 8 + br label %_llgo_18 + +_llgo_18: ; preds = %_llgo_17, %_llgo_16 + %27 = load ptr, ptr @_llgo_uint32, align 8 + %28 = icmp eq ptr %27, null + br i1 %28, label %_llgo_19, label %_llgo_20 + +_llgo_19: ; preds = %_llgo_18 + %29 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 10) + store ptr %29, ptr @_llgo_uint32, align 8 + br label %_llgo_20 + +_llgo_20: ; preds = %_llgo_19, %_llgo_18 + %30 = load ptr, ptr @_llgo_uint64, align 8 + %31 = icmp eq ptr %30, null + br i1 %31, label %_llgo_21, label %_llgo_22 + +_llgo_21: ; preds = %_llgo_20 + %32 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 11) + store ptr %32, ptr @_llgo_uint64, align 8 + br label %_llgo_22 + +_llgo_22: ; preds = %_llgo_21, %_llgo_20 + %33 = load ptr, ptr @_llgo_uintptr, align 8 + %34 = icmp eq ptr %33, null + br i1 %34, label %_llgo_23, label %_llgo_24 + +_llgo_23: ; preds = %_llgo_22 + %35 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 12) + store ptr %35, ptr @_llgo_uintptr, align 8 + br label %_llgo_24 + +_llgo_24: ; preds = %_llgo_23, %_llgo_22 + %36 = load ptr, ptr @_llgo_float32, align 8 + %37 = icmp eq ptr %36, null + br i1 %37, label %_llgo_25, label %_llgo_26 + +_llgo_25: ; preds = %_llgo_24 + %38 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13) + store ptr %38, ptr @_llgo_float32, align 8 + br label %_llgo_26 + +_llgo_26: ; preds = %_llgo_25, %_llgo_24 + %39 = load ptr, ptr @_llgo_float64, align 8 + %40 = icmp eq ptr %39, null + br i1 %40, label %_llgo_27, label %_llgo_28 + +_llgo_27: ; preds = %_llgo_26 + %41 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 14) + store ptr %41, ptr @_llgo_float64, align 8 + br label %_llgo_28 + +_llgo_28: ; preds = %_llgo_27, %_llgo_26 + %42 = load ptr, ptr @_llgo_int, align 8 + %43 = load ptr, ptr @"[10]_llgo_int", align 8 + %44 = icmp eq ptr %43, null + br i1 %44, label %_llgo_29, label %_llgo_30 + +_llgo_29: ; preds = %_llgo_28 + %45 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 10, ptr %42) + store ptr %45, ptr @"[10]_llgo_int", align 8 + br label %_llgo_30 + +_llgo_30: ; preds = %_llgo_29, %_llgo_28 + %46 = load ptr, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + %47 = icmp eq ptr %46, null + br i1 %47, label %_llgo_31, label %_llgo_32 + +_llgo_31: ; preds = %_llgo_30 + %48 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + %49 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %50 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %49, i32 0, i32 0 + store ptr %48, ptr %50, align 8 + %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %49, i32 0, i32 1 + store i64 0, ptr %51, align 4 + %52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %49, i32 0, i32 2 + store i64 0, ptr %52, align 4 + %53 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %49, align 8 + %54 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + %55 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %55, i32 0, i32 0 + store ptr %54, ptr %56, align 8 + %57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %55, i32 0, i32 1 + store i64 0, ptr %57, align 4 + %58 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %55, i32 0, i32 2 + store i64 0, ptr %58, align 4 + %59 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %55, align 8 + %60 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %53, %"github.com/goplus/llgo/internal/runtime.Slice" %59, i1 false) + store ptr %60, ptr @"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac", align 8 + br label %_llgo_32 + +_llgo_32: ; preds = %_llgo_31, %_llgo_30 + %61 = load ptr, ptr @_llgo_int, align 8 + %62 = load ptr, ptr @"*_llgo_int", align 8 + %63 = icmp eq ptr %62, null + br i1 %63, label %_llgo_33, label %_llgo_34 + +_llgo_33: ; preds = %_llgo_32 + %64 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %61) + store ptr %64, ptr @"*_llgo_int", align 8 + br label %_llgo_34 + +_llgo_34: ; preds = %_llgo_33, %_llgo_32 + %65 = load ptr, ptr @_llgo_int, align 8 + %66 = load ptr, ptr @"[]_llgo_int", align 8 + %67 = icmp eq ptr %66, null + br i1 %67, label %_llgo_35, label %_llgo_36 + +_llgo_35: ; preds = %_llgo_34 + %68 = call ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr %65) + store ptr %68, ptr @"[]_llgo_int", align 8 + br label %_llgo_36 + +_llgo_36: ; preds = %_llgo_35, %_llgo_34 + %69 = load ptr, ptr @_llgo_string, align 8 + %70 = icmp eq ptr %69, null + br i1 %70, label %_llgo_37, label %_llgo_38 + +_llgo_37: ; preds = %_llgo_36 + %71 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + store ptr %71, ptr @_llgo_string, align 8 + br label %_llgo_38 + +_llgo_38: ; preds = %_llgo_37, %_llgo_36 + %72 = load ptr, ptr @_llgo_int8, align 8 + %73 = load ptr, ptr @_llgo_int, align 8 + %74 = load ptr, ptr @_llgo_int, align 8 + %75 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %76 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %75, i32 0, i32 0 + store ptr @2, ptr %76, align 8 + %77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %75, i32 0, i32 1 + store i64 1, ptr %77, align 4 + %78 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %75, align 8 + %79 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %80 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %79, i32 0, i32 0 + store ptr @3, ptr %80, align 8 + %81 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %79, i32 0, i32 1 + store i64 0, ptr %81, align 4 + %82 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %79, align 8 + %83 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %78, ptr %72, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %82, i1 false) + %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 @4, ptr %85, align 8 + %86 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %84, i32 0, i32 1 + store i64 1, 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 @5, 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 %73, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %91, i1 false) + %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 @6, ptr %94, align 8 + %95 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %93, i32 0, i32 1 + store i64 1, ptr %95, align 4 + %96 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %93, align 8 + %97 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %98 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %97, i32 0, i32 0 + store ptr @7, ptr %98, align 8 + %99 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %97, i32 0, i32 1 + store i64 0, ptr %99, align 4 + %100 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %97, align 8 + %101 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %96, ptr %74, i64 16, %"github.com/goplus/llgo/internal/runtime.String" %100, i1 false) + %102 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %103 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %102, i32 0, i32 0 + store ptr @8, ptr %103, align 8 + %104 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %102, i32 0, i32 1 + store i64 4, ptr %104, align 4 + %105 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %102, align 8 + %106 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 168) + %107 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %106, i64 0 + store %"github.com/goplus/llgo/internal/abi.StructField" %83, ptr %107, align 8 + %108 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %106, i64 1 + store %"github.com/goplus/llgo/internal/abi.StructField" %92, ptr %108, align 8 + %109 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %106, i64 2 + store %"github.com/goplus/llgo/internal/abi.StructField" %101, ptr %109, align 8 + %110 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %111 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %110, i32 0, i32 0 + store ptr %106, ptr %111, align 8 + %112 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %110, i32 0, i32 1 + store i64 3, ptr %112, align 4 + %113 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %110, i32 0, i32 2 + store i64 3, ptr %113, align 4 + %114 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %110, align 8 + %115 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %105, i64 24, %"github.com/goplus/llgo/internal/runtime.Slice" %114) + store ptr %115, ptr @"main.struct$RKbUG45GE4henGMAdmt0Rju0JptyR8NsX7IZLsOI0OM", align 8 ret void } +declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) + declare ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64, ptr) +declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) + +define void @"main.main$1"() { +_llgo_0: + ret void +} + 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) diff --git a/cl/_testgo/errors/out.ll b/cl/_testgo/errors/out.ll index 40e32fdef..f544af601 100644 --- a/cl/_testgo/errors/out.ll +++ b/cl/_testgo/errors/out.ll @@ -4,30 +4,30 @@ 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.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 } %"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 ptr null @"*_llgo_main.errorString" = global ptr null -@"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@0 = private unnamed_addr constant [9 x i8] c"an error\00", align 1 -@1 = private unnamed_addr constant [9 x i8] c"Imethod:\00", align 1 @_llgo_main.errorString = global ptr null -@2 = private unnamed_addr constant [6 x i8] c"Error\00", align 1 -@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null -@3 = private unnamed_addr constant [5 x i8] c"main\00", align 1 @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null -@4 = private unnamed_addr constant [6 x i8] c"Error\00", align 1 -@"_llgo_func$8LHAAczeMU-_MsqDJ4-62jHfhzpiOiRnFkBoaL3mfxg" = linkonce global ptr null -@5 = private unnamed_addr constant [5 x i8] c"main\00", align 1 -@6 = private unnamed_addr constant [17 x i8] c"main.errorString\00", align 1 -@7 = private unnamed_addr constant [2 x i8] c"s\00", align 1 +@_llgo_string = linkonce global ptr null +@0 = private unnamed_addr constant [2 x i8] c"s\00", align 1 +@1 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@2 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@3 = private unnamed_addr constant [6 x i8] c"Error\00", align 1 +@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null +@4 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@5 = private unnamed_addr constant [17 x i8] c"main.errorString\00", align 1 +@"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null +@6 = private unnamed_addr constant [6 x i8] c"Error\00", align 1 +@7 = private unnamed_addr constant [5 x i8] c"main\00", align 1 @8 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@9 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@__llgo_argc = global ptr null +@__llgo_argv = global ptr null +@9 = private unnamed_addr constant [9 x i8] c"an error\00", align 1 define %"github.com/goplus/llgo/internal/runtime.iface" @main.New(%"github.com/goplus/llgo/internal/runtime.String" %0) { _llgo_0: @@ -75,7 +75,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 @0, ptr %3, align 8 + store ptr @9, 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 @@ -92,260 +92,212 @@ _llgo_0: %13 = getelementptr inbounds { ptr, ptr }, ptr %11, i32 0, i32 1 store ptr %10, ptr %13, align 8 %14 = load { ptr, ptr }, ptr %11, align 8 - %15 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %15, i32 0, i32 0 - store ptr @1, ptr %16, align 8 - %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %15, i32 0, i32 1 - store i64 8, ptr %17, align 4 - %18 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %15, align 8 - call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %18) - call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr %7) - call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - %19 = extractvalue { ptr, ptr } %14, 0 - call void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr %19) - call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 10) - call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) - call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 0) - call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) - %20 = extractvalue { ptr, ptr } %14, 1 - %21 = extractvalue { ptr, ptr } %14, 0 - %22 = call %"github.com/goplus/llgo/internal/runtime.String" %21(ptr %20) - call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %22) + %15 = extractvalue { ptr, ptr } %14, 1 + %16 = extractvalue { ptr, ptr } %14, 0 + %17 = call %"github.com/goplus/llgo/internal/runtime.String" %16(ptr %15) + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %17) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) ret i32 0 } declare ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64) -declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr) - -declare void @"github.com/goplus/llgo/internal/runtime.init"() - -declare void @"github.com/goplus/llgo/internal/runtime.PrintIface"(%"github.com/goplus/llgo/internal/runtime.iface") - -declare void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8) - -declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String") - -declare void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr) - -declare void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64) - define void @"main.init$abi"() { _llgo_0: - call void @"main.init$abi2"() - %0 = load ptr, ptr @_llgo_main.errorString, align 8 - %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_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 - %3 = icmp eq ptr %2, null - br i1 %3, label %_llgo_1, label %_llgo_2 + %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 _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 @2, ptr %5, align 8 - %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 - store i64 5, ptr %6, align 4 - %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %9 = alloca %"github.com/goplus/llgo/internal/abi.Imethod", align 8 - %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %9, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %10, align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Imethod", ptr %9, i32 0, i32 1 - store ptr %8, ptr %11, align 8 - %12 = load %"github.com/goplus/llgo/internal/abi.Imethod", ptr %9, align 8 - %13 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 24) - %14 = getelementptr %"github.com/goplus/llgo/internal/abi.Imethod", ptr %13, i64 0 - store %"github.com/goplus/llgo/internal/abi.Imethod" %12, ptr %14, align 8 - %15 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %15, i32 0, i32 0 - store ptr %13, ptr %16, align 8 - %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %15, i32 0, i32 1 - store i64 1, ptr %17, align 4 - %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %15, i32 0, i32 2 - store i64 1, ptr %18, align 4 - %19 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %15, align 8 - %20 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %20, i32 0, i32 0 - store ptr @3, 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" %23, %"github.com/goplus/llgo/internal/runtime.Slice" %19) - store ptr %24, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 + %3 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + store ptr %3, ptr @_llgo_string, align 8 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 + %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 @1, 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 @2, 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 @3, ptr %28, align 8 + %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %27, i32 0, i32 1 + store i64 5, ptr %29, align 4 + %30 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %27, align 8 + %31 = load ptr, ptr @_llgo_string, align 8 + %32 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + %33 = icmp eq ptr %32, null + br i1 %33, label %_llgo_3, label %_llgo_4 + +_llgo_3: ; preds = %_llgo_2 + %34 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) + %35 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 0 + store ptr %34, ptr %36, align 8 + %37 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 1 + store i64 0, ptr %37, align 4 + %38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, i32 0, i32 2 + store i64 0, ptr %38, align 4 + %39 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %35, align 8 + %40 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) + %41 = getelementptr ptr, ptr %40, i64 0 + store ptr %31, ptr %41, align 8 + %42 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, i32 0, i32 0 + store ptr %40, ptr %43, align 8 + %44 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, i32 0, i32 1 + store i64 1, ptr %44, align 4 + %45 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, i32 0, i32 2 + store i64 1, ptr %45, align 4 + %46 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %42, align 8 + %47 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %39, %"github.com/goplus/llgo/internal/runtime.Slice" %46, i1 false) + store ptr %47, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 + br label %_llgo_4 + +_llgo_4: ; preds = %_llgo_3, %_llgo_2 + %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 @4, 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 @5, ptr %67, align 8 + %68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 1 + store i64 16, 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 + +_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 @6, 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 @7, 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 @8, 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 + 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.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64, i64, i64) -declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) +declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) -define void @"main.init$abi2"() { -_llgo_0: - call void @"main.init$abi3"() - %0 = load ptr, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8 - %1 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %2 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %1, i32 0, i32 0 - store ptr @4, ptr %2, align 8 - %3 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %1, i32 0, i32 1 - store i64 5, ptr %3, align 4 - %4 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %1, align 8 - %5 = load ptr, ptr @"_llgo_func$8LHAAczeMU-_MsqDJ4-62jHfhzpiOiRnFkBoaL3mfxg", align 8 - %6 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %6, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %4, ptr %7, align 8 - %8 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %6, i32 0, i32 1 - store ptr %5, ptr %8, align 8 - %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %6, i32 0, i32 2 - store ptr @"(*main.errorString).Error", ptr %9, align 8 - %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %6, i32 0, i32 3 - store ptr @"(*main.errorString).Error", ptr %10, align 8 - %11 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %6, align 8 - %12 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) - %13 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %12, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %11, ptr %13, align 8 - %14 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %14, i32 0, i32 0 - store ptr %12, ptr %15, align 8 - %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %14, i32 0, i32 1 - store i64 1, ptr %16, align 4 - %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %14, i32 0, i32 2 - store i64 1, ptr %17, align 4 - %18 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %14, 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 @5, ptr %20, align 8 - %21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %19, i32 0, i32 1 - store i64 4, ptr %21, align 4 - %22 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %19, align 8 - %23 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %24 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %23, i32 0, i32 0 - store ptr @6, ptr %24, align 8 - %25 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %23, i32 0, i32 1 - store i64 16, ptr %25, align 4 - %26 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %23, align 8 - %27 = call ptr @"github.com/goplus/llgo/internal/runtime.Named"(%"github.com/goplus/llgo/internal/runtime.String" %22, %"github.com/goplus/llgo/internal/runtime.String" %26, ptr %0, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %18) - store ptr %27, ptr @_llgo_main.errorString, align 8 - %28 = load ptr, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - %29 = icmp eq ptr %28, null - br i1 %29, label %_llgo_1, label %_llgo_2 +declare ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String", i64, %"github.com/goplus/llgo/internal/runtime.Slice") -_llgo_1: ; preds = %_llgo_0 - %30 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %31 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %31, i32 0, i32 0 - store ptr %30, ptr %32, align 8 - %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %31, i32 0, i32 1 - store i64 0, ptr %33, align 4 - %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %31, i32 0, i32 2 - store i64 0, ptr %34, align 4 - %35 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %31, align 8 - %36 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) - %37 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %38 = getelementptr ptr, ptr %37, i64 0 - store ptr %36, ptr %38, align 8 - %39 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %40 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %39, i32 0, i32 0 - store ptr %37, ptr %40, align 8 - %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %39, i32 0, i32 1 - store i64 1, ptr %41, align 4 - %42 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %39, i32 0, i32 2 - store i64 1, ptr %42, align 4 - %43 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %39, align 8 - %44 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %35, %"github.com/goplus/llgo/internal/runtime.Slice" %43, i1 false) - store ptr %44, ptr @"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to", align 8 - br label %_llgo_2 +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) -_llgo_2: ; preds = %_llgo_1, %_llgo_0 - ret void -} +declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) -declare ptr @"github.com/goplus/llgo/internal/runtime.Named"(%"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 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.Basic"(i64) +declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) -define void @"main.init$abi3"() { -_llgo_0: - %0 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %1 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %0, i32 0, i32 0 - store ptr @7, ptr %1, align 8 - %2 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %0, i32 0, i32 1 - store i64 1, ptr %2, align 4 - %3 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %0, align 8 - %4 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) - %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 @8, ptr %6, align 8 - %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %5, i32 0, i32 1 - store i64 0, ptr %7, align 4 - %8 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %5, align 8 - %9 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %3, ptr %4, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %8, i1 false) - %10 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %10, i32 0, i32 0 - store ptr @9, ptr %11, align 8 - %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %10, i32 0, i32 1 - store i64 4, ptr %12, align 4 - %13 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %10, align 8 - %14 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) - %15 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %14, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %9, 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.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %13, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %20) - store ptr %21, ptr @"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ", align 8 - %22 = load ptr, ptr @"_llgo_func$8LHAAczeMU-_MsqDJ4-62jHfhzpiOiRnFkBoaL3mfxg", align 8 - %23 = icmp eq ptr %22, null - br i1 %23, label %_llgo_1, label %_llgo_2 +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") -_llgo_1: ; preds = %_llgo_0 - %24 = load ptr, ptr @"*_llgo_main.errorString", align 8 - %25 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %26 = getelementptr ptr, ptr %25, i64 0 - store ptr %24, ptr %26, align 8 - %27 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %27, i32 0, i32 0 - store ptr %25, ptr %28, align 8 - %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %27, i32 0, i32 1 - store i64 1, ptr %29, align 4 - %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %27, i32 0, i32 2 - store i64 1, ptr %30, align 4 - %31 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %27, align 8 - %32 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) - %33 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %34 = getelementptr ptr, ptr %33, i64 0 - store ptr %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %31, %"github.com/goplus/llgo/internal/runtime.Slice" %39, i1 false) - store ptr %40, ptr @"_llgo_func$8LHAAczeMU-_MsqDJ4-62jHfhzpiOiRnFkBoaL3mfxg", align 8 - br label %_llgo_2 +declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr) -_llgo_2: ; preds = %_llgo_1, %_llgo_0 - ret void -} +declare void @"github.com/goplus/llgo/internal/runtime.init"() -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 void @"github.com/goplus/llgo/internal/runtime.PrintIface"(%"github.com/goplus/llgo/internal/runtime.iface") -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 void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8) + +declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String") diff --git a/cl/_testgo/strucintf/out.ll b/cl/_testgo/strucintf/out.ll index 9e09848fe..f23f046d5 100644 --- a/cl/_testgo/strucintf/out.ll +++ b/cl/_testgo/strucintf/out.ll @@ -8,18 +8,19 @@ source_filename = "main" @"main.init$guard" = global ptr null @"main.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88" = global ptr null +@_llgo_int = linkonce global ptr null +@0 = private unnamed_addr constant [2 x i8] c"v\00", align 1 +@1 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@2 = private unnamed_addr constant [5 x i8] c"main\00", align 1 @__llgo_argc = global ptr null @__llgo_argv = global ptr null @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk" = linkonce global ptr null -@0 = private unnamed_addr constant [12 x i8] c"Foo: not ok\00", align 1 -@1 = private unnamed_addr constant [12 x i8] c"Bar: not ok\00", align 1 -@2 = private unnamed_addr constant [10 x i8] c"F: not ok\00", align 1 -@3 = private unnamed_addr constant [2 x i8] c"v\00", align 1 +@3 = private unnamed_addr constant [2 x i8] c"V\00", align 1 @4 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @5 = private unnamed_addr constant [5 x i8] c"main\00", align 1 -@6 = private unnamed_addr constant [2 x i8] c"V\00", align 1 -@7 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@8 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@6 = private unnamed_addr constant [12 x i8] c"Foo: not ok\00", align 1 +@7 = private unnamed_addr constant [12 x i8] c"Bar: not ok\00", align 1 +@8 = private unnamed_addr constant [10 x i8] c"F: not ok\00", align 1 define %"github.com/goplus/llgo/internal/runtime.eface" @main.Foo() { _llgo_0: @@ -88,7 +89,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1 _llgo_3: ; preds = %_llgo_12 %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 @0, ptr %17, align 8 + store ptr @6, ptr %17, align 8 %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 1 store i64 11, ptr %18, align 4 %19 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %16, align 8 @@ -115,7 +116,7 @@ _llgo_5: ; preds = %_llgo_6, %_llgo_4 _llgo_6: ; preds = %_llgo_15 %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 @1, ptr %29, align 8 + store ptr @7, ptr %29, align 8 %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %28, i32 0, i32 1 store i64 11, ptr %30, align 4 %31 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %28, align 8 @@ -136,7 +137,7 @@ _llgo_8: ; preds = %_llgo_9, %_llgo_7 _llgo_9: ; preds = %_llgo_18 %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 @2, ptr %35, align 8 + store ptr @8, ptr %35, align 8 %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %34, i32 0, i32 1 store i64 9, ptr %36, align 4 %37 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %34, align 8 @@ -240,103 +241,113 @@ _llgo_18: ; preds = %_llgo_17, %_llgo_16 declare ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr, i64) -declare void @"github.com/goplus/llgo/cl/internal/foo.init"() - -declare void @"github.com/goplus/llgo/internal/runtime.init"() - -declare void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64) - -declare void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8) - -declare %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llgo/cl/internal/foo.Bar"() - -declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String") - -declare %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llgo/cl/internal/foo.F"() - define void @"main.init$abi"() { _llgo_0: - %0 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %1 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %0, i32 0, i32 0 - store ptr @3, ptr %1, align 8 - %2 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %0, i32 0, i32 1 - store i64 1, ptr %2, align 4 - %3 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %0, align 8 - %4 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) - %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 @4, ptr %6, align 8 - %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %5, i32 0, i32 1 - store i64 0, ptr %7, align 4 - %8 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %5, align 8 - %9 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %3, ptr %4, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %8, i1 false) - %10 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %10, i32 0, i32 0 - store ptr @5, ptr %11, align 8 - %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %10, i32 0, i32 1 - store i64 4, ptr %12, align 4 - %13 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %10, align 8 - %14 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) - %15 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %14, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %9, 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.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %13, i64 8, %"github.com/goplus/llgo/internal/runtime.Slice" %20) - store ptr %21, ptr @"main.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88", align 8 - %22 = load ptr, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", align 8 - %23 = icmp eq ptr %22, null - br i1 %23, label %_llgo_1, label %_llgo_2 + %0 = load ptr, ptr @_llgo_int, align 8 + %1 = icmp eq ptr %0, null + br i1 %1, label %_llgo_1, label %_llgo_2 _llgo_1: ; preds = %_llgo_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 @6, 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) - %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 @7, ptr %30, align 8 - %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %29, i32 0, i32 1 - store i64 0, ptr %31, align 4 - %32 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %29, align 8 - %33 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %27, ptr %28, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %32, i1 false) - %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 @8, ptr %35, align 8 - %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %34, i32 0, i32 1 - store i64 4, ptr %36, align 4 - %37 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %34, align 8 - %38 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) - %39 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %38, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %33, 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 %38, ptr %41, align 8 - %42 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %40, i32 0, i32 1 - store i64 1, ptr %42, align 4 - %43 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %40, i32 0, i32 2 - store i64 1, 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" %37, i64 8, %"github.com/goplus/llgo/internal/runtime.Slice" %44) - store ptr %45, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", align 8 + %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + store ptr %2, ptr @_llgo_int, align 8 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 + %3 = load ptr, ptr @_llgo_int, align 8 + %4 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 0 + store ptr @0, ptr %5, align 8 + %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 + store i64 1, ptr %6, align 4 + %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 + %8 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %8, i32 0, i32 0 + store ptr @1, ptr %9, align 8 + %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %8, i32 0, i32 1 + store i64 0, ptr %10, align 4 + %11 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %8, align 8 + %12 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %7, ptr %3, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %11, i1 false) + %13 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %13, i32 0, i32 0 + store ptr @2, ptr %14, align 8 + %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %13, i32 0, i32 1 + store i64 4, ptr %15, align 4 + %16 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %13, align 8 + %17 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) + %18 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %17, i64 0 + store %"github.com/goplus/llgo/internal/abi.StructField" %12, ptr %18, align 8 + %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 %17, ptr %20, align 8 + %21 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %19, i32 0, i32 1 + store i64 1, ptr %21, align 4 + %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %19, i32 0, i32 2 + store i64 1, 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.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %16, i64 8, %"github.com/goplus/llgo/internal/runtime.Slice" %23) + store ptr %24, ptr @"main.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88", align 8 + %25 = load ptr, ptr @_llgo_int, align 8 + %26 = load ptr, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", align 8 + %27 = icmp eq ptr %26, null + br i1 %27, label %_llgo_3, label %_llgo_4 + +_llgo_3: ; preds = %_llgo_2 + %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 @3, ptr %29, align 8 + %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %28, i32 0, i32 1 + store i64 1, ptr %30, align 4 + %31 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %28, align 8 + %32 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %32, i32 0, i32 0 + store ptr @4, ptr %33, align 8 + %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %32, i32 0, i32 1 + store i64 0, ptr %34, align 4 + %35 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %32, align 8 + %36 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %31, ptr %25, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %35, i1 false) + %37 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %37, i32 0, i32 0 + store ptr @5, ptr %38, align 8 + %39 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %37, i32 0, i32 1 + store i64 4, ptr %39, align 4 + %40 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %37, align 8 + %41 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) + %42 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %41, i64 0 + store %"github.com/goplus/llgo/internal/abi.StructField" %36, ptr %42, 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 %41, ptr %44, align 8 + %45 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %43, i32 0, i32 1 + store i64 1, ptr %45, align 4 + %46 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %43, i32 0, i32 2 + store i64 1, ptr %46, align 4 + %47 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %43, align 8 + %48 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %40, i64 8, %"github.com/goplus/llgo/internal/runtime.Slice" %47) + store ptr %48, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", align 8 + br label %_llgo_4 + +_llgo_4: ; preds = %_llgo_3, %_llgo_2 ret void } +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.Basic"(i64) - declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) + +declare void @"github.com/goplus/llgo/cl/internal/foo.init"() + +declare void @"github.com/goplus/llgo/internal/runtime.init"() + +declare void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64) + +declare void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8) + +declare %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llgo/cl/internal/foo.Bar"() + +declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String") + +declare %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llgo/cl/internal/foo.F"() diff --git a/cl/_testgo/struczero/out.ll b/cl/_testgo/struczero/out.ll index 2de205dae..f0cd306ba 100644 --- a/cl/_testgo/struczero/out.ll +++ b/cl/_testgo/struczero/out.ll @@ -5,35 +5,37 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } %main.bar = type { ptr, float } %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } -%"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } -%"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } %"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 } @"main.init$guard" = global ptr null @"_llgo_github.com/goplus/llgo/cl/internal/foo.Foo" = linkonce global ptr null -@_llgo_main.bar = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@0 = private unnamed_addr constant [7 x i8] c"notOk:\00", align 1 @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs" = global ptr null -@1 = private unnamed_addr constant [3 x i8] c"Pb\00", align 1 -@"_llgo_func$9WyRPk13jhLNuX5vkY3DFEfqvowhmGCLb2eJ8uGOVkM" = linkonce global ptr null -@2 = private unnamed_addr constant [39 x i8] c"github.com/goplus/llgo/cl/internal/foo\00", align 1 -@3 = private unnamed_addr constant [43 x i8] c"github.com/goplus/llgo/cl/internal/foo.Foo\00", align 1 -@"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo" = global ptr null -@4 = private unnamed_addr constant [5 x i8] c"main\00", align 1 -@5 = private unnamed_addr constant [9 x i8] c"main.bar\00", align 1 -@6 = private unnamed_addr constant [3 x i8] c"pb\00", align 1 @"*_llgo_byte" = linkonce global ptr null -@7 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@8 = private unnamed_addr constant [2 x i8] c"F\00", align 1 +@_llgo_byte = linkonce global ptr null +@_llgo_float32 = linkonce global ptr null +@0 = private unnamed_addr constant [3 x i8] c"pb\00", align 1 +@1 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@2 = private unnamed_addr constant [2 x i8] c"F\00", align 1 +@3 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@4 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@5 = private unnamed_addr constant [3 x i8] c"Pb\00", align 1 +@"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE" = linkonce global ptr null +@6 = private unnamed_addr constant [39 x i8] c"github.com/goplus/llgo/cl/internal/foo\00", align 1 +@7 = private unnamed_addr constant [43 x i8] c"github.com/goplus/llgo/cl/internal/foo.Foo\00", align 1 +@_llgo_main.bar = global ptr null +@"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo" = global ptr null +@8 = private unnamed_addr constant [3 x i8] c"pb\00", align 1 @9 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@10 = private unnamed_addr constant [5 x i8] c"main\00", align 1 -@11 = private unnamed_addr constant [3 x i8] c"pb\00", align 1 -@12 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@13 = private unnamed_addr constant [2 x i8] c"f\00", align 1 -@14 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@15 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@10 = private unnamed_addr constant [2 x i8] c"f\00", align 1 +@11 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@12 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@13 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@14 = private unnamed_addr constant [9 x i8] c"main.bar\00", align 1 +@__llgo_argc = global ptr null +@__llgo_argv = global ptr null +@15 = private unnamed_addr constant [7 x i8] c"notOk:\00", align 1 define { %"github.com/goplus/llgo/cl/internal/foo.Foo", i1 } @main.Bar(%"github.com/goplus/llgo/internal/runtime.eface" %0) { _llgo_0: @@ -141,7 +143,7 @@ _llgo_0: %11 = xor i1 %6, true %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 @0, ptr %13, align 8 + store ptr @15, ptr %13, align 8 %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %12, i32 0, i32 1 store i64 6, ptr %14, align 4 %15 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %12, align 8 @@ -183,269 +185,298 @@ _llgo_0: ret i32 0 } -declare void @"github.com/goplus/llgo/cl/internal/foo.init"() - -declare void @"github.com/goplus/llgo/internal/runtime.init"() - -declare ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr, i64) - -declare void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr) - -declare void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8) - -declare void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double) - -declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String") - -declare void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1) - -declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) - -declare ptr @"(github.com/goplus/llgo/cl/internal/foo.Foo).Pb"(%"github.com/goplus/llgo/cl/internal/foo.Foo") - define void @"main.init$abi"() { _llgo_0: - call void @"main.init$abi2"() %0 = load ptr, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Foo", align 8 %1 = icmp eq ptr %0, null br i1 %1, label %_llgo_1, label %_llgo_2 _llgo_1: ; preds = %_llgo_0 - %2 = load ptr, ptr @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs", align 8 - %3 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %3, i32 0, i32 0 - store ptr @1, ptr %4, align 8 - %5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %3, i32 0, i32 1 - store i64 2, ptr %5, align 4 - %6 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %3, align 8 - %7 = load ptr, ptr @"_llgo_func$9WyRPk13jhLNuX5vkY3DFEfqvowhmGCLb2eJ8uGOVkM", align 8 - %8 = alloca %"github.com/goplus/llgo/internal/abi.Method", align 8 - %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %8, i32 0, i32 0 - store %"github.com/goplus/llgo/internal/runtime.String" %6, ptr %9, align 8 - %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %8, i32 0, i32 1 - store ptr %7, ptr %10, align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %8, i32 0, i32 2 - store ptr @"(github.com/goplus/llgo/cl/internal/foo.Foo).Pb", ptr %11, align 8 - %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %8, i32 0, i32 3 - store ptr @"(github.com/goplus/llgo/cl/internal/foo.Foo).Pb", ptr %12, align 8 - %13 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %8, align 8 - %14 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) - %15 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %14, i64 0 - store %"github.com/goplus/llgo/internal/abi.Method" %13, 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 = 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 @2, ptr %22, align 8 - %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %21, i32 0, i32 1 - store i64 38, 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 @3, ptr %26, align 8 - %27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %25, i32 0, i32 1 - store i64 42, ptr %27, align 4 - %28 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %25, align 8 - %29 = call ptr @"github.com/goplus/llgo/internal/runtime.Named"(%"github.com/goplus/llgo/internal/runtime.String" %24, %"github.com/goplus/llgo/internal/runtime.String" %28, ptr %2, %"github.com/goplus/llgo/internal/runtime.Slice" %20) - store ptr %29, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Foo", align 8 + %2 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(i64 25, i64 1, i64 1) + store ptr %2, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Foo", align 8 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 - %30 = load ptr, ptr @"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo", align 8 - %31 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 0) - %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 %31, ptr %33, align 8 - %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %32, i32 0, i32 1 - store i64 0, ptr %34, align 4 - %35 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %32, i32 0, i32 2 - store i64 0, ptr %35, align 4 - %36 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %32, align 8 - %37 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %37, i32 0, i32 0 - store ptr @4, ptr %38, align 8 - %39 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %37, i32 0, i32 1 - store i64 4, ptr %39, align 4 - %40 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %37, align 8 - %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 @5, 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 = call ptr @"github.com/goplus/llgo/internal/runtime.Named"(%"github.com/goplus/llgo/internal/runtime.String" %40, %"github.com/goplus/llgo/internal/runtime.String" %44, ptr %30, %"github.com/goplus/llgo/internal/runtime.Slice" %36) - store ptr %45, ptr @_llgo_main.bar, align 8 - ret void -} - -declare ptr @"github.com/goplus/llgo/internal/runtime.Named"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", ptr, %"github.com/goplus/llgo/internal/runtime.Slice") - -define void @"main.init$abi2"() { -_llgo_0: - call void @"main.init$abi3"() - %0 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %1 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %0, i32 0, i32 0 - store ptr @6, ptr %1, align 8 - %2 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %0, i32 0, i32 1 - store i64 2, ptr %2, align 4 - %3 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %0, align 8 - %4 = load ptr, ptr @"*_llgo_byte", 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 @7, ptr %6, align 8 - %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %5, i32 0, i32 1 - store i64 0, ptr %7, align 4 - %8 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %5, align 8 - %9 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %3, ptr %4, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %8, i1 false) - %10 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %10, i32 0, i32 0 - store ptr @8, ptr %11, align 8 - %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %10, i32 0, i32 1 - store i64 1, ptr %12, align 4 - %13 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %10, align 8 - %14 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13) + %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) + store ptr %5, ptr @_llgo_byte, align 8 + br label %_llgo_4 + +_llgo_4: ; preds = %_llgo_3, %_llgo_2 + %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_5, label %_llgo_6 + +_llgo_5: ; preds = %_llgo_4 + %9 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %6) + store ptr %9, ptr @"*_llgo_byte", align 8 + br label %_llgo_6 + +_llgo_6: ; preds = %_llgo_5, %_llgo_4 + %10 = load ptr, ptr @"*_llgo_byte", align 8 + %11 = load ptr, ptr @_llgo_float32, align 8 + %12 = icmp eq ptr %11, null + br i1 %12, label %_llgo_7, label %_llgo_8 + +_llgo_7: ; preds = %_llgo_6 + %13 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13) + store ptr %13, ptr @_llgo_float32, align 8 + br label %_llgo_8 + +_llgo_8: ; preds = %_llgo_7, %_llgo_6 + %14 = load ptr, ptr @_llgo_float32, align 8 %15 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %15, i32 0, i32 0 - store ptr @9, ptr %16, align 8 + 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 0, ptr %17, align 4 + store i64 2, ptr %17, align 4 %18 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %15, align 8 - %19 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %13, ptr %14, i64 8, %"github.com/goplus/llgo/internal/runtime.String" %18, i1 false) - %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 @10, 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 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112) - %25 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %24, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %9, ptr %25, align 8 - %26 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %24, i64 1 - store %"github.com/goplus/llgo/internal/abi.StructField" %19, ptr %26, align 8 - %27 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %28 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %27, i32 0, i32 0 - store ptr %24, ptr %28, align 8 - %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %27, i32 0, i32 1 - store i64 2, ptr %29, align 4 - %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %27, i32 0, i32 2 - store i64 2, ptr %30, align 4 - %31 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %27, align 8 - %32 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %23, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %31) - store ptr %32, ptr @"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs", align 8 - %33 = load ptr, ptr @"_llgo_func$9WyRPk13jhLNuX5vkY3DFEfqvowhmGCLb2eJ8uGOVkM", align 8 - %34 = icmp eq ptr %33, null - br i1 %34, label %_llgo_1, label %_llgo_2 - -_llgo_1: ; preds = %_llgo_0 - %35 = load ptr, ptr @"_llgo_github.com/goplus/llgo/cl/internal/foo.Foo", align 8 - %36 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %37 = getelementptr ptr, ptr %36, i64 0 - store ptr %35, ptr %37, align 8 - %38 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %39 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %38, i32 0, i32 0 - store ptr %36, ptr %39, align 8 - %40 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %38, i32 0, i32 1 - store i64 1, ptr %40, align 4 - %41 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %38, i32 0, i32 2 - store i64 1, ptr %41, align 4 - %42 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %38, align 8 - %43 = load ptr, ptr @"*_llgo_byte", align 8 - %44 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 8) - %45 = getelementptr ptr, ptr %44, i64 0 - store ptr %43, 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 %44, ptr %47, align 8 - %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 1 - store i64 1, ptr %48, align 4 - %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %46, i32 0, i32 2 - store i64 1, 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.Func"(%"github.com/goplus/llgo/internal/runtime.Slice" %42, %"github.com/goplus/llgo/internal/runtime.Slice" %50, i1 false) - store ptr %51, ptr @"_llgo_func$9WyRPk13jhLNuX5vkY3DFEfqvowhmGCLb2eJ8uGOVkM", align 8 - br label %_llgo_2 - -_llgo_2: ; preds = %_llgo_1, %_llgo_0 - %52 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %53 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %52, i32 0, i32 0 - store ptr @11, ptr %53, align 8 - %54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %52, i32 0, i32 1 - store i64 2, ptr %54, align 4 - %55 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %52, align 8 - %56 = load ptr, ptr @"*_llgo_byte", 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 @1, 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 %10, 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 @2, 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 @3, 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 @4, 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_9, label %_llgo_10 + +_llgo_9: ; preds = %_llgo_8 + %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 @5, ptr %48, align 8 + %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %47, i32 0, i32 1 + store i64 2, ptr %49, align 4 + %50 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %47, align 8 + %51 = load ptr, ptr @"*_llgo_byte", align 8 + %52 = load ptr, ptr @"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE", align 8 + %53 = icmp eq ptr %52, null + br i1 %53, label %_llgo_11, label %_llgo_12 + +_llgo_10: ; preds = %_llgo_12, %_llgo_8 + %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 @12, ptr %58, align 8 + store ptr @8, ptr %58, align 8 %59 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %57, i32 0, i32 1 - store i64 0, ptr %59, align 4 + store i64 2, ptr %59, align 4 %60 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %57, align 8 - %61 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %55, ptr %56, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %60, i1 false) - %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 @13, ptr %63, align 8 - %64 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %62, i32 0, i32 1 - store i64 1, ptr %64, align 4 - %65 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %62, align 8 - %66 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13) - %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 @14, 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" %65, ptr %66, i64 8, %"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 @15, 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 - %76 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 112) - %77 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %76, i64 0 - store %"github.com/goplus/llgo/internal/abi.StructField" %61, ptr %77, align 8 - %78 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %76, i64 1 - store %"github.com/goplus/llgo/internal/abi.StructField" %71, ptr %78, align 8 - %79 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 - %80 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %79, i32 0, i32 0 - store ptr %76, ptr %80, align 8 - %81 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %79, i32 0, i32 1 - store i64 2, ptr %81, align 4 - %82 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %79, i32 0, i32 2 - store i64 2, ptr %82, align 4 - %83 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %79, align 8 - %84 = call ptr @"github.com/goplus/llgo/internal/runtime.Struct"(%"github.com/goplus/llgo/internal/runtime.String" %75, i64 16, %"github.com/goplus/llgo/internal/runtime.Slice" %83) - store ptr %84, ptr @"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo", 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 @9, 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 @10, 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 @11, 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 @12, 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 @13, 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 @14, ptr %94, align 8 + %95 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %93, i32 0, i32 1 + store i64 8, 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 + %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_12 + +_llgo_12: ; preds = %_llgo_11, %_llgo_9 + %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" %50, ptr %119, align 8 + %120 = getelementptr inbounds %"github.com/goplus/llgo/internal/abi.Method", ptr %118, i32 0, i32 1 + store ptr %111, ptr %120, align 8 + %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 + %123 = load %"github.com/goplus/llgo/internal/abi.Method", ptr %118, align 8 + %124 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) + %125 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %124, i64 0 + store %"github.com/goplus/llgo/internal/abi.Method" %123, ptr %125, align 8 + %126 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %127 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 0 + store ptr %124, ptr %127, align 8 + %128 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 1 + store i64 1, ptr %128, align 4 + %129 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, i32 0, i32 2 + store i64 1, ptr %129, align 4 + %130 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %126, align 8 + %131 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 40) + %132 = getelementptr %"github.com/goplus/llgo/internal/abi.Method", ptr %131, i64 0 + store %"github.com/goplus/llgo/internal/abi.Method" %117, ptr %132, align 8 + %133 = alloca %"github.com/goplus/llgo/internal/runtime.Slice", align 8 + %134 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 0 + store ptr %131, ptr %134, align 8 + %135 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 1 + store i64 1, ptr %135, align 4 + %136 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, i32 0, i32 2 + store i64 1, ptr %136, align 4 + %137 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %133, align 8 + %138 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %139 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %138, i32 0, i32 0 + store ptr @6, 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 @7, ptr %143, align 8 + %144 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %142, i32 0, i32 1 + store i64 42, 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_10 } +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.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.Basic"(i64) +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) -define void @"main.init$abi3"() { -_llgo_0: - %0 = load ptr, ptr @"*_llgo_byte", align 8 - %1 = icmp eq ptr %0, null - br i1 %1, label %_llgo_1, label %_llgo_2 +declare ptr @"(*github.com/goplus/llgo/cl/internal/foo.Foo).Pb"(ptr) -_llgo_1: ; preds = %_llgo_0 - %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8) - %3 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %2) - store ptr %3, ptr @"*_llgo_byte", align 8 - br label %_llgo_2 +declare ptr @"(github.com/goplus/llgo/cl/internal/foo.Foo).Pb"(%"github.com/goplus/llgo/cl/internal/foo.Foo") -_llgo_2: ; preds = %_llgo_1, %_llgo_0 - ret void -} +declare void @"github.com/goplus/llgo/cl/internal/foo.init"() -declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) +declare void @"github.com/goplus/llgo/internal/runtime.init"() + +declare ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr, i64) + +declare void @"github.com/goplus/llgo/internal/runtime.PrintPointer"(ptr) + +declare void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8) + +declare void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double) + +declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String") + +declare void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1) diff --git a/cl/_testrt/any/out.ll b/cl/_testrt/any/out.ll index 50a3b9db4..d2f59f3fb 100644 --- a/cl/_testrt/any/out.ll +++ b/cl/_testrt/any/out.ll @@ -6,7 +6,9 @@ source_filename = "main" @"main.init$guard" = global ptr null @"*_llgo_int8" = linkonce global ptr null +@_llgo_int8 = linkonce global ptr null @0 = private unnamed_addr constant [22 x i8] c"type assertion failed\00", align 1 +@_llgo_int = linkonce global ptr null @1 = private unnamed_addr constant [22 x i8] c"type assertion failed\00", align 1 @__llgo_argc = global ptr null @__llgo_argv = global ptr null @@ -38,7 +40,7 @@ _llgo_2: ; preds = %_llgo_0 define i64 @main.incVal(%"github.com/goplus/llgo/internal/runtime.eface" %0) { _llgo_0: %1 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 - %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %2 = load ptr, ptr @_llgo_int, align 8 %3 = icmp eq ptr %1, %2 br i1 %3, label %_llgo_1, label %_llgo_2 @@ -87,7 +89,7 @@ _llgo_0: store ptr @3, ptr %5, align 8 %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 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %8 = load ptr, ptr @_llgo_int, align 8 %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 @@ -99,28 +101,48 @@ _llgo_0: ret i32 0 } -declare void @"github.com/goplus/llgo/internal/runtime.TracePanic"(%"github.com/goplus/llgo/internal/runtime.eface") - -declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) - -declare void @"github.com/goplus/llgo/internal/runtime.init"() - -declare i32 @printf(ptr, ...) - define void @"main.init$abi"() { _llgo_0: - %0 = load ptr, ptr @"*_llgo_int8", align 8 + %0 = load ptr, ptr @_llgo_int8, align 8 %1 = icmp eq ptr %0, null br i1 %1, label %_llgo_1, label %_llgo_2 _llgo_1: ; preds = %_llgo_0 %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3) - %3 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %2) - store ptr %3, ptr @"*_llgo_int8", align 8 + store ptr %2, ptr @_llgo_int8, align 8 br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 + %3 = load ptr, ptr @_llgo_int8, align 8 + %4 = load ptr, ptr @"*_llgo_int8", align 8 + %5 = icmp eq ptr %4, null + br i1 %5, label %_llgo_3, label %_llgo_4 + +_llgo_3: ; preds = %_llgo_2 + %6 = call ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr %3) + store ptr %6, ptr @"*_llgo_int8", align 8 + br label %_llgo_4 + +_llgo_4: ; preds = %_llgo_3, %_llgo_2 + %7 = load ptr, ptr @_llgo_int, align 8 + %8 = icmp eq ptr %7, null + br i1 %8, label %_llgo_5, label %_llgo_6 + +_llgo_5: ; preds = %_llgo_4 + %9 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + store ptr %9, ptr @_llgo_int, align 8 + br label %_llgo_6 + +_llgo_6: ; preds = %_llgo_5, %_llgo_4 ret void } +declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) + declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) + +declare void @"github.com/goplus/llgo/internal/runtime.TracePanic"(%"github.com/goplus/llgo/internal/runtime.eface") + +declare void @"github.com/goplus/llgo/internal/runtime.init"() + +declare i32 @printf(ptr, ...) diff --git a/cl/_testrt/builtin/out.ll b/cl/_testrt/builtin/out.ll index c0a05db6e..8045b41c2 100644 --- a/cl/_testrt/builtin/out.ll +++ b/cl/_testrt/builtin/out.ll @@ -16,6 +16,7 @@ source_filename = "main" @2 = private unnamed_addr constant [6 x i8] c"hello\00", align 1 @3 = private unnamed_addr constant [6 x i8] c"hello\00", align 1 @4 = private unnamed_addr constant [4 x i8] c"def\00", align 1 +@_llgo_int = linkonce global ptr null @5 = private unnamed_addr constant [5 x i8] c"ABCD\00", align 1 @6 = private unnamed_addr constant [8 x i8] c"\E4\B8\ADabcd\00", align 1 @7 = private unnamed_addr constant [8 x i8] c"\E4\B8\ADabcd\00", align 1 @@ -85,6 +86,7 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 store i1 true, ptr @"main.init$guard", align 1 + call void @"main.init$abi"() store i64 9223372036854775807, ptr @main.a, align 4 store i64 -9223372036854775808, ptr @main.b, align 4 store i64 -1, ptr @main.n, align 4 @@ -323,7 +325,7 @@ _llgo_0: call void @"github.com/goplus/llgo/internal/runtime.PrintSlice"(%"github.com/goplus/llgo/internal/runtime.Slice" %122) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) %123 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 16) - %124 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %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 %124, ptr %126, align 8 @@ -641,6 +643,21 @@ declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com declare %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.SliceAppend"(%"github.com/goplus/llgo/internal/runtime.Slice", ptr, i64, i64) +define void @"main.init$abi"() { +_llgo_0: + %0 = load ptr, ptr @_llgo_int, 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 2) + store ptr %2, ptr @_llgo_int, align 8 + br label %_llgo_2 + +_llgo_2: ; preds = %_llgo_1, %_llgo_0 + ret void +} + declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) declare void @"github.com/goplus/llgo/internal/runtime.PrintBool"(i1) diff --git a/cl/_testrt/cast/out.ll b/cl/_testrt/cast/out.ll index 1f82dabd5..1f6b0f303 100644 --- a/cl/_testrt/cast/out.ll +++ b/cl/_testrt/cast/out.ll @@ -6,6 +6,7 @@ source_filename = "main" @"main.init$guard" = global ptr null @0 = private unnamed_addr constant [6 x i8] c"error\00", align 1 +@_llgo_string = linkonce global ptr null @1 = private unnamed_addr constant [6 x i8] c"error\00", align 1 @2 = private unnamed_addr constant [6 x i8] c"error\00", align 1 @3 = private unnamed_addr constant [6 x i8] c"error\00", align 1 @@ -34,7 +35,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -63,7 +64,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -92,7 +93,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -121,7 +122,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -150,7 +151,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -179,7 +180,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -208,7 +209,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -237,7 +238,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -266,7 +267,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -295,7 +296,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -324,7 +325,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -353,7 +354,7 @@ _llgo_1: ; preds = %_llgo_0 %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %4, i32 0, i32 1 store i64 5, ptr %6, align 4 %7 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %4, align 8 - %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %8 = load ptr, ptr @_llgo_string, align 8 %9 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %7, ptr %9, align 8 %10 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -377,7 +378,7 @@ _llgo_3: ; preds = %_llgo_2 %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 1 store i64 5, ptr %18, align 4 %19 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %16, align 8 - %20 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %20 = load ptr, ptr @_llgo_string, align 8 %21 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %19, ptr %21, align 8 %22 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -400,6 +401,7 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 store i1 true, ptr @"main.init$guard", align 1 + call void @"main.init$abi"() br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 @@ -470,6 +472,21 @@ _llgo_0: ret i32 0 } +define void @"main.init$abi"() { +_llgo_0: + %0 = load ptr, ptr @_llgo_string, 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 24) + store ptr %2, ptr @_llgo_string, align 8 + br label %_llgo_2 + +_llgo_2: ; preds = %_llgo_1, %_llgo_0 + ret void +} + declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) diff --git a/cl/_testrt/panic/out.ll b/cl/_testrt/panic/out.ll index 362b3bb2b..4bac30165 100644 --- a/cl/_testrt/panic/out.ll +++ b/cl/_testrt/panic/out.ll @@ -8,6 +8,7 @@ source_filename = "main" @__llgo_argc = global ptr null @__llgo_argv = global ptr null @0 = private unnamed_addr constant [14 x i8] c"panic message\00", align 1 +@_llgo_string = linkonce global ptr null define void @main.init() { _llgo_0: @@ -16,6 +17,7 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 store i1 true, ptr @"main.init$guard", align 1 + call void @"main.init$abi"() br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 @@ -34,7 +36,7 @@ _llgo_0: %4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %2, i32 0, i32 1 store i64 13, ptr %4, align 4 %5 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %2, align 8 - %6 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24) + %6 = load ptr, ptr @_llgo_string, align 8 %7 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 16) store %"github.com/goplus/llgo/internal/runtime.String" %5, ptr %7, align 8 %8 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 @@ -49,6 +51,21 @@ _llgo_0: declare void @"github.com/goplus/llgo/internal/runtime.init"() +define void @"main.init$abi"() { +_llgo_0: + %0 = load ptr, ptr @_llgo_string, 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 24) + store ptr %2, ptr @_llgo_string, align 8 + br label %_llgo_2 + +_llgo_2: ; preds = %_llgo_1, %_llgo_0 + ret void +} + declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) diff --git a/internal/abi/llgo_autogen.lla b/internal/abi/llgo_autogen.lla index f5f43eca19dfe0c520e46c1e0a118cf7a3f26de6..35581290bff118b40261309655d30041f4847711 100644 GIT binary patch literal 3560 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 Z?0-Sb3QR-$?>fcbc<{GI{q-CG@Lz-qxTydD literal 3353 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 UbipM5juYLO$&D|+0U!Y2KQ1OqlmGw# diff --git a/internal/runtime/llgo_autogen.lla b/internal/runtime/llgo_autogen.lla index d7e201b37a690d88b62f0bab10b0d504cd11caaf..841d6f08bacb98eaa90f1a32eb682df17550c676 100644 GIT binary patch literal 12615 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 Ui2oc1{@2w1%{%{a2_T^V0j(Qr5dZ)H literal 13557 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 diff --git a/internal/runtime/z_face.go b/internal/runtime/z_face.go index ededb30b4..14243461c 100644 --- a/internal/runtime/z_face.go +++ b/internal/runtime/z_face.go @@ -161,8 +161,6 @@ func doInitNamed(ret *Type, pkgPath, name string, underlying *Type, methods []Me extraOff := int(baseSize + uncommonTypeHdrSize) data := (*abi.Method)(c.Advance(ptr, extraOff)) copy(unsafe.Slice(data, n), methods) - - println("==> InitNamed:", pkgPath, name, ret, ret.Uncommon()) } // Func returns a function type. @@ -210,7 +208,6 @@ func NewItab(inter *InterfaceType, typ *Type) *Itab { ret.hash = typ.Hash u := typ.Uncommon() - println("==> NewItab Uncommon:", typ, u) if u == nil { ret.fun[0] = 0 } else { @@ -223,7 +220,6 @@ func NewItab(inter *InterfaceType, typ *Type) *Itab { break } *c.Advance(data, i) = uintptr(fn) - println("==> NewItab:", ret, i, fn) } } return ret @@ -234,9 +230,7 @@ func findMethod(mthds []abi.Method, im abi.Imethod) abi.Text { for _, m := range mthds { mName := m.Name_ if mName >= imName { - println("==> findMethod:", mName, imName, m.Mtyp_, im.Typ_, m.Ifn_) if mName == imName && m.Mtyp_ == im.Typ_ { - println("==> findMethod", mName, m.Ifn_) return m.Ifn_ } break diff --git a/ssa/abitype.go b/ssa/abitype.go index ab52e6d95..a0deac813 100644 --- a/ssa/abitype.go +++ b/ssa/abitype.go @@ -19,7 +19,6 @@ package ssa import ( "go/token" "go/types" - "log" "unsafe" "github.com/goplus/llgo/ssa/abi" @@ -96,12 +95,9 @@ func (b Builder) abiFuncOf(sig *types.Signature) func() Expr { } // Imethod{name string, typ *FuncType} -func (b Builder) abiImethodOf(m *types.Func, typ Expr) Expr { +func (b Builder) abiImethodOf(mName string, typ Expr) Expr { prog := b.Prog - name := b.Str(m.Name()) - tname, _ := b.Pkg.abi.TypeName(m.Type()) - log.Println("==> abiImethodOf:", m.Name(), m.Type(), tname) - b.Println(b.Str("==> abiImethodOf:"), typ) + name := b.Str(mName) return b.aggregateValue(prog.rtType("Imethod"), name.impl, typ.impl) } @@ -128,9 +124,6 @@ func (b Builder) abiMethodOf(m *types.Func /*, bg Background = InGo */) (mthd, p abiSigGo := types.NewSignatureType(nil, nil, nil, mSig.Params(), mSig.Results(), mSig.Variadic()) abiSig := prog.FuncDecl(abiSigGo, InGo).raw.Type abiTyp := b.abiType(abiSig) - tname, _ := b.Pkg.abi.TypeName(abiSig) - log.Println("==> abiMethodOf:", mName, abiSigGo, tname) - b.Println(b.Str("==> abiMethodOf:"), abiTyp) abiTypImpl := abiTyp.impl recv := mSig.Recv() @@ -169,7 +162,7 @@ func (b Builder) abiInterfaceOf(name string, t *types.Interface) func() Expr { methods := make([]Expr, n) for i := 0; i < n; i++ { m := t.Method(i) - methods[i] = b.abiImethodOf(m, typs[i]) + methods[i] = b.abiImethodOf(m.Name(), typs[i]) } pkg := b.Pkg fn := pkg.rtFunc("Interface") @@ -328,14 +321,15 @@ func (p Package) abiTypeInit(g Global, t types.Type, pub bool) { b.If(eq, blks[0], blks[1]) b.SetBlockEx(blks[0], AtEnd, false) } - b.Store(expr, tabi()) + vexpr := tabi() + b.Store(expr, vexpr) if pub { b.Jump(blks[1]) b.SetBlockEx(blks[1], AtEnd, false) b.blk.last = blks[1].last } if t, ok := t.(*types.Named); ok { - tabi = b.abiInitNamed(expr, t) + tabi = b.abiInitNamed(vexpr, t) if pub { blks = b.Func.MakeBlocks(2) b.If(eq, blks[0], blks[1]) diff --git a/ssa/interface.go b/ssa/interface.go index 5b97c78ff..b2d7065b6 100644 --- a/ssa/interface.go +++ b/ssa/interface.go @@ -74,7 +74,6 @@ func (b Builder) Imethod(intf Expr, method *types.Func) Expr { pfn := b.Advance(itab, prog.IntVal(uint64(i+3), prog.Int())) fn := b.Load(pfn) ret := b.aggregateValue(tclosure, fn.impl, b.faceData(impl)) - b.Println(b.Str("Imethod:"), itab, ret, prog.Val(ret.kind), prog.Val(i)) return ret }