diff --git a/cl/_testlibc/defer/in.go b/cl/_testlibc/defer/in.go index 8395a818..ab8362c3 100644 --- a/cl/_testlibc/defer/in.go +++ b/cl/_testlibc/defer/in.go @@ -1,12 +1,13 @@ package main -import "github.com/goplus/llgo/c" +import "github.com/goplus/llgo/internal/runtime/c" func f(s string) bool { return len(s) > 2 } func main() { + c.GoDeferData() if s := "hello"; f(s) { defer c.Printf(c.Str("%s\n"), c.AllocaCStr(s)) } else { diff --git a/ssa/cl_test.go b/ssa/cl_test.go index 70f7f455..be5cde02 100644 --- a/ssa/cl_test.go +++ b/ssa/cl_test.go @@ -52,6 +52,7 @@ func TestMakeInterface(t *testing.T) { b := fn.MakeBody(1) b.MakeInterface(prog.Any(), prog.IntVal(100, prog.Int64())) b.MakeInterface(prog.Any(), prog.FloatVal(100, prog.Float64())) + b.DeferData() b.Return() } diff --git a/ssa/eh.go b/ssa/eh.go index d12be00c..e4ade559 100644 --- a/ssa/eh.go +++ b/ssa/eh.go @@ -76,7 +76,6 @@ func (b Builder) Siglongjmp(jb, retval Expr) { const ( deferKey = "__llgo_defer" - excepKey = "__llgo_ex" ) func (p Function) deferInitBuilder() (b Builder, next BasicBlock) { @@ -121,10 +120,6 @@ func (b Builder) deferKey() Expr { return b.Load(b.Pkg.newKey(deferKey).Expr) } -func (b Builder) excepKey() Expr { - return b.Load(b.Pkg.newKey(excepKey).Expr) -} - const ( // 0: addr sigjmpbuf // 1: bits uintptr diff --git a/ssa/package.go b/ssa/package.go index 2d0f3e09..253e8195 100644 --- a/ssa/package.go +++ b/ssa/package.go @@ -621,7 +621,6 @@ func (p Package) afterBuilder() Builder { // AfterInit is called after the package is initialized (init all packages that depends on). func (p Package) AfterInit(b Builder, ret BasicBlock) { p.keyInit(deferKey) - p.keyInit(excepKey) doAfterb := p.afterb != nil doPyLoadModSyms := p.pyHasModSyms() if doAfterb || doPyLoadModSyms {