summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2019-10-29 15:07:04 +0100
committerAraq <rumpf_a@web.de>2019-10-29 15:07:04 +0100
commit1214960a1bde9b45c76caaff0cdea7d2d753b205 (patch)
tree73823589dfb5ea52e30b5b7e724906e485d66b1c
parentde5f6a07c239ccf5ca3d41d70350a37112025bcf (diff)
downloadNim-1214960a1bde9b45c76caaff0cdea7d2d753b205.tar.gz
fixes #12547 [backport]
-rw-r--r--compiler/vmgen.nim7
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim
index eae600f76..0dc55862c 100644
--- a/compiler/vmgen.nim
+++ b/compiler/vmgen.nim
@@ -231,6 +231,12 @@ proc getTemp(cc: PCtx; tt: PType): TRegister =
   # for e.g. mNAdd[Multiple]:
   let k = if typ.isNil: slotTempComplex else: typ.getSlotKind
   result = getFreeRegister(cc, k, start = 0)
+  when false:
+    # enable this to find "register" leaks:
+    if result == 4:
+      echo "begin ---------------"
+      writeStackTrace()
+      echo "end ----------------"
 
 proc freeTemp(c: PCtx; r: TRegister) =
   let c = c.prc
@@ -1703,6 +1709,7 @@ proc genCheckedObjAccessAux(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags
   let setLit = c.genx(checkExpr[1])
   var rs = c.getTemp(getSysType(c.graph, n.info, tyBool))
   c.gABC(n, opcContainsSet, rs, setLit, discVal)
+  c.freeTemp(discVal)
   c.freeTemp(setLit)
   # If the check fails let the user know
   let lab1 = c.xjmp(n, if negCheck: opcFJmp else: opcTJmp, rs)