Skip to content

Commit 32a66be

Browse files
authored
Merge pull request #399 from visualfc/panicany
runtime: panic any custometype
2 parents 4f7d3ad + c090c34 commit 32a66be

File tree

16 files changed

+830
-564
lines changed

16 files changed

+830
-564
lines changed

cl/_testdata/print/in.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ func gwrite(b []byte) {
1010
if len(b) == 0 {
1111
return
1212
}
13-
c.Printf(c.Str("%s"), b)
13+
for _, v := range b {
14+
c.Printf(c.Str("%c"), v)
15+
}
1416
}
1517

1618
func printbool(v bool) {
@@ -200,6 +202,7 @@ func main() {
200202
int8(1), int16(2), int32(3), int64(4), 5,
201203
uint8(1), uint16(2), uint32(3), uint64(4), uintptr(5),
202204
"llgo")
205+
println(1 + 2i)
203206
}
204207

205208
func println(args ...any) {
@@ -242,6 +245,16 @@ func printany(v any) {
242245
printfloat(float64(v))
243246
case float64:
244247
printfloat(float64(v))
248+
case complex64:
249+
printstring("(")
250+
printfloat(float64(real(v)))
251+
printfloat(float64(imag(v)))
252+
printstring("i)")
253+
case complex128:
254+
printstring("(")
255+
printfloat(real(v))
256+
printfloat(imag(v))
257+
printstring("i)")
245258
case string:
246259
printstring(v)
247260
}

cl/_testdata/print/out.ll

Lines changed: 633 additions & 459 deletions
Large diffs are not rendered by default.

cl/_testgo/equal/out.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ source_filename = "main"
2424
@5 = private unnamed_addr constant [1 x i8] c"Y", align 1
2525
@6 = private unnamed_addr constant [1 x i8] c"Z", align 1
2626
@7 = private unnamed_addr constant [1 x i8] c"V", align 1
27-
@8 = private unnamed_addr constant [6 x i8] c"main.T", align 1
27+
@8 = private unnamed_addr constant [1 x i8] c"T", align 1
2828
@_llgo_main.N = linkonce global ptr null, align 8
29-
@9 = private unnamed_addr constant [6 x i8] c"main.N", align 1
29+
@9 = private unnamed_addr constant [1 x i8] c"N", align 1
3030
@__llgo_argc = global i32 0, align 4
3131
@__llgo_argv = global ptr null, align 8
3232

@@ -749,7 +749,7 @@ _llgo_13: ; preds = %_llgo_12
749749
%105 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %104, i32 0, i32 0
750750
store ptr @8, ptr %105, align 8
751751
%106 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %104, i32 0, i32 1
752-
store i64 6, ptr %106, align 4
752+
store i64 1, ptr %106, align 4
753753
%107 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %104, align 8
754754
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %24, %"github.com/goplus/llgo/internal/runtime.String" %103, %"github.com/goplus/llgo/internal/runtime.String" %107, ptr %99, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
755755
br label %_llgo_14
@@ -779,7 +779,7 @@ _llgo_17: ; preds = %_llgo_16
779779
%117 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %116, i32 0, i32 0
780780
store ptr @9, ptr %117, align 8
781781
%118 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %116, i32 0, i32 1
782-
store i64 6, ptr %118, align 4
782+
store i64 1, ptr %118, align 4
783783
%119 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %116, align 8
784784
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %110, %"github.com/goplus/llgo/internal/runtime.String" %115, %"github.com/goplus/llgo/internal/runtime.String" %119, ptr %111, { ptr, i64, i64 } zeroinitializer, { ptr, i64, i64 } zeroinitializer)
785785
br label %_llgo_18

cl/_testgo/errors/out.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ source_filename = "main"
1818
@1 = private unnamed_addr constant [4 x i8] c"main", align 1
1919
@2 = private unnamed_addr constant [5 x i8] c"Error", align 1
2020
@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null, align 8
21-
@3 = private unnamed_addr constant [16 x i8] c"main.errorString", align 1
21+
@3 = private unnamed_addr constant [11 x i8] c"errorString", align 1
2222
@"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null, align 8
2323
@__llgo_argc = global i32 0, align 4
2424
@__llgo_argv = global ptr null, align 8
@@ -214,7 +214,7 @@ _llgo_4: ; preds = %_llgo_3, %_llgo_2
214214
%67 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 0
215215
store ptr @3, ptr %67, align 8
216216
%68 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %66, i32 0, i32 1
217-
store i64 16, ptr %68, align 4
217+
store i64 11, ptr %68, align 4
218218
%69 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %66, align 8
219219
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)
220220
%70 = load ptr, ptr @_llgo_main.errorString, align 8

cl/_testgo/ifaceconv/out.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ source_filename = "main"
3333
@_llgo_main.C1 = linkonce global ptr null, align 8
3434
@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null, align 8
3535
@9 = private unnamed_addr constant [1 x i8] c"f", align 1
36-
@10 = private unnamed_addr constant [7 x i8] c"main.C1", align 1
36+
@10 = private unnamed_addr constant [2 x i8] c"C1", align 1
3737
@11 = private unnamed_addr constant [17 x i8] c"C1 i1.(I0) failed", align 1
3838
@12 = private unnamed_addr constant [17 x i8] c"C1 i1.(I1) failed", align 1
3939
@13 = private unnamed_addr constant [20 x i8] c"C1 i1.(I2) succeeded", align 1
4040
@_llgo_main.C2 = linkonce global ptr null, align 8
4141
@14 = private unnamed_addr constant [1 x i8] c"g", align 1
42-
@15 = private unnamed_addr constant [7 x i8] c"main.C2", align 1
42+
@15 = private unnamed_addr constant [2 x i8] c"C2", align 1
4343
@16 = private unnamed_addr constant [17 x i8] c"C2 i1.(I0) failed", align 1
4444
@17 = private unnamed_addr constant [17 x i8] c"C2 i1.(I1) failed", align 1
4545
@18 = private unnamed_addr constant [17 x i8] c"C2 i1.(I2) failed", align 1
@@ -1126,7 +1126,7 @@ _llgo_15: ; preds = %_llgo_14
11261126
%216 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %215, i32 0, i32 0
11271127
store ptr @10, ptr %216, align 8
11281128
%217 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %215, i32 0, i32 1
1129-
store i64 7, ptr %217, align 4
1129+
store i64 2, ptr %217, align 4
11301130
%218 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %215, align 8
11311131
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %161, %"github.com/goplus/llgo/internal/runtime.String" %214, %"github.com/goplus/llgo/internal/runtime.String" %218, ptr %175, %"github.com/goplus/llgo/internal/runtime.Slice" %203, %"github.com/goplus/llgo/internal/runtime.Slice" %210)
11321132
br label %_llgo_16
@@ -1248,7 +1248,7 @@ _llgo_19: ; preds = %_llgo_18
12481248
%286 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %285, i32 0, i32 0
12491249
store ptr @15, ptr %286, align 8
12501250
%287 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %285, i32 0, i32 1
1251-
store i64 7, ptr %287, align 4
1251+
store i64 2, ptr %287, align 4
12521252
%288 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %285, align 8
12531253
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %221, %"github.com/goplus/llgo/internal/runtime.String" %284, %"github.com/goplus/llgo/internal/runtime.String" %288, ptr %222, %"github.com/goplus/llgo/internal/runtime.Slice" %272, %"github.com/goplus/llgo/internal/runtime.Slice" %280)
12541254
br label %_llgo_20

cl/_testgo/ifaceprom/out.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ source_filename = "main"
2626
@4 = private unnamed_addr constant [8 x i8] c"main.two", align 1
2727
@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null, align 8
2828
@_llgo_string = linkonce global ptr null, align 8
29-
@5 = private unnamed_addr constant [9 x i8] c"main.impl", align 1
29+
@5 = private unnamed_addr constant [4 x i8] c"impl", align 1
3030
@"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA" = global ptr null, align 8
3131
@_llgo_main.I = linkonce global ptr null, align 8
3232
@6 = private unnamed_addr constant [6 x i8] c"main.I", align 1
@@ -847,7 +847,7 @@ _llgo_10: ; preds = %_llgo_9, %_llgo_8
847847
%121 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %120, i32 0, i32 0
848848
store ptr @5, ptr %121, align 8
849849
%122 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %120, i32 0, i32 1
850-
store i64 9, ptr %122, align 4
850+
store i64 4, ptr %122, align 4
851851
%123 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %120, align 8
852852
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %0, %"github.com/goplus/llgo/internal/runtime.String" %119, %"github.com/goplus/llgo/internal/runtime.String" %123, ptr %14, %"github.com/goplus/llgo/internal/runtime.Slice" %107, %"github.com/goplus/llgo/internal/runtime.Slice" %115)
853853
%124 = load ptr, ptr @"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA", align 8

cl/_testgo/interface/out.ll

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,17 @@ source_filename = "main"
2525
@2 = private unnamed_addr constant [8 x i8] c"initGame", align 1
2626
@3 = private unnamed_addr constant [47 x i8] c"github.com/goplus/llgo/cl/internal/foo.initGame", align 1
2727
@4 = private unnamed_addr constant [38 x i8] c"github.com/goplus/llgo/cl/internal/foo", align 1
28-
@5 = private unnamed_addr constant [43 x i8] c"github.com/goplus/llgo/cl/internal/foo.Game", align 1
29-
@6 = private unnamed_addr constant [4 x i8] c"Game", align 1
30-
@7 = private unnamed_addr constant [10 x i8] c"main.Game1", align 1
28+
@5 = private unnamed_addr constant [4 x i8] c"Game", align 1
29+
@6 = private unnamed_addr constant [5 x i8] c"Game1", align 1
3130
@"*_llgo_main.Game2" = linkonce global ptr null, align 8
3231
@_llgo_main.Game2 = linkonce global ptr null, align 8
33-
@8 = private unnamed_addr constant [13 x i8] c"main.initGame", align 1
34-
@9 = private unnamed_addr constant [10 x i8] c"main.Game2", align 1
32+
@7 = private unnamed_addr constant [13 x i8] c"main.initGame", align 1
33+
@8 = private unnamed_addr constant [5 x i8] c"Game2", align 1
3534
@"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer" = linkonce global ptr null, align 8
36-
@10 = private unnamed_addr constant [44 x i8] c"github.com/goplus/llgo/cl/internal/foo.Gamer", align 1
35+
@9 = private unnamed_addr constant [44 x i8] c"github.com/goplus/llgo/cl/internal/foo.Gamer", align 1
3736
@"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg" = global ptr null, align 8
38-
@11 = private unnamed_addr constant [2 x i8] c"OK", align 1
39-
@12 = private unnamed_addr constant [4 x i8] c"FAIL", align 1
37+
@10 = private unnamed_addr constant [2 x i8] c"OK", align 1
38+
@11 = private unnamed_addr constant [4 x i8] c"FAIL", align 1
4039

