Fix bug with popping block managers off of the stack

This commit is contained in:
Sasha Koshka 2023-12-05 22:27:55 -05:00
parent 2fa3cc1762
commit e06fd099ce
1 changed files with 8 additions and 3 deletions

View File

@ -20,21 +20,26 @@ type blockManager struct {
loops []*loopEntry
}
func (this *blockManager) String () string {
return fmt.Sprint(this.function.Name())
}
func (this *generator) pushBlockManager (function *llvm.Function) *blockManager {
manager := new(blockManager)
this.managerStack = append(this.managerStack, manager)
manager.generator = this
manager.function = function
manager.newBlock()
manager.declarations = make(map[*entity.Declaration] llvm.Value)
this.managerStack = append(this.managerStack, manager)
this.blockManager = manager
return manager
}
func (this *generator) popBlockManager () {
this.managerStack = this.managerStack[:len(this.managerStack) - 1]
if len(this.managerStack) > 0 {
this.blockManager = this.managerStack[0]
this.blockManager = this.managerStack[len(this.managerStack) - 1]
} else {
this.blockManager = nil
}