diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2020-05-29 12:08:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-29 12:08:17 +0200 |
commit | e31ac81899767e4cebb706ed473dae7ff6f0afd7 (patch) | |
tree | 07dc41f3d9b45216bafd5fc6ab18bb629f4dd050 /compiler | |
parent | 4c08e64e9868dabca4a1a82979b74bda5c7d0329 (diff) | |
download | Nim-e31ac81899767e4cebb706ed473dae7ff6f0afd7.tar.gz |
more checking for --gc:arc, no need for valgrind (#14467)
* sigmatch: removed dead code
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/cgen.nim | 3 | ||||
-rw-r--r-- | compiler/dfa.nim | 5 | ||||
-rw-r--r-- | compiler/injectdestructors.nim | 2 | ||||
-rw-r--r-- | compiler/sigmatch.nim | 6 |
4 files changed, 13 insertions, 3 deletions
diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 8fa824fcc..338b337f2 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -2067,7 +2067,8 @@ proc myClose(graph: ModuleGraph; b: PPassContext, n: PNode): PNode = let disp = generateMethodDispatchers(graph) for x in disp: genProcAux(m, x.sym) - m.g.modulesClosed.add m + let mm = m + m.g.modulesClosed.add mm proc genForwardedProcs(g: BModuleList) = # Forward declared proc:s lack bodies when first encountered, so they're given diff --git a/compiler/dfa.nim b/compiler/dfa.nim index 67a9e26d8..a0ec31ac6 100644 --- a/compiler/dfa.nim +++ b/compiler/dfa.nim @@ -809,4 +809,7 @@ proc constructCfg*(s: PSym; body: PNode): ControlFlowGraph = withBlock(s): gen(c, body) genImplicitReturn(c) - shallowCopy(result, c.code) + when defined(gcArc) or defined(gcOrc): + result = c.code # will move + else: + shallowCopy(result, c.code) diff --git a/compiler/injectdestructors.nim b/compiler/injectdestructors.nim index 5785df6d6..9cb777f2c 100644 --- a/compiler/injectdestructors.nim +++ b/compiler/injectdestructors.nim @@ -354,6 +354,8 @@ proc genWasMoved(n: PNode; c: var Con): PNode = result = newNodeI(nkCall, n.info) result.add(newSymNode(createMagic(c.graph, "wasMoved", mWasMoved))) result.add copyTree(n) #mWasMoved does not take the address + #if n.kind != nkSym: + # message(c.graph.config, n.info, warnUser, "wasMoved(" & $n & ")") proc genDefaultCall(t: PType; c: Con; info: TLineInfo): PNode = result = newNodeI(nkCall, info) diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index 401d160fa..e99269c41 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -993,6 +993,11 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, result = isNone assert(f != nil) + when declared(deallocatedRefId): + let corrupt = deallocatedRefId(cast[pointer](f)) + if corrupt != 0: + quit "it's corrupt " & $corrupt + if f.kind == tyUntyped: if aOrig != nil: put(c, f, aOrig) return isGeneric @@ -1409,7 +1414,6 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, let roota = a.skipGenericAlias let rootf = f.skipGenericAlias - var m = c if a.kind == tyGenericInst: if roota.base == rootf.base: let nextFlags = flags + {trNoCovariance} |