summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/ccgexprs.nim9
1 files changed, 4 insertions, 5 deletions
diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim
index ece452602..9d1731708 100644
--- a/compiler/ccgexprs.nim
+++ b/compiler/ccgexprs.nim
@@ -1930,12 +1930,11 @@ proc genMove(p: BProc; n: PNode; d: var TLoc) =
   initLocExpr(p, n[1].skipAddr, a)
   if n.len == 4:
     # generated by liftdestructors:
-    var src, destroyCall: TLoc
+    var src: TLoc
     initLocExpr(p, n[2], src)
-    initLocExpr(p, n[3], destroyCall)
-    linefmt(p, cpsStmts, "if ($1.len && $1.p != $2.p) { $3; }$n" &
-      "$1.len = $2.len; $1.p = $2.p;$n",
-      [rdLoc(a), rdLoc(src), rdLoc(destroyCall)])
+    linefmt(p, cpsStmts, "if ($1.len && $1.p != $2.p) {", [rdLoc(a), rdLoc(src)])
+    genStmts(p, n[3])
+    linefmt(p, cpsStmts, "}$n$1.len = $2.len; $1.p = $2.p;$n", [rdLoc(a), rdLoc(src)])
   else:
     if d.k == locNone: getTemp(p, n.typ, d)
     genAssignment(p, d, a, {})