DFA: fixes wrong 'def' instruction emission

This commit is contained in:
Andreas Rumpf
2019-03-05 05:54:08 +01:00
parent 71fd4acaeb
commit 9c6b628df6

View File

@@ -594,11 +594,12 @@ proc genCall(c: var Con; n: PNode) =
inc c.inCall
for i in 1..<n.len:
gen(c, n[i])
if t != nil and i < t.len and t.sons[i].kind == tyVar:
# XXX This is wrong! Pass by var is a 'might def', not a 'must def'
# like the other defs we emit. This is not good enough for a move
# optimizer.
genDef(c, n[i])
when false:
if t != nil and i < t.len and t.sons[i].kind == tyVar:
# XXX This is wrong! Pass by var is a 'might def', not a 'must def'
# like the other defs we emit. This is not good enough for a move
# optimizer.
genDef(c, n[i])
# every call can potentially raise:
if c.inTryStmt > 0 and canRaise(n[0]):
# we generate the instruction sequence: