change main return to C int
This commit is contained in:
@@ -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"()
|
||||
|
||||
@@ -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"()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user