ssa: make block with label name for debug readable

This commit is contained in:
Li Jie
2024-08-03 20:51:43 +08:00
parent 0687efaec6
commit cdfa0166bd
4 changed files with 11 additions and 9 deletions

View File

@@ -318,7 +318,7 @@ func (p *context) compileBlock(b llssa.Builder, block *ssa.BasicBlock, n int, do
modPtr := pkg.PyNewModVar(modName, true).Expr
mod := b.Load(modPtr)
cond := b.BinOp(token.NEQ, mod, prog.Nil(mod.Type))
newBlk := fn.MakeBlock()
newBlk := fn.MakeBlock("")
b.If(cond, jumpTo, newBlk)
b.SetBlockEx(newBlk, llssa.AtEnd, false)
b.Store(modPtr, b.PyImportMod(modPath))

View File

@@ -293,13 +293,15 @@ func (p Function) MakeBlocks(nblk int) []BasicBlock {
p.blks = make([]BasicBlock, 0, nblk)
}
for i := 0; i < nblk; i++ {
p.addBlock(n + i)
p.addBlock(n+i, "")
}
return p.blks[n:]
}
func (p Function) addBlock(idx int) BasicBlock {
label := "_llgo_" + strconv.Itoa(idx)
func (p Function) addBlock(idx int, label string) BasicBlock {
if label == "" {
label = "_llgo_" + strconv.Itoa(idx)
}
blk := llvm.AddBasicBlock(p.impl, label)
ret := &aBasicBlock{blk, blk, p, idx}
p.blks = append(p.blks, ret)
@@ -307,8 +309,8 @@ func (p Function) addBlock(idx int) BasicBlock {
}
// MakeBlock creates a new basic block for the function.
func (p Function) MakeBlock() BasicBlock {
return p.addBlock(len(p.blks))
func (p Function) MakeBlock(label string) BasicBlock {
return p.addBlock(len(p.blks), label)
}
// Block returns the ith basic block of the function.

View File

@@ -162,7 +162,7 @@ func (b Builder) getDefer(kind DoAction) *aDefer {
czero := prog.IntVal(0, prog.CInt())
retval := b.Sigsetjmp(jb, czero)
if kind != DeferAlways {
rundBlk = self.MakeBlock()
rundBlk = self.MakeBlock("")
} else {
blks = self.MakeBlocks(2)
next, rundBlk = blks[0], blks[1]
@@ -228,7 +228,7 @@ func (b Builder) Defer(kind DoAction, fn Expr, args ...Expr) {
// RunDefers emits instructions to run deferred instructions.
func (b Builder) RunDefers() {
self := b.getDefer(DeferInCond)
blk := b.Func.MakeBlock()
blk := b.Func.MakeBlock("")
self.runsNext = append(self.runsNext, blk)
b.Store(self.rundPtr, blk.Addr())

View File

@@ -94,7 +94,7 @@ func (b Builder) setBlockMoveLast(blk BasicBlock) (next BasicBlock) {
impl := b.impl
next = b.Func.MakeBlock()
next = b.Func.MakeBlock("")
impl.SetInsertPointAtEnd(next.last)
impl.Insert(last)