change main return to C int

This commit is contained in:
tsingbx
2024-05-17 09:31:48 +08:00
parent 057af792df
commit 5bfeea67d7
3 changed files with 20 additions and 20 deletions

View File

@@ -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"()

View File

@@ -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"()

View File

@@ -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)
}