summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2020-06-07 20:11:42 +0200
committerGitHub <noreply@github.com>2020-06-07 20:11:42 +0200
commit419dbd573d91c493f80c75fa23fae1dd6fece18e (patch)
tree330b36b37d884085f2f324834512dcb2fa7eec34 /compiler
parent66c50c2ffcfdd31f9f1eecfaf23b1b58b22d3a36 (diff)
downloadNim-419dbd573d91c493f80c75fa23fae1dd6fece18e.tar.gz
fixes #14118 (#14595)
Diffstat (limited to 'compiler')
-rw-r--r--compiler/injectdestructors.nim5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/injectdestructors.nim b/compiler/injectdestructors.nim
index 9cb777f2c..c13c93b00 100644
--- a/compiler/injectdestructors.nim
+++ b/compiler/injectdestructors.nim
@@ -277,8 +277,11 @@ proc canBeMoved(c: Con; t: PType): bool {.inline.} =
   else:
     result = t.attachedOps[attachedSink] != nil
 
+proc isNoInit(dest: PNode): bool {.inline.} =
+  result = dest.kind == nkSym and sfNoInit in dest.sym.flags
+
 proc genSink(c: var Con; dest, ri: PNode): PNode =
-  if isUnpackedTuple(dest) or isFirstWrite(dest, c):
+  if isUnpackedTuple(dest) or isFirstWrite(dest, c) or isNoInit(dest):
     # optimize sink call into a bitwise memcopy
     result = newTree(nkFastAsgn, dest, ri)
   else: