disjoint checker works with the new countup iterators

This commit is contained in:
Araq 2015-03-14 01:26:18 +01:00
commit 2f4472963f

View file

@ -317,8 +317,9 @@ proc analyseIf(c: var AnalysisCtx; n: PNode) =
proc analyse(c: var AnalysisCtx; n: PNode) = proc analyse(c: var AnalysisCtx; n: PNode) =
case n.kind case n.kind
of nkAsgn, nkFastAsgn: of nkAsgn, nkFastAsgn:
if n[0].isSingleAssignable and n[1].isLocal: let y = n[1].skipConv
let slot = c.getSlot(n[1].sym) if n[0].isSingleAssignable and y.isLocal:
let slot = c.getSlot(y.sym)
slot.alias = n[0].sym slot.alias = n[0].sym
elif n[0].isLocal: elif n[0].isLocal:
# since we already ensure sfAddrTaken is not in s.flags, we only need to # since we already ensure sfAddrTaken is not in s.flags, we only need to
@ -334,7 +335,7 @@ proc analyse(c: var AnalysisCtx; n: PNode) =
analyse(c, n[0]) analyse(c, n[0])
else: else:
analyseSons(c, n) analyseSons(c, n)
addAsgnFact(c.guards, n[0], n[1]) addAsgnFact(c.guards, n[0], y)
of nkCallKinds: of nkCallKinds:
# direct call: # direct call:
if n[0].kind == nkSym: analyseCall(c, n, n[0].sym) if n[0].kind == nkSym: analyseCall(c, n, n[0].sym)