diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2019-10-25 00:45:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-25 00:45:06 +0200 |
commit | e0d13abaff1192ae6b1f4ae5cd89ae742627b680 (patch) | |
tree | 0b4924c9d36c199b7b0bc1e91e45a00a595c3e02 | |
parent | 8040c84615a54a9a51526b73e01d653d0f8c06db (diff) | |
download | Nim-e0d13abaff1192ae6b1f4ae5cd89ae742627b680.tar.gz |
VM: fixes register leaks [backport] (#12510)
-rw-r--r-- | compiler/vmgen.nim | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim index 0718ac6b4..eae600f76 100644 --- a/compiler/vmgen.nim +++ b/compiler/vmgen.nim @@ -1443,6 +1443,7 @@ proc genDeref(c: PCtx, n: PNode, dest: var TDest, flags: TGenFlags) = assert n.typ != nil if {gfNodeAddr, gfNode} * flags == {} and fitsRegister(n.typ): c.gABC(n, opcNodeToReg, dest, dest) + c.freeTemp(tmp) proc genAsgn(c: PCtx; dest: TDest; ri: PNode; requiresCopy: bool) = let tmp = c.genx(ri) @@ -1532,6 +1533,7 @@ proc genAsgn(c: PCtx; le, ri: PNode; requiresCopy: bool) = c.preventFalseAlias(le, opcWrObj, dest, idx, tmp) c.freeTemp(idx) c.freeTemp(tmp) + c.freeTemp(dest) of nkDerefExpr, nkHiddenDeref: let dest = c.genx(le.sons[0], {gfNode}) let tmp = c.genx(ri) |