diff --git a/cl/_testgo/equal/out.ll b/cl/_testgo/equal/out.ll index 3502028b..acc08baa 100644 --- a/cl/_testgo/equal/out.ll +++ b/cl/_testgo/equal/out.ll @@ -497,7 +497,7 @@ _llgo_9: ; preds = %_llgo_8 %19 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %18, 0 %20 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %19, i64 0, 1 %21 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %20, i64 0, 2 - %22 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %21) + %22 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %21) store ptr %22, ptr @_llgo_any, align 8 br label %_llgo_10 @@ -518,7 +518,7 @@ _llgo_11: ; preds = %_llgo_10 %33 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %32, 0 %34 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %33, i64 0, 1 %35 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %34, i64 0, 2 - %36 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %35) + %36 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %35) %37 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @8, i64 1 }, ptr %36, i64 32, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, i1 false) %38 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 224) %39 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %38, i64 0 @@ -630,7 +630,7 @@ declare %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/l declare ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", i64, i64, i64, i64) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") declare void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr, ptr, %"github.com/goplus/llgo/internal/runtime.Slice", %"github.com/goplus/llgo/internal/runtime.Slice") diff --git a/cl/_testgo/errors/out.ll b/cl/_testgo/errors/out.ll index 265da252..3a93baf5 100644 --- a/cl/_testgo/errors/out.ll +++ b/cl/_testgo/errors/out.ll @@ -161,7 +161,7 @@ _llgo_5: ; preds = %_llgo_4 %44 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %42, 0 %45 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %44, i64 1, 1 %46 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %45, i64 1, 2 - %47 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %46) + %47 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %46) store ptr %47, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 br label %_llgo_6 @@ -187,7 +187,7 @@ declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr) declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr) diff --git a/cl/_testgo/ifaceconv/out.ll b/cl/_testgo/ifaceconv/out.ll index 127bf889..c1c7cc96 100644 --- a/cl/_testgo/ifaceconv/out.ll +++ b/cl/_testgo/ifaceconv/out.ll @@ -556,7 +556,7 @@ _llgo_12: ; preds = %_llgo_11, %_llgo_10 %35 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %33, 0 %36 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %35, i64 1, 1 %37 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %36, i64 1, 2 - %38 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %37) + %38 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %37) store ptr %38, ptr @"main.iface$brpgdLtIeRlPi8QUoTgPCXzlehUkncg7v9aITo-GsF4", align 8 %39 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamedInterface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" { ptr @6, i64 2 }) %40 = load ptr, ptr @_llgo_main.I2, align 8 @@ -599,7 +599,7 @@ _llgo_16: ; preds = %_llgo_15, %_llgo_14 %59 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %56, 0 %60 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %59, i64 2, 1 %61 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %60, i64 2, 2 - %62 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %61) + %62 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %61) store ptr %62, ptr @"main.iface$gZBF8fFlqIMZ9M6lT2VWPyc3eu5Co6j0WoKGIEgDPAw", align 8 %63 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamed"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" { ptr @9, i64 2 }, i64 25, i64 0, i64 1, i64 1) %64 = load ptr, ptr @_llgo_main.C1, align 8 @@ -721,7 +721,7 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/ declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr) diff --git a/cl/_testgo/ifaceprom/out.ll b/cl/_testgo/ifaceprom/out.ll index 64cd3438..664638b3 100644 --- a/cl/_testgo/ifaceprom/out.ll +++ b/cl/_testgo/ifaceprom/out.ll @@ -563,7 +563,7 @@ _llgo_10: ; preds = %_llgo_9, %_llgo_8 %76 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %73, 0 %77 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %76, i64 2, 1 %78 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %77, i64 2, 2 - %79 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %78) + %79 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %78) store ptr %79, ptr @"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA", align 8 %80 = call ptr @"github.com/goplus/llgo/internal/runtime.NewNamedInterface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" { ptr @6, i64 1 }) %81 = load ptr, ptr @_llgo_main.I, align 8 @@ -613,7 +613,7 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/ declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr) diff --git a/cl/_testgo/interface/out.ll b/cl/_testgo/interface/out.ll index 7ab39e50..8aab03d4 100644 --- a/cl/_testgo/interface/out.ll +++ b/cl/_testgo/interface/out.ll @@ -441,7 +441,7 @@ _llgo_28: ; preds = %_llgo_27, %_llgo_26 %120 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %117, 0 %121 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %120, i64 2, 1 %122 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %121, i64 2, 2 - %123 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %122) + %123 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %122) store ptr %123, ptr @"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg", align 8 ret void } @@ -468,7 +468,7 @@ declare void @"github.com/goplus/llgo/internal/runtime.InitNamedInterface"(ptr, declare i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr, ptr) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr) diff --git a/cl/_testgo/invoke/out.ll b/cl/_testgo/invoke/out.ll index 9080bdff..3ec87a22 100644 --- a/cl/_testgo/invoke/out.ll +++ b/cl/_testgo/invoke/out.ll @@ -606,7 +606,7 @@ _llgo_13: ; preds = %_llgo_6 %72 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %70, 0 %73 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %72, i64 1, 1 %74 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %73, i64 1, 2 - %75 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @8, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %74) + %75 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @8, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %74) store ptr %75, ptr @"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0", align 8 br label %_llgo_14 @@ -1004,7 +1004,7 @@ _llgo_61: ; preds = %_llgo_60 %275 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %272, 0 %276 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %275, i64 2, 1 %277 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %276, i64 2, 2 - %278 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @8, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %277) + %278 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @8, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %277) store ptr %278, ptr @"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI", align 8 br label %_llgo_62 @@ -1043,7 +1043,7 @@ _llgo_67: ; preds = %_llgo_66 %292 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %291, 0 %293 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %292, i64 0, 1 %294 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %293, i64 0, 2 - %295 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @8, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %294) + %295 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @8, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %294) store ptr %295, ptr @_llgo_any, align 8 br label %_llgo_68 @@ -1067,7 +1067,7 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.Func"(%"github.com/goplus/ declare void @"github.com/goplus/llgo/internal/runtime.SetDirectIface"(ptr) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr) diff --git a/cl/_testgo/reader/out.ll b/cl/_testgo/reader/out.ll index 57145f4d..465752fe 100644 --- a/cl/_testgo/reader/out.ll +++ b/cl/_testgo/reader/out.ll @@ -1154,7 +1154,7 @@ _llgo_29: ; preds = %_llgo_28 %106 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %104, 0 %107 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %106, i64 1, 1 %108 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %107, i64 1, 2 - %109 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %108) + %109 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %108) store ptr %109, ptr @"_llgo_iface$eN81k1zqixGTyagHw_4nqH4mGfwwehTOCTXUlbT9kzk", align 8 br label %_llgo_30 @@ -1288,7 +1288,7 @@ _llgo_39: ; preds = %_llgo_38 %191 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %188, 0 %192 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %191, i64 2, 1 %193 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %192, i64 2, 2 - %194 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %193) + %194 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %193) store ptr %194, ptr @"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I", align 8 br label %_llgo_40 @@ -1393,7 +1393,7 @@ _llgo_47: ; preds = %_llgo_46 %256 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %254, 0 %257 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %256, i64 1, 1 %258 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %257, i64 1, 2 - %259 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %258) + %259 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %258) store ptr %259, ptr @"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU", align 8 br label %_llgo_48 @@ -1673,7 +1673,7 @@ _llgo_63: ; preds = %_llgo_62 %440 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %438, 0 %441 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %440, i64 1, 1 %442 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %441, i64 1, 2 - %443 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %442) + %443 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %442) store ptr %443, ptr @"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE", align 8 br label %_llgo_64 @@ -1719,7 +1719,7 @@ _llgo_65: ; preds = %_llgo_64 %471 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %469, 0 %472 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %471, i64 1, 1 %473 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %472, i64 1, 2 - %474 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %473) + %474 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %473) store ptr %474, ptr @"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU", align 8 br label %_llgo_66 @@ -1743,7 +1743,7 @@ declare void @"github.com/goplus/llgo/internal/runtime.InitNamedInterface"(ptr, declare i1 @"github.com/goplus/llgo/internal/runtime.Implements"(ptr, ptr) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr) diff --git a/cl/_testgo/reflect/out.ll b/cl/_testgo/reflect/out.ll index 36b0b9a1..22d9b9ee 100644 --- a/cl/_testgo/reflect/out.ll +++ b/cl/_testgo/reflect/out.ll @@ -1159,7 +1159,7 @@ _llgo_15: ; preds = %_llgo_14 %78 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %76, 0 %79 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %78, i64 1, 1 %80 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %79, i64 1, 2 - %81 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %80) + %81 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %80) store ptr %81, ptr @"_llgo_iface$VdBKYV8-gcMjZtZfcf-u2oKoj9Lu3VXwuG8TGCW2S4A", align 8 br label %_llgo_16 @@ -1173,7 +1173,7 @@ _llgo_17: ; preds = %_llgo_16 %85 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %84, 0 %86 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %85, i64 0, 1 %87 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %86, i64 0, 2 - %88 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %87) + %88 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %87) store ptr %88, ptr @_llgo_any, align 8 br label %_llgo_18 @@ -1187,7 +1187,7 @@ _llgo_19: ; preds = %_llgo_18 %92 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %91, 0 %93 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %92, i64 0, 1 %94 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %93, i64 0, 2 - %95 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %94) + %95 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @3, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %94) %96 = call ptr @"github.com/goplus/llgo/internal/runtime.SliceOf"(ptr %95) store ptr %96, ptr @"[]_llgo_any", align 8 br label %_llgo_20 @@ -1390,7 +1390,7 @@ declare void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr, ptr, %"gi declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr) diff --git a/cl/_testrt/makemap/out.ll b/cl/_testrt/makemap/out.ll index b205df40..fac1e3c0 100644 --- a/cl/_testrt/makemap/out.ll +++ b/cl/_testrt/makemap/out.ll @@ -964,7 +964,7 @@ _llgo_9: ; preds = %_llgo_8 %59 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %58, 0 %60 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %59, i64 0, 1 %61 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %60, i64 0, 2 - %62 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @4, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %61) + %62 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @4, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %61) store ptr %62, ptr @_llgo_any, align 8 br label %_llgo_10 @@ -978,7 +978,7 @@ _llgo_11: ; preds = %_llgo_10 %66 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %65, 0 %67 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %66, i64 0, 1 %68 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %67, i64 0, 2 - %69 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @4, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %68) + %69 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @4, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %68) %70 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34) %71 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 40) %72 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %71) @@ -987,7 +987,7 @@ _llgo_11: ; preds = %_llgo_10 %75 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %74, 0 %76 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %75, i64 0, 1 %77 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %76, i64 0, 2 - %78 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @4, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %77) + %78 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @4, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %77) %79 = call ptr @"github.com/goplus/llgo/internal/runtime.ArrayOf"(i64 8, ptr %78) %80 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @1, i64 4 }, ptr %79, i64 8, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, i1 false) %81 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 34) @@ -1313,7 +1313,7 @@ declare void @"github.com/goplus/llgo/internal/runtime.MapDelete"(ptr, ptr, ptr) declare void @"github.com/goplus/llgo/internal/runtime.Panic"(%"github.com/goplus/llgo/internal/runtime.eface") -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset(ptr nocapture writeonly, i8, i64, i1 immarg) #0 diff --git a/cl/_testrt/tpabi/out.ll b/cl/_testrt/tpabi/out.ll index b360728f..bc5237ae 100644 --- a/cl/_testrt/tpabi/out.ll +++ b/cl/_testrt/tpabi/out.ll @@ -286,7 +286,7 @@ _llgo_13: ; preds = %_llgo_12 %66 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %64, 0 %67 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %66, i64 1, 1 %68 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %67, i64 1, 2 - %69 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %68) + %69 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %68) store ptr %69, ptr @"_llgo_iface$BP0p_lUsEd-IbbtJVukGmgrdQkqzcoYzSiwgUvgFvUs", align 8 br label %_llgo_14 @@ -320,7 +320,7 @@ declare ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64) declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +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.NewItab"(ptr, ptr) diff --git a/cl/_testrt/tpmap/out.ll b/cl/_testrt/tpmap/out.ll index 92acc106..58ccc9c8 100644 --- a/cl/_testrt/tpmap/out.ll +++ b/cl/_testrt/tpmap/out.ll @@ -208,7 +208,7 @@ _llgo_13: ; preds = %_llgo_12 %28 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %27, 0 %29 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %28, i64 0, 1 %30 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %29, i64 0, 2 - %31 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %30) + %31 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %30) store ptr %31, ptr @_llgo_any, align 8 br label %_llgo_14 @@ -218,7 +218,7 @@ _llgo_14: ; preds = %_llgo_13, %_llgo_12 %34 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %33, 0 %35 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %34, i64 0, 1 %36 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %35, i64 0, 2 - %37 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %36) + %37 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @0, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %36) %38 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @4, i64 1 }, ptr %37, i64 0, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, i1 false) %39 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64 56) %40 = getelementptr %"github.com/goplus/llgo/internal/abi.StructField", ptr %39, i64 0 @@ -344,7 +344,7 @@ declare %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/l declare ptr @"github.com/goplus/llgo/internal/runtime.AllocU"(i64) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +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.PointerTo"(ptr) diff --git a/cl/_testrt/tpmethod/out.ll b/cl/_testrt/tpmethod/out.ll index 2ca867f9..a11bcdf2 100644 --- a/cl/_testrt/tpmethod/out.ll +++ b/cl/_testrt/tpmethod/out.ll @@ -477,7 +477,7 @@ _llgo_21: ; preds = %_llgo_20 %196 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" undef, ptr %194, 0 %197 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %196, i64 1, 1 %198 = insertvalue %"github.com/goplus/llgo/internal/runtime.Slice" %197, i64 1, 2 - %199 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/internal/runtime.String" zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %198) + %199 = call ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String" { ptr @1, i64 4 }, %"github.com/goplus/llgo/internal/runtime.Slice" %198) store ptr %199, ptr @"_llgo_iface$siNiE0pGpvdoyzPUhSP4dREmGht9v7Axb0C9hezIyDM", align 8 br label %_llgo_22 @@ -507,7 +507,7 @@ declare void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr, ptr, %"gi declare ptr @"github.com/goplus/llgo/internal/runtime.PointerTo"(ptr) -declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") +declare ptr @"github.com/goplus/llgo/internal/runtime.Interface"(%"github.com/goplus/llgo/internal/runtime.String", %"github.com/goplus/llgo/internal/runtime.Slice") declare ptr @"github.com/goplus/llgo/internal/runtime.NewItab"(ptr, ptr) diff --git a/internal/runtime/z_face.go b/internal/runtime/z_face.go index c9c93c65..333738d7 100644 --- a/internal/runtime/z_face.go +++ b/internal/runtime/z_face.go @@ -211,7 +211,6 @@ func Func(in, out []*Type, variadic bool) *FuncType { Align_: uint8(pointerAlign), FieldAlign_: uint8(pointerAlign), Kind_: uint8(abi.Func), - Str_: "func(...)", }, In: in, Out: out, @@ -219,9 +218,12 @@ func Func(in, out []*Type, variadic bool) *FuncType { if variadic { ret.TFlag |= abi.TFlagVariadic } + ret.Str_ = funcStr(ret) return ret } +// NewNamedInterface returns an interface type. +// Don't call NewNamed for named interface type. func NewNamedInterface(pkgPath, name string) *InterfaceType { if pkgPath != "" { name = pkgName(pkgPath) + "." + name @@ -263,9 +265,7 @@ func InitNamedInterface(ret *InterfaceType, methods []Imethod) { } } -// Interface returns an interface type. -// Don't call NewNamed for named interface type. -func Interface(pkgPath, name string, methods []Imethod) *InterfaceType { +func Interface(pkgPath string, methods []Imethod) *InterfaceType { ret := &abi.InterfaceType{ Type: Type{ Size_: unsafe.Sizeof(eface{}), @@ -274,7 +274,6 @@ func Interface(pkgPath, name string, methods []Imethod) *InterfaceType { Align_: uint8(pointerAlign), FieldAlign_: uint8(pointerAlign), Kind_: uint8(abi.Interface), - Str_: name, }, PkgPath_: pkgPath, Methods: methods, @@ -284,6 +283,7 @@ func Interface(pkgPath, name string, methods []Imethod) *InterfaceType { } else { ret.Equal = interequal } + ret.Str_ = interfaceStr(ret) return ret } @@ -482,4 +482,55 @@ func SetClosure(t *abi.Type) { t.TFlag |= abi.TFlagClosure } +func interfaceStr(ft *abi.InterfaceType) string { + repr := make([]byte, 0, 64) + repr = append(repr, "interface {"...) + for i, t := range ft.Methods { + if i > 0 { + repr = append(repr, "; "...) + } + repr = append(repr, ' ') + repr = append(repr, t.Name_...) + repr = append(repr, t.Typ_.String()[4:]...) + } + if len(ft.Methods) > 0 { + repr = append(repr, ' ') + } + repr = append(repr, '}') + return string(repr) +} + +func funcStr(ft *abi.FuncType) string { + repr := make([]byte, 0, 64) + repr = append(repr, "func("...) + for i, t := range ft.In { + if i > 0 { + repr = append(repr, ", "...) + } + if ft.Variadic() && i == len(ft.In)-1 { + repr = append(repr, "..."...) + repr = append(repr, (*abi.SliceType)(unsafe.Pointer(t)).Elem.String()...) + } else { + repr = append(repr, t.String()...) + } + } + repr = append(repr, ')') + out := ft.Out + if len(out) == 1 { + repr = append(repr, ' ') + } else if len(out) > 1 { + repr = append(repr, " ("...) + } + for i, t := range out { + if i > 0 { + repr = append(repr, ", "...) + } + repr = append(repr, t.String()...) + } + if len(out) > 1 { + repr = append(repr, ')') + } + return string(repr) +} + // ----------------------------------------------------------------------------- diff --git a/internal/runtime/z_type.go b/internal/runtime/z_type.go index 1440f842..f46fbe29 100644 --- a/internal/runtime/z_type.go +++ b/internal/runtime/z_type.go @@ -272,7 +272,7 @@ func ArrayOf(length uintptr, elem *Type) *Type { Align_: elem.Align_, FieldAlign_: elem.FieldAlign_, Kind_: uint8(abi.Array), - Str_: "[...]" + elem.String(), // TODO(xsw): itoa + Str_: "[" + string(itoa(make([]byte, 20), uint64(length))) + "]" + elem.String(), }, Elem: elem, Slice: SliceOf(elem), diff --git a/ssa/abitype.go b/ssa/abitype.go index a338f84e..9bd329e4 100644 --- a/ssa/abitype.go +++ b/ssa/abitype.go @@ -187,7 +187,7 @@ func (b Builder) abiInterfaceOf(t *types.Interface) func() Expr { fn := pkg.rtFunc("Interface") tSlice := lastParamType(prog, fn) methodSlice := b.SliceLit(tSlice, methods...) - return b.Call(fn, b.Str(pkg.Path()), b.Str(""), methodSlice) + return b.Call(fn, b.Str(pkg.Path()), methodSlice) } }