summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2020-05-29 12:08:17 +0200
committerGitHub <noreply@github.com>2020-05-29 12:08:17 +0200
commite31ac81899767e4cebb706ed473dae7ff6f0afd7 (patch)
tree07dc41f3d9b45216bafd5fc6ab18bb629f4dd050 /compiler
parent4c08e64e9868dabca4a1a82979b74bda5c7d0329 (diff)
downloadNim-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.nim3
-rw-r--r--compiler/dfa.nim5
-rw-r--r--compiler/injectdestructors.nim2
-rw-r--r--compiler/sigmatch.nim6
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}