diff --git a/generator/blockmanager.go b/generator/blockmanager.go index b24b3c5..f1c3a09 100644 --- a/generator/blockmanager.go +++ b/generator/blockmanager.go @@ -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 }