From 727730ad82407d51d8f730cfd2ba61ec82965842 Mon Sep 17 00:00:00 2001 From: 3dgen <476582@qq.com> Date: Mon, 19 Dec 2022 21:45:15 +0800 Subject: [PATCH] Fix a bug in function-value generating --- internal/backends/compiler_wat/compile_func.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/backends/compiler_wat/compile_func.go b/internal/backends/compiler_wat/compile_func.go index 1b841c4..a85b230 100644 --- a/internal/backends/compiler_wat/compile_func.go +++ b/internal/backends/compiler_wat/compile_func.go @@ -142,6 +142,12 @@ func (g *functionGenerator) getValue(i ssa.Value) valueWrap { fn_name, _ := GetFnMangleName(v) fn_sig := wir.NewFnSigFromSignature(v.Signature) + if v.Parent() != nil { + if g.module.FindFunc(fn_name) == nil { + g.module.AddFunc(newFunctionGenerator(g.module).genFunction(v)) + } + } + return valueWrap{value: wir.GenConstFnValue(fn_name, fn_sig)} } @@ -498,7 +504,7 @@ func (g *functionGenerator) genBuiltin(call *ssa.CallCommon) (insts []wat.Inst, for _, arg := range call.Args { arg := g.getValue(arg) switch arg.value.Type().(type) { - case wir.I32: + case wir.I32, wir.U32: insts = append(insts, arg.value.EmitPush()...) insts = append(insts, wat.NewInstCall("$runtime.waPrintI32")) -- GitLab