diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/ccgexprs.nim | 2 | ||||
-rw-r--r-- | compiler/commands.nim | 49 | ||||
-rw-r--r-- | compiler/liftdestructors.nim | 4 | ||||
-rw-r--r-- | compiler/semtypes.nim | 2 |
4 files changed, 29 insertions, 28 deletions
diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index ea4cd4aca..0ab592a50 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -2028,7 +2028,7 @@ proc genMove(p: BProc; n: PNode; d: var TLoc) = resetLoc(p, a) proc genDestroy(p: BProc; n: PNode) = - if optNimV2 in p.config.globalOptions: + if p.config.selectedGC == gcDestructors: let arg = n[1].skipAddr let t = arg.typ.skipTypes(abstractInst) case t.kind diff --git a/compiler/commands.nim b/compiler/commands.nim index 5b6f3ac0f..1123996c1 100644 --- a/compiler/commands.nim +++ b/compiler/commands.nim @@ -437,30 +437,31 @@ proc processSwitch*(switch, arg: string, pass: TCmdLinePass, info: TLineInfo; processOnOffSwitchG(conf, {optWholeProject}, arg, pass, info) of "gc": expectArg(conf, switch, arg, pass, info) - case arg.normalize - of "boehm": - conf.selectedGC = gcBoehm - defineSymbol(conf.symbols, "boehmgc") - of "refc": - conf.selectedGC = gcRefc - of "v2": - message(conf, info, warnDeprecated, "--gc:v2 is deprecated; using default gc") - of "markandsweep": - conf.selectedGC = gcMarkAndSweep - defineSymbol(conf.symbols, "gcmarkandsweep") - of "destructors": - conf.selectedGC = gcDestructors - defineSymbol(conf.symbols, "gcdestructors") - of "go": - conf.selectedGC = gcGo - defineSymbol(conf.symbols, "gogc") - of "none": - conf.selectedGC = gcNone - defineSymbol(conf.symbols, "nogc") - of "stack", "regions": - conf.selectedGC= gcRegions - defineSymbol(conf.symbols, "gcregions") - else: localError(conf, info, errNoneBoehmRefcExpectedButXFound % arg) + if pass in {passCmd2, passPP}: + case arg.normalize + of "boehm": + conf.selectedGC = gcBoehm + defineSymbol(conf.symbols, "boehmgc") + of "refc": + conf.selectedGC = gcRefc + of "v2": + message(conf, info, warnDeprecated, "--gc:v2 is deprecated; using default gc") + of "markandsweep": + conf.selectedGC = gcMarkAndSweep + defineSymbol(conf.symbols, "gcmarkandsweep") + of "destructors": + conf.selectedGC = gcDestructors + defineSymbol(conf.symbols, "gcdestructors") + of "go": + conf.selectedGC = gcGo + defineSymbol(conf.symbols, "gogc") + of "none": + conf.selectedGC = gcNone + defineSymbol(conf.symbols, "nogc") + of "stack", "regions": + conf.selectedGC= gcRegions + defineSymbol(conf.symbols, "gcregions") + else: localError(conf, info, errNoneBoehmRefcExpectedButXFound % arg) of "warnings", "w": if processOnOffSwitchOrList(conf, {optWarns}, arg, pass, info): listWarnings(conf) of "warning": processSpecificNote(arg, wWarning, pass, info, switch, conf) diff --git a/compiler/liftdestructors.nim b/compiler/liftdestructors.nim index 71f0baecf..3574adca0 100644 --- a/compiler/liftdestructors.nim +++ b/compiler/liftdestructors.nim @@ -129,7 +129,7 @@ proc newDeepCopyCall(op: PSym; x, y: PNode): PNode = result = newAsgnStmt(x, newOpCall(op, y)) proc useNoGc(c: TLiftCtx; t: PType): bool {.inline.} = - result = optNimV2 in c.g.config.globalOptions and + result = c.g.config.selectedGC == gcDestructors and ({tfHasGCedMem, tfHasOwned} * t.flags != {} or t.isGCedMem) proc instantiateGeneric(c: var TLiftCtx; op: PSym; t, typeInst: PType): PSym = @@ -563,7 +563,7 @@ proc produceSym(g: ModuleGraph; c: PContext; typ: PType; kind: TTypeAttachedOp; typ.attachedOps[kind] = result var tk: TTypeKind - if optNimV2 in g.config.globalOptions: + if g.config.selectedGC == gcDestructors: tk = skipTypes(typ, {tyOrdinal, tyRange, tyInferred, tyGenericInst, tyStatic, tyAlias, tySink}).kind else: tk = tyNone # no special casing for strings and seqs diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index 9fec57b15..41d7f0d19 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -1653,7 +1653,7 @@ proc semTypeNode(c: PContext, n: PNode, prev: PType): PType = of mSet: result = semSet(c, n, prev) of mOrdinal: result = semOrdinal(c, n, prev) of mSeq: - if c.config.selectedGC == gcDestructors and optNimV2 notin c.config.globalOptions: + if false: # c.config.selectedGC == gcDestructors and optNimV2 notin c.config.globalOptions: let s = c.graph.sysTypes[tySequence] assert s != nil assert prev == nil |