Revert "ARC: Analysis in one pass v2 (#17000)" (#17046)

This reverts commit 216be4060a.
This commit is contained in:
Clyybber
2021-02-15 18:31:15 +01:00
committed by GitHub
parent 00f86f5591
commit 70b9e9962f
7 changed files with 130 additions and 147 deletions

View File

@@ -93,6 +93,7 @@ destroy
destroy
destroy
sink
sink
destroy
copy
(f: 1)
@@ -686,7 +687,7 @@ caseNotAConstant()
proc potentialSelfAssign(i: var int) =
var a: array[2, OO]
a[i] = OO(f: 1) # turned into a memcopy
a[i] = OO(f: 1)
a[1] = OO(f: 2)
a[i+1] = a[i] # This must not =sink, but =copy
inc i
@@ -743,30 +744,3 @@ proc partToWholeUnownedRef =
partToWholeUnownedRef()
#--------------------------------------------------------------------
# test that nodes that get copied during the transformation
# (like dot exprs) don't loose their firstWrite/lastRead property
type
OOO = object
initialized: bool
C = object
o: OOO
proc `=destroy`(o: var OOO) =
doAssert o.initialized, "OOO was destroyed before initialization!"
proc initO(): OOO =
OOO(initialized: true)
proc initC(): C =
C(o: initO())
proc pair(): tuple[a: C, b: C] =
result.a = initC() # <- when firstWrite tries to find this node to start its analysis it fails, because injectdestructors uses copyTree/shallowCopy
result.b = initC()
discard pair()

View File

@@ -52,7 +52,7 @@ _ = (
blitTmp, ";")
lvalue = _[0]
lnext = _[1]
result.value = move lvalue
`=sink`(result.value, move lvalue)
`=destroy`(lnext)
`=destroy_1`(lvalue)
-- end of expandArc ------------------------