free some registers after usage, allows more complex macros (#10443)

This commit is contained in:
Arne Döring
2019-01-24 11:33:44 +01:00
committed by Andreas Rumpf
parent 15ee5d65d1
commit 6555d89c2c

View File

@@ -326,8 +326,14 @@ proc genWhile(c: PCtx; n: PNode) =
c.patch(L2)
proc genBlock(c: PCtx; n: PNode; dest: var TDest) =
let oldRegisterCount = c.prc.maxSlots
withBlock(n.sons[0].sym):
c.gen(n.sons[1], dest)
for i in oldRegisterCount ..< c.prc.maxSlots:
if c.prc.slots[i].kind in {slotFixedVar, slotFixedLet}:
c.prc.slots[i] = (inUse: false, kind: slotEmpty)
c.clearDest(n, dest)
proc genBreak(c: PCtx; n: PNode) =