diff options
author | Sylvain Henry <sylvain@haskus.fr> | 2021-06-22 12:29:47 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-07-01 03:30:36 -0400 |
commit | 6d712150f8f9400397368b45a152a694ba9d5af4 (patch) | |
tree | 40a873281b87cc2d677f416ef0b7e87da465ebf7 /compiler/GHC/Driver/Config | |
parent | 6f097a8161dfc97be007b83fccbdb71350d786b1 (diff) | |
download | haskell-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.hs | 21 | ||||
-rw-r--r-- | compiler/GHC/Driver/Config/Parser.hs | 7 |
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 |