c.GoDeferData; llgo/ssa: rm excepKey
This commit is contained in:
@@ -1,12 +1,13 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import "github.com/goplus/llgo/c"
|
import "github.com/goplus/llgo/internal/runtime/c"
|
||||||
|
|
||||||
func f(s string) bool {
|
func f(s string) bool {
|
||||||
return len(s) > 2
|
return len(s) > 2
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
c.GoDeferData()
|
||||||
if s := "hello"; f(s) {
|
if s := "hello"; f(s) {
|
||||||
defer c.Printf(c.Str("%s\n"), c.AllocaCStr(s))
|
defer c.Printf(c.Str("%s\n"), c.AllocaCStr(s))
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ func TestMakeInterface(t *testing.T) {
|
|||||||
b := fn.MakeBody(1)
|
b := fn.MakeBody(1)
|
||||||
b.MakeInterface(prog.Any(), prog.IntVal(100, prog.Int64()))
|
b.MakeInterface(prog.Any(), prog.IntVal(100, prog.Int64()))
|
||||||
b.MakeInterface(prog.Any(), prog.FloatVal(100, prog.Float64()))
|
b.MakeInterface(prog.Any(), prog.FloatVal(100, prog.Float64()))
|
||||||
|
b.DeferData()
|
||||||
b.Return()
|
b.Return()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,6 @@ func (b Builder) Siglongjmp(jb, retval Expr) {
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
deferKey = "__llgo_defer"
|
deferKey = "__llgo_defer"
|
||||||
excepKey = "__llgo_ex"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (p Function) deferInitBuilder() (b Builder, next BasicBlock) {
|
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)
|
return b.Load(b.Pkg.newKey(deferKey).Expr)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b Builder) excepKey() Expr {
|
|
||||||
return b.Load(b.Pkg.newKey(excepKey).Expr)
|
|
||||||
}
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// 0: addr sigjmpbuf
|
// 0: addr sigjmpbuf
|
||||||
// 1: bits uintptr
|
// 1: bits uintptr
|
||||||
|
|||||||
@@ -621,7 +621,6 @@ func (p Package) afterBuilder() Builder {
|
|||||||
// AfterInit is called after the package is initialized (init all packages that depends on).
|
// AfterInit is called after the package is initialized (init all packages that depends on).
|
||||||
func (p Package) AfterInit(b Builder, ret BasicBlock) {
|
func (p Package) AfterInit(b Builder, ret BasicBlock) {
|
||||||
p.keyInit(deferKey)
|
p.keyInit(deferKey)
|
||||||
p.keyInit(excepKey)
|
|
||||||
doAfterb := p.afterb != nil
|
doAfterb := p.afterb != nil
|
||||||
doPyLoadModSyms := p.pyHasModSyms()
|
doPyLoadModSyms := p.pyHasModSyms()
|
||||||
if doAfterb || doPyLoadModSyms {
|
if doAfterb || doPyLoadModSyms {
|
||||||
|
|||||||
Reference in New Issue
Block a user