From 419dbd573d91c493f80c75fa23fae1dd6fece18e Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Sun, 7 Jun 2020 20:11:42 +0200 Subject: [PATCH] fixes #14118 (#14595) --- compiler/injectdestructors.nim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/compiler/injectdestructors.nim b/compiler/injectdestructors.nim index 9cb777f2c1..c13c93b00f 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: