diff --git a/cl/_testrt/callback/out.ll b/cl/_testrt/callback/out.ll index b1d0eba5..ae9e2a94 100644 --- a/cl/_testrt/callback/out.ll +++ b/cl/_testrt/callback/out.ll @@ -55,7 +55,7 @@ _llgo_0: declare void @"github.com/goplus/llgo/internal/runtime.init"() -define void @__llgo_stub.main.print(ptr %0, ptr %1) { +define linkonce void @__llgo_stub.main.print(ptr %0, ptr %1) { _llgo_0: call void @main.print(ptr %1) ret void diff --git a/cl/_testrt/intgen/out.ll b/cl/_testrt/intgen/out.ll index 2264b5e5..d12316e5 100644 --- a/cl/_testrt/intgen/out.ll +++ b/cl/_testrt/intgen/out.ll @@ -163,7 +163,7 @@ declare void @"github.com/goplus/llgo/internal/runtime.init"() declare i32 @rand() -define i32 @__llgo_stub.rand(ptr %0) { +define linkonce i32 @__llgo_stub.rand(ptr %0) { _llgo_0: %1 = call i32 @rand() ret i32 %1 diff --git a/cl/cltest/cltest.go b/cl/cltest/cltest.go index d44edca3..56914696 100644 --- a/cl/cltest/cltest.go +++ b/cl/cltest/cltest.go @@ -38,7 +38,7 @@ import ( func init() { cl.SetDebug(cl.DbgFlagAll) - llssa.Initialize(llssa.InitAll) + llssa.Initialize(llssa.InitAll | llssa.InitNative) llssa.SetDebug(llssa.DbgFlagAll) } diff --git a/ssa/package.go b/ssa/package.go index e58cff70..6065e83a 100644 --- a/ssa/package.go +++ b/ssa/package.go @@ -21,8 +21,8 @@ import ( "go/types" "log" - "github.com/goplus/llgo/internal/typeutil" "github.com/goplus/llvm" + "golang.org/x/tools/go/types/typeutil" ) const ( @@ -381,6 +381,7 @@ func (p Package) closureStub(b Builder, t *types.Struct, v Expr) Expr { ctx := types.NewParam(token.NoPos, nil, ClosureCtx, types.Typ[types.UnsafePointer]) sig = FuncAddCtx(ctx, sig) fn := p.NewFunc(ClosureStub+name, sig, InC) + fn.impl.SetLinkage(llvm.LinkOnceAnyLinkage) args := make([]Expr, n) for i := 0; i < n; i++ { args[i] = fn.Param(i + 1)