This commit is contained in:
Araq 2019-07-01 12:28:52 +02:00
commit 413dff03a0
2 changed files with 13 additions and 1 deletions

View file

@ -498,7 +498,7 @@ proc pArg(arg: PNode; c: var Con; isSink: bool): PNode =
# to disable the destructor which we have not elided # to disable the destructor which we have not elided
sinkParamIsLastReadCheck(c, arg) sinkParamIsLastReadCheck(c, arg)
result = destructiveMoveVar(arg, c) result = destructiveMoveVar(arg, c)
elif arg.kind == nkSym and arg.sym.kind in InterestingSyms and isLastRead(arg, c): elif isAnalysableFieldAccess(arg, c.owner) and isLastRead(arg, c):
# it is the last read, can be sinked. We need to reset the memory # it is the last read, can be sinked. We need to reset the memory
# to disable the destructor which we have not elided # to disable the destructor which we have not elided
result = destructiveMoveVar(arg, c) result = destructiveMoveVar(arg, c)

View file

@ -9,6 +9,7 @@ ha
a: @[4, 2, 3] a: @[4, 2, 3]
0 0
30 30
true
41 41''' 41 41'''
""" """
@ -190,6 +191,17 @@ proc mainSeqOfCap =
mainSeqOfCap() mainSeqOfCap()
# bug #11614
let ga = "foo"
proc takeAinArray =
let b = [ga]
takeAinArray()
echo ga == "foo"
#echo s #echo s
let (a, d) = allocCounters() let (a, d) = allocCounters()
discard cprintf("%ld %ld\n", a, d) discard cprintf("%ld %ld\n", a, d)