From 5bfeea67d7636319d1ae72aa1a26c5b69aa6e01e Mon Sep 17 00:00:00 2001 From: tsingbx Date: Fri, 17 May 2024 09:31:48 +0800 Subject: [PATCH] change main return to C int --- cl/_testlibc/argv/out.ll | 32 ++++++++++++++++---------------- cl/_testpy/pi/out.ll | 4 ++-- cl/compile.go | 4 ++-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/cl/_testlibc/argv/out.ll b/cl/_testlibc/argv/out.ll index 9253ebe4..d70c5ede 100644 --- a/cl/_testlibc/argv/out.ll +++ b/cl/_testlibc/argv/out.ll @@ -19,30 +19,30 @@ _llgo_2: ; preds = %_llgo_1, %_llgo_0 ret void } -define void @main(i32 %0, ptr %1) { +define i32 @main(i32 %0, ptr %1) { _llgo_0: store i32 %0, ptr @__llgo_argc, align 4 store ptr %1, ptr @__llgo_argv, align 8 call void @"github.com/goplus/llgo/internal/runtime.init"() call void @main.init() - br label %_llgo_3 + br label %_llgo_1 -_llgo_1: ; preds = %_llgo_3 - %2 = load ptr, ptr @__llgo_argv, align 8 - %3 = getelementptr ptr, ptr %2, i32 %7 - %4 = load ptr, ptr %3, align 8 - %5 = call i32 (ptr, ...) @printf(ptr @0, ptr %4) - %6 = add i32 %7, 1 - br label %_llgo_3 +_llgo_1: ; preds = %_llgo_2, %_llgo_0 + %2 = phi i32 [ 0, %_llgo_0 ], [ %9, %_llgo_2 ] + %3 = load i32, ptr @__llgo_argc, align 4 + %4 = icmp slt i32 %2, %3 + br i1 %4, label %_llgo_2, label %_llgo_3 -_llgo_2: ; preds = %_llgo_3 - ret void +_llgo_2: ; preds = %_llgo_1 + %5 = load ptr, ptr @__llgo_argv, align 8 + %6 = getelementptr ptr, ptr %5, i32 %2 + %7 = load ptr, ptr %6, align 8 + %8 = call i32 (ptr, ...) @printf(ptr @0, ptr %7) + %9 = add i32 %2, 1 + br label %_llgo_1 -_llgo_3: ; preds = %_llgo_1, %_llgo_0 - %7 = phi i32 [ 0, %_llgo_0 ], [ %6, %_llgo_1 ] - %8 = load i32, ptr @__llgo_argc, align 4 - %9 = icmp slt i32 %7, %8 - br i1 %9, label %_llgo_1, label %_llgo_2 +_llgo_3: ; preds = %_llgo_1 + ret i32 0 } declare void @"github.com/goplus/llgo/internal/runtime.init"() diff --git a/cl/_testpy/pi/out.ll b/cl/_testpy/pi/out.ll index 696cb264..78809604 100644 --- a/cl/_testpy/pi/out.ll +++ b/cl/_testpy/pi/out.ll @@ -22,7 +22,7 @@ _llgo_2: ; preds = %_llgo_1, %_llgo_0 ret void } -define void @main(i32 %0, ptr %1) { +define i32 @main(i32 %0, ptr %1) { _llgo_0: call void @Py_Initialize() store i32 %0, ptr @__llgo_argc, align 4 @@ -33,7 +33,7 @@ _llgo_0: %3 = call ptr @PyObject_GetAttrString(ptr %2, ptr @1) %4 = call double @PyFloat_AsDouble(ptr %3) %5 = call i32 (ptr, ...) @printf(ptr @0, double %4) - ret void + ret i32 0 } declare void @"github.com/goplus/llgo/py/math.init"() diff --git a/cl/compile.go b/cl/compile.go index 5a449481..d403d8b7 100644 --- a/cl/compile.go +++ b/cl/compile.go @@ -241,7 +241,7 @@ func (p *context) compileFuncDecl(pkg llssa.Package, f *ssa.Function) (llssa.Fun ctx := makeClosureCtx(pkgTypes, f.FreeVars) sig = llssa.FuncAddCtx(ctx, sig) } else { - if debugInstr && sig != nil && sig.Recv() != nil { + if debugInstr { log.Println("==> NewFunc", name, "type:", sig.Recv(), sig, "ftype:", ftype) } } @@ -250,7 +250,7 @@ func (p *context) compileFuncDecl(pkg llssa.Package, f *ssa.Function) (llssa.Fun argc := types.NewParam(token.NoPos, pkgTypes, "", types.Typ[types.Int32]) argv := types.NewParam(token.NoPos, pkgTypes, "", argvTy) params := types.NewTuple(argc, argv) - ret := types.NewParam(token.NoPos, pkgTypes, "", types.Typ[types.Int]) + ret := types.NewParam(token.NoPos, pkgTypes, "", p.prog.CInt().RawType()) results := types.NewTuple(ret) sig = types.NewSignatureType(nil, nil, nil, params, results, false) }