From 42a5c6a19f6c0bc57bc9996373ca09a228911e71 Mon Sep 17 00:00:00 2001 From: xushiwei Date: Wed, 12 Jun 2024 23:17:10 +0800 Subject: [PATCH] c.GoDeferData; llgo/ssa: rm excepKey --- cl/_testlibc/defer/in.go | 3 ++- ssa/cl_test.go | 1 + ssa/eh.go | 5 ----- ssa/package.go | 1 - 4 files changed, 3 insertions(+), 7 deletions(-) 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 {