4140
define void @main.Game1.Load(%main.Game1 %0) {
4241
_llgo_0:
@@ -181,7 +180,7 @@ _llgo_5: ; preds = %_llgo_4, %_llgo_3
181180
%49 = extractvalue { %"github.com/goplus/llgo/internal/runtime.iface", i1 } %47, 1
182181
%50 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
183182
%51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %50, i32 0, i32 0
184-
store ptr @11, ptr %51, align 8
183+
store ptr @10, ptr %51, align 8
185184
%52 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %50, i32 0, i32 1
186185
store i64 2, ptr %52, align 4
187186
%53 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %50, align 8
@@ -226,7 +225,7 @@ _llgo_8: ; preds = %_llgo_7, %_llgo_6
226225
%71 = extractvalue { %"github.com/goplus/llgo/internal/runtime.iface", i1 } %69, 1
227226
%72 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
228227
%73 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 0
229-
store ptr @12, ptr %73, align 8
228+
store ptr @11, ptr %73, align 8
230229
%74 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %72, i32 0, i32 1
231230
store i64 4, ptr %74, align 4
232231
%75 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %72, align 8
@@ -399,7 +398,7 @@ _llgo_10: ; preds = %_llgo_9, %_llgo_7
399398
%77 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %76, i32 0, i32 0
400399
store ptr @5, ptr %77, align 8
401400
%78 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %76, i32 0, i32 1
402-
store i64 43, ptr %78, align 4
401+
store i64 4, ptr %78, align 4
403402
%79 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %76, align 8
404403
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %5, %"github.com/goplus/llgo/internal/runtime.String" %75, %"github.com/goplus/llgo/internal/runtime.String" %79, ptr %19, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %71)
405404
br label %_llgo_8
@@ -418,7 +417,7 @@ _llgo_12: ; preds = %_llgo_11, %_llgo_8
418417
_llgo_13: ; preds = %_llgo_12
419418
%84 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
420419
%85 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %84, i32 0, i32 0
421-
store ptr @6, ptr %85, align 8
420+
store ptr @5, ptr %85, align 8
422421
%86 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %84, i32 0, i32 1
423422
store i64 4, ptr %86, align 4
424423
%87 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %84, align 8
@@ -516,9 +515,9 @@ _llgo_15: ; preds = %_llgo_14
516515
%143 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %140, align 8
517516
%144 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
518517
%145 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %144, i32 0, i32 0
519-
store ptr @7, ptr %145, align 8
518+
store ptr @6, ptr %145, align 8
520519
%146 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %144, i32 0, i32 1
521-
store i64 10, ptr %146, align 4
520+
store i64 5, ptr %146, align 4
522521
%147 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %144, align 8
523522
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %2, %"github.com/goplus/llgo/internal/runtime.String" %143, %"github.com/goplus/llgo/internal/runtime.String" %147, ptr %105, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %139)
524523
br label %_llgo_16
@@ -557,7 +556,7 @@ _llgo_21: ; preds = %_llgo_20
557556
%159 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %156, align 8
558557
%160 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
559558
%161 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %160, i32 0, i32 0
560-
store ptr @8, ptr %161, align 8
559+
store ptr @7, ptr %161, align 8
561560
%162 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %160, i32 0, i32 1
562561
store i64 13, ptr %162, align 4
563562
%163 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %160, align 8
@@ -591,9 +590,9 @@ _llgo_21: ; preds = %_llgo_20
591590
%181 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %178, align 8
592591
%182 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
593592
%183 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %182, i32 0, i32 0
594-
store ptr @9, ptr %183, align 8
593+
store ptr @8, ptr %183, align 8
595594
%184 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %182, i32 0, i32 1
596-
store i64 10, ptr %184, align 4
595+
store i64 5, ptr %184, align 4
597596
%185 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %182, align 8
598597
call void @"github.com/goplus/llgo/internal/runtime.InitNamed"(ptr %154, %"github.com/goplus/llgo/internal/runtime.String" %181, %"github.com/goplus/llgo/internal/runtime.String" %185, ptr %155, { ptr, i64, i64 } zeroinitializer, %"github.com/goplus/llgo/internal/runtime.Slice" %177)
599598
br label %_llgo_22
@@ -662,7 +661,7 @@ _llgo_25: ; preds = %_llgo_24
662661
%221 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %218, align 8
663662
%222 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8
664663
%223 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %222, i32 0, i32 0
665-
store ptr @10, ptr %223, align 8
664+
store ptr @9, ptr %223, align 8
666665
%224 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %222, i32 0, i32 1
667666
store i64 44, ptr %224, align 4
668667
%225 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %222, align 8

0 commit comments

Comments
 (0)