diff options
-rw-r--r-- | compiler/cgen.nim | 5 | ||||
-rw-r--r-- | compiler/depends.nim | 5 | ||||
-rw-r--r-- | compiler/sem.nim | 7 | ||||
-rw-r--r-- | compiler/semcall.nim | 2 | ||||
-rw-r--r-- | compiler/seminst.nim | 2 | ||||
-rw-r--r-- | compiler/semstmts.nim | 2 | ||||
-rw-r--r-- | compiler/sigmatch.nim | 5 | ||||
-rw-r--r-- | compiler/vm.nim | 9 |
8 files changed, 26 insertions, 11 deletions
diff --git a/compiler/cgen.nim b/compiler/cgen.nim index a5ee6c7ca..9e356206f 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -1824,7 +1824,10 @@ template injectG() {.dirty.} = graph.backend = newModuleList(graph) let g = BModuleList(graph.backend) -proc myOpen(graph: ModuleGraph; module: PSym): PPassContext = +when not defined(nimHasSinkInference): + {.pragma: nosinks.} + +proc myOpen(graph: ModuleGraph; module: PSym): PPassContext {.nosinks.} = injectG() result = newModule(g, module, graph.config) if optGenIndex in graph.config.globalOptions and g.generatedHeader == nil: diff --git a/compiler/depends.nim b/compiler/depends.nim index 3d252c2a2..cc385da4b 100644 --- a/compiler/depends.nim +++ b/compiler/depends.nim @@ -51,7 +51,10 @@ proc generateDot*(graph: ModuleGraph; project: AbsoluteFile) = rope(project.splitFile.name), b.dotGraph], changeFileExt(project, "dot")) -proc myOpen(graph: ModuleGraph; module: PSym): PPassContext = +when not defined(nimHasSinkInference): + {.pragma: nosinks.} + +proc myOpen(graph: ModuleGraph; module: PSym): PPassContext {.nosinks.} = var g: PGen new(g) g.module = module diff --git a/compiler/sem.nim b/compiler/sem.nim index aa5928c18..62e3ca8db 100644 --- a/compiler/sem.nim +++ b/compiler/sem.nim @@ -377,6 +377,9 @@ proc semExprFlagDispatched(c: PContext, n: PNode, flags: TExprFlags): PNode = evaluated = evalAtCompileTime(c, result) if evaluated != nil: return evaluated +when not defined(nimHasSinkInference): + {.pragma: nosinks.} + include hlo, seminst, semcall when false: @@ -501,7 +504,7 @@ proc addCodeForGenerics(c: PContext, n: PNode) = n.add prc.ast c.lastGenericIdx = c.generics.len -proc myOpen(graph: ModuleGraph; module: PSym): PPassContext = +proc myOpen(graph: ModuleGraph; module: PSym): PPassContext {.nosinks.} = var c = newContext(graph, module) if c.p != nil: internalError(graph.config, module.info, "sem.myOpen") c.semConstExpr = semConstExpr @@ -592,7 +595,7 @@ proc recoverContext(c: PContext) = while getCurrOwner(c).kind != skModule: popOwner(c) while c.p != nil and c.p.owner.kind != skModule: c.p = c.p.next -proc myProcess(context: PPassContext, n: PNode): PNode = +proc myProcess(context: PPassContext, n: PNode): PNode {.nosinks.} = var c = PContext(context) # no need for an expensive 'try' if we stop after the first error anyway: if c.config.errorMax <= 1: diff --git a/compiler/semcall.nim b/compiler/semcall.nim index ab28c21b2..c6e12facf 100644 --- a/compiler/semcall.nim +++ b/compiler/semcall.nim @@ -549,7 +549,7 @@ proc tryDeref(n: PNode): PNode = result.add n proc semOverloadedCall(c: PContext, n, nOrig: PNode, - filter: TSymKinds, flags: TExprFlags): PNode = + filter: TSymKinds, flags: TExprFlags): PNode {.nosinks.} = var errors: CandidateErrors = @[] # if efExplain in flags: @[] else: nil var r = resolveOverloads(c, n, nOrig, filter, flags, errors, efExplain in flags) if r.state == csMatch: diff --git a/compiler/seminst.nim b/compiler/seminst.nim index 605ddfafa..fa338956d 100644 --- a/compiler/seminst.nim +++ b/compiler/seminst.nim @@ -320,7 +320,7 @@ proc instantiateProcType(c: PContext, pt: TIdTable, popInfoContext(c.config) proc generateInstance(c: PContext, fn: PSym, pt: TIdTable, - info: TLineInfo): PSym = + info: TLineInfo): PSym {.nosinks.} = ## Generates a new instance of a generic procedure. ## The `pt` parameter is a type-unsafe mapping table used to link generic ## parameters to their concrete types within the generic instance. diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index 986953ab2..6ebe5723e 100644 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -1594,7 +1594,7 @@ proc semLambda(c: PContext, n: PNode, flags: TExprFlags): PNode = if optOwnedRefs in c.config.globalOptions: result.typ = makeVarType(c, result.typ, tyOwned) -proc semInferredLambda(c: PContext, pt: TIdTable, n: PNode): PNode = +proc semInferredLambda(c: PContext, pt: TIdTable, n: PNode): PNode {.nosinks.} = var n = n let original = n[namePos].sym diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index e209f5d78..a581e20f9 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -2584,8 +2584,11 @@ proc argtypeMatches*(c: PContext, f, a: PType, fromHlo = false): bool = # pattern templates do not allow for conversions except from int literal res != nil and m.convMatches == 0 and m.intConvMatches in [0, 256] +when not defined(nimHasSinkInference): + {.pragma: nosinks.} + proc instTypeBoundOp*(c: PContext; dc: PSym; t: PType; info: TLineInfo; - op: TTypeAttachedOp; col: int): PSym = + op: TTypeAttachedOp; col: int): PSym {.nosinks.} = var m = newCandidate(c, dc.typ) if col >= dc.typ.len: localError(c.config, info, "cannot instantiate: '" & dc.name.s & "'") diff --git a/compiler/vm.nim b/compiler/vm.nim index 37d5a609e..3ac075f81 100644 --- a/compiler/vm.nim +++ b/compiler/vm.nim @@ -527,6 +527,9 @@ template maybeHandlePtr(node2: PNode, reg: TFullReg, isAssign2: bool): bool = else: false +when not defined(nimHasSinkInference): + {.pragma: nosinks.} + proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg = var pc = start var tos = tos @@ -1722,7 +1725,7 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg = var error: string let ast = parseString(regs[rb].node.strVal, c.cache, c.config, toFullPath(c.config, c.debug[pc]), c.debug[pc].line.int, - proc (conf: ConfigRef; info: TLineInfo; msg: TMsgKind; arg: string) = + proc (conf: ConfigRef; info: TLineInfo; msg: TMsgKind; arg: string) {.nosinks.} = if error.len == 0 and msg <= errMax: error = formatMsg(conf, info, msg, arg)) if error.len > 0: @@ -1737,7 +1740,7 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg = var error: string let ast = parseString(regs[rb].node.strVal, c.cache, c.config, toFullPath(c.config, c.debug[pc]), c.debug[pc].line.int, - proc (conf: ConfigRef; info: TLineInfo; msg: TMsgKind; arg: string) = + proc (conf: ConfigRef; info: TLineInfo; msg: TMsgKind; arg: string) {.nosinks.} = if error.len == 0 and msg <= errMax: error = formatMsg(conf, info, msg, arg)) if error.len > 0: @@ -2137,7 +2140,7 @@ proc setupGlobalCtx*(module: PSym; graph: ModuleGraph) = else: refresh(PCtx graph.vm, module) -proc myOpen(graph: ModuleGraph; module: PSym): PPassContext = +proc myOpen(graph: ModuleGraph; module: PSym): PPassContext {.nosinks.} = #var c = newEvalContext(module, emRepl) #c.features = {allowCast, allowInfiniteLoops} #pushStackFrame(c, newStackFrame()) |