summaryrefslogtreecommitdiff
path: root/compiler/GHC/Driver/Config
diff options
context:
space:
mode:
authorSylvain Henry <sylvain@haskus.fr>2021-06-22 12:29:47 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-07-01 03:30:36 -0400
commit6d712150f8f9400397368b45a152a694ba9d5af4 (patch)
tree40a873281b87cc2d677f416ef0b7e87da465ebf7 /compiler/GHC/Driver/Config
parent6f097a8161dfc97be007b83fccbdb71350d786b1 (diff)
downloadhaskell-6d712150f8f9400397368b45a152a694ba9d5af4.tar.gz
Dynflags: introduce DiagOpts
Use DiagOpts for diagnostic options instead of directly querying DynFlags (#17957). Surprising performance improvements on CI: T4801(normal) ghc/alloc 313236344.0 306515216.0 -2.1% GOOD T9961(normal) ghc/alloc 384502736.0 380584384.0 -1.0% GOOD ManyAlternatives(normal) ghc/alloc 797356128.0 786644928.0 -1.3% ManyConstructors(normal) ghc/alloc 4389732432.0 4317740880.0 -1.6% T783(normal) ghc/alloc 408142680.0 402812176.0 -1.3% Metric Decrease: T4801 T9961 T783 ManyAlternatives ManyConstructors Bump haddock submodule
Diffstat (limited to 'compiler/GHC/Driver/Config')
-rw-r--r--compiler/GHC/Driver/Config/Diagnostic.hs21
-rw-r--r--compiler/GHC/Driver/Config/Parser.hs7
2 files changed, 24 insertions, 4 deletions
diff --git a/compiler/GHC/Driver/Config/Diagnostic.hs b/compiler/GHC/Driver/Config/Diagnostic.hs
new file mode 100644
index 0000000000..00fa9695c3
--- /dev/null
+++ b/compiler/GHC/Driver/Config/Diagnostic.hs
@@ -0,0 +1,21 @@
+module GHC.Driver.Config.Diagnostic
+ ( initDiagOpts
+ )
+where
+
+import GHC.Driver.Flags
+import GHC.Driver.Session
+
+import GHC.Utils.Outputable
+import GHC.Utils.Error (DiagOpts (..))
+
+initDiagOpts :: DynFlags -> DiagOpts
+initDiagOpts dflags = DiagOpts
+ { diag_warning_flags = warningFlags dflags
+ , diag_fatal_warning_flags = fatalWarningFlags dflags
+ , diag_warn_is_error = gopt Opt_WarnIsError dflags
+ , diag_reverse_errors = reverseErrors dflags
+ , diag_max_errors = maxErrors dflags
+ , diag_ppr_ctx = initSDocContext dflags defaultErrStyle
+ }
+
diff --git a/compiler/GHC/Driver/Config/Parser.hs b/compiler/GHC/Driver/Config/Parser.hs
index 335e1d530e..4757202ea7 100644
--- a/compiler/GHC/Driver/Config/Parser.hs
+++ b/compiler/GHC/Driver/Config/Parser.hs
@@ -7,7 +7,7 @@ import GHC.Prelude
import GHC.Platform
import GHC.Driver.Session
-import GHC.Utils.Error
+import GHC.Driver.Config.Diagnostic
import GHC.Parser.Lexer
@@ -15,9 +15,8 @@ import GHC.Parser.Lexer
initParserOpts :: DynFlags -> ParserOpts
initParserOpts =
mkParserOpts
- <$> warningFlags
- <*> extensionFlags
- <*> mkPlainMsgEnvelope
+ <$> extensionFlags
+ <*> initDiagOpts
<*> (supportedLanguagesAndExtensions . platformArchOS . targetPlatform)
<*> safeImportsOn
<*> gopt Opt_Haddock