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
commit 70b9e9962f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 130 additions and 147 deletions

View file

@ -632,10 +632,8 @@ proc aliases*(obj, field: PNode): AliasKind =
case currFieldPath.kind
of nkSym:
if currFieldPath.sym != currObjPath.sym: return no
of nkDotExpr:
of nkDotExpr, nkCheckedFieldExpr:
if currFieldPath[1].sym != currObjPath[1].sym: return no
of nkCheckedFieldExpr:
if currFieldPath[0][1].sym != currObjPath[0][1].sym: return no
of nkBracketExpr:
if currFieldPath[1].kind in nkLiterals and currObjPath[1].kind in nkLiterals:
if currFieldPath[1].intVal != currObjPath[1].intVal:
@ -644,6 +642,19 @@ proc aliases*(obj, field: PNode): AliasKind =
result = maybe
else: assert false # unreachable
type InstrTargetKind* = enum
None, Full, Partial
proc instrTargets*(insloc, loc: PNode): InstrTargetKind =
case insloc.aliases(loc)
of yes:
Full # x -> x; x -> x.f
of maybe:
Partial # We treat this like a partial write/read
elif loc.aliases(insloc) != no:
Partial # x.f -> x
else: None
proc isAnalysableFieldAccess*(orig: PNode; owner: PSym): bool =
var n = orig
while true: