From faa4042e26619043b63a25f2b8c4b1ccb70ab0f8 Mon Sep 17 00:00:00 2001 From: narimiran Date: Tue, 18 Mar 2025 08:49:45 +0100 Subject: [PATCH] Revert "implements internal sink copy (#24747)" This reverts commit 6651c40ba022f84bdc77f5997a9d9a30ba4f9414. --- compiler/ccgcalls.nim | 29 +++++++++++++++ compiler/ccgutils.nim | 3 ++ compiler/injectdestructors.nim | 64 ++-------------------------------- compiler/trees.nim | 29 --------------- 4 files changed, 35 insertions(+), 90 deletions(-) diff --git a/compiler/ccgcalls.nim b/compiler/ccgcalls.nim index e022c64986..0bf16ba9f8 100644 --- a/compiler/ccgcalls.nim +++ b/compiler/ccgcalls.nim @@ -387,6 +387,35 @@ proc skipTrivialIndirections(n: PNode): PNode = result = result[1] else: break +proc getPotentialWrites(n: PNode; mutate: bool; result: var seq[PNode]) = + case n.kind: + of nkLiterals, nkIdent, nkFormalParams: discard + of nkSym: + if mutate: result.add n + of nkAsgn, nkFastAsgn, nkSinkAsgn: + getPotentialWrites(n[0], true, result) + getPotentialWrites(n[1], mutate, result) + of nkAddr, nkHiddenAddr: + getPotentialWrites(n[0], true, result) + of nkBracketExpr, nkDotExpr, nkCheckedFieldExpr: + getPotentialWrites(n[0], mutate, result) + of nkCallKinds: + case n.getMagic: + of mIncl, mExcl, mInc, mDec, mAppendStrCh, mAppendStrStr, mAppendSeqElem, + mAddr, mNew, mNewFinalize, mWasMoved, mDestroy: + getPotentialWrites(n[1], true, result) + for i in 2.. conf.target.floatSize * 3): result = true # requested anyway elif (tfFinal in pt.flags) and (pt[0] == nil): diff --git a/compiler/injectdestructors.nim b/compiler/injectdestructors.nim index 90c83124b1..57949dbc4f 100644 --- a/compiler/injectdestructors.nim +++ b/compiler/injectdestructors.nim @@ -17,7 +17,7 @@ import ast, astalgo, msgs, renderer, magicsys, types, idents, options, lowerings, modulegraphs, lineinfos, parampatterns, sighashes, liftdestructors, optimizer, - varpartitions, aliasanalysis, dfa, wordrecg, trees + varpartitions, aliasanalysis, dfa, wordrecg import std/[strtabs, tables, strutils, intsets] @@ -1244,55 +1244,6 @@ when false: for i in 0.. 0: - result.add replaceSinkParam(n, mapping) - else: - result = n - proc injectDestructorCalls*(g: ModuleGraph; idgen: IdGenerator; owner: PSym; n: PNode): PNode = when toDebug.len > 0: shouldDebug = toDebug == owner.name.s or toDebug == "always" @@ -1306,24 +1257,15 @@ proc injectDestructorCalls*(g: ModuleGraph; idgen: IdGenerator; owner: PSym; n: var scope = Scope(body: n) let body = p(n, c, scope, normal) - var sinkParams = newSeq[PSym]() - if owner.kind in {skProc, skFunc, skMethod, skIterator, skConverter}: let params = owner.typ.n for i in 1.. 0: - result = addSinkCopy(c, scope, sinkParams, result) - dbg: echo ">---------transformed-to--------->" echo renderTree(result, {renderIds}) diff --git a/compiler/trees.nim b/compiler/trees.nim index 6d9c0272d6..da58878f82 100644 --- a/compiler/trees.nim +++ b/compiler/trees.nim @@ -243,32 +243,3 @@ proc isRunnableExamples*(n: PNode): bool = proc skipAddr*(n: PNode): PNode {.inline.} = result = if n.kind in {nkAddr, nkHiddenAddr}: n[0] else: n - -proc getPotentialWrites*(n: PNode; mutate: bool; result: var seq[PNode]) = - case n.kind: - of nkLiterals, nkIdent, nkFormalParams: discard - of nkSym: - if mutate: result.add n - of nkAsgn, nkFastAsgn, nkSinkAsgn: - getPotentialWrites(n[0], true, result) - getPotentialWrites(n[1], mutate, result) - of nkAddr, nkHiddenAddr: - getPotentialWrites(n[0], true, result) - of nkBracketExpr, nkDotExpr, nkCheckedFieldExpr: - getPotentialWrites(n[0], mutate, result) - of nkCallKinds: - case n.getMagic: - of mIncl, mExcl, mInc, mDec, mAppendStrCh, mAppendStrStr, mAppendSeqElem, - mAddr, mNew, mNewFinalize, mWasMoved, mDestroy: - getPotentialWrites(n[1], true, result) - for i in 2..