parent
f8146dfd84
commit
0cc6e12425
2 changed files with 27 additions and 1 deletions
|
|
@ -534,7 +534,15 @@ proc initLocExpr(p: BProc, e: PNode, result: var TLoc) =
|
|||
|
||||
proc initLocExprSingleUse(p: BProc, e: PNode, result: var TLoc) =
|
||||
initLoc(result, locNone, e, OnUnknown)
|
||||
result.flags.incl lfSingleUse
|
||||
if e.kind in nkCallKinds and (e[0].kind != nkSym or e[0].sym.magic == mNone):
|
||||
# We cannot check for tfNoSideEffect here because of mutable parameters.
|
||||
discard "bug #8202; enforce evaluation order for nested calls for C++ too"
|
||||
# We may need to consider that 'f(g())' cannot be rewritten to 'tmp = g(); f(tmp)'
|
||||
# if 'tmp' lacks a move/assignment operator.
|
||||
if e[0].kind == nkSym and sfConstructor in e[0].sym.flags:
|
||||
result.flags.incl lfSingleUse
|
||||
else:
|
||||
result.flags.incl lfSingleUse
|
||||
expr(p, e, result)
|
||||
|
||||
include ccgcalls, "ccgstmts.nim"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue