vkFuncDecl, vkFuncPtr, vkClosure; callback example
This commit is contained in:
@@ -35,6 +35,33 @@ func TestRuntime(t *testing.T) {
|
||||
cltest.Pkg(t, "github.com/goplus/llgo/internal/abi", "../internal/abi/llgo_autogen.ll")
|
||||
}
|
||||
|
||||
/*
|
||||
func TestCallback(t *testing.T) {
|
||||
ctx := llvm.NewContext()
|
||||
mod := ctx.NewModule("foo/bar")
|
||||
|
||||
tc := llvm.FunctionType(ctx.VoidType(), nil, false)
|
||||
callback := llvm.PointerType(tc, 0)
|
||||
params := []llvm.Type{callback}
|
||||
|
||||
tfn := llvm.FunctionType(ctx.VoidType(), params, false)
|
||||
f := llvm.AddFunction(mod, "fn", tfn)
|
||||
b := ctx.NewBuilder()
|
||||
blk := llvm.AddBasicBlock(f, "")
|
||||
b.SetInsertPointAtEnd(blk)
|
||||
|
||||
arg := f.Param(0)
|
||||
// arg = b.CreateLoad(tc, arg, "")
|
||||
b.CreateCall(tc, arg, nil, "")
|
||||
b.CreateRetVoid()
|
||||
|
||||
expected := `; ModuleID = 'foo/bar'
|
||||
`
|
||||
if v := mod.String(); v != expected {
|
||||
t.Fatalf("\n==> got:\n%s\n==> expected:\n%s\n", v, expected)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func TestMap(t *testing.T) {
|
||||
var m typeutil.Map
|
||||
|
||||
Reference in New Issue
Block a user