summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2021-09-30 12:09:42 +0200
committerGitHub <noreply@github.com>2021-09-30 12:09:42 +0200
commitc38ab3e257fbb08622f9ec6f0068a0fd3a5d82d7 (patch)
tree9d61c42698844db1ec8fe34119692d6b54cb8808
parentc3dd53bb2cf492029ae256f64f64d2577621b995 (diff)
downloadNim-c38ab3e257fbb08622f9ec6f0068a0fd3a5d82d7.tar.gz
fixes #18921 [backport] (#18930)
-rw-r--r--compiler/commands.nim20
1 files changed, 11 insertions, 9 deletions
diff --git a/compiler/commands.nim b/compiler/commands.nim
index 9b7e35791..a8caad916 100644
--- a/compiler/commands.nim
+++ b/compiler/commands.nim
@@ -482,18 +482,20 @@ proc setCommandEarly*(conf: ConfigRef, command: string) =
   else:
     conf.foreignPackageNotes = foreignPackageNotesDefault
 
-proc specialDefine(conf: ConfigRef, key: string) =
+proc specialDefine(conf: ConfigRef, key: string; pass: TCmdLinePass) =
   # Keep this syncronized with the default config/nim.cfg!
   if cmpIgnoreStyle(key, "nimQuirky") == 0:
     conf.exc = excQuirky
   elif cmpIgnoreStyle(key, "release") == 0 or cmpIgnoreStyle(key, "danger") == 0:
-    conf.options.excl {optStackTrace, optLineTrace, optLineDir, optOptimizeSize}
-    conf.globalOptions.excl {optExcessiveStackTrace, optCDebug}
-    conf.options.incl optOptimizeSpeed
+    if pass in {passCmd1, passPP}:
+      conf.options.excl {optStackTrace, optLineTrace, optLineDir, optOptimizeSize}
+      conf.globalOptions.excl {optExcessiveStackTrace, optCDebug}
+      conf.options.incl optOptimizeSpeed
   if cmpIgnoreStyle(key, "danger") == 0 or cmpIgnoreStyle(key, "quick") == 0:
-    conf.options.excl {optObjCheck, optFieldCheck, optRangeCheck, optBoundsCheck,
-      optOverflowCheck, optAssert, optStackTrace, optLineTrace, optLineDir}
-    conf.globalOptions.excl {optCDebug}
+    if pass in {passCmd1, passPP}:
+      conf.options.excl {optObjCheck, optFieldCheck, optRangeCheck, optBoundsCheck,
+        optOverflowCheck, optAssert, optStackTrace, optLineTrace, optLineDir}
+      conf.globalOptions.excl {optCDebug}
 
 proc processSwitch*(switch, arg: string, pass: TCmdLinePass, info: TLineInfo;
                     conf: ConfigRef) =
@@ -565,10 +567,10 @@ proc processSwitch*(switch, arg: string, pass: TCmdLinePass, info: TLineInfo;
     expectArg(conf, switch, arg, pass, info)
     if {':', '='} in arg:
       splitSwitch(conf, arg, key, val, pass, info)
-      specialDefine(conf, key)
+      specialDefine(conf, key, pass)
       defineSymbol(conf.symbols, key, val)
     else:
-      specialDefine(conf, arg)
+      specialDefine(conf, arg, pass)
       defineSymbol(conf.symbols, arg)
   of "undef", "u":
     expectArg(conf, switch, arg, pass, info)