Skip to content

Commit

Permalink
add the applicable new (version 9.10) GHC flags to normaliseGhcArgs (h…
Browse files Browse the repository at this point in the history
…askell#10014)

* add the applicable new (versions 9.2 - 9.10) GHC flags to normaliseGhcArgs

Actionable flags are:
- fdiagnostics-as-json (changes the format GHC outputs its diagnostics)
- fprint-error-index-lists (changes the way GHC displays compile time)
- fbreak-points (enables/disables break-points in GHCi)
- dipe-stats (dumps information about which info tables have IPE
  information)
- ffamily-application-cache (only changes the speed of the compiler)
- fprint-redundant-promotion-ticks
- show-error-context
- unoptimized-core-for-interpreter (only applies to GHCi)

* [chore] correct the flag names and add a FUTUREWORK
  • Loading branch information
MangoIV authored Jun 12, 2024
1 parent cb1b60f commit be10be8
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 4 deletions.
7 changes: 7 additions & 0 deletions Cabal/src/Distribution/Simple/Program.hs
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
{- FUTUREWORK:
-
- Currently the logic in this module is not tested.
-
- Ideally, a set of unit tests that check whether certain
- flags trigger recompilation should be added.
- -}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
Expand Down
31 changes: 27 additions & 4 deletions Cabal/src/Distribution/Simple/Program/GHC.hs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
Expand Down Expand Up @@ -227,8 +228,27 @@ normaliseGhcArgs (Just ghcVersion) PackageDescription{..} ghcArgs
, "keep-going" -- try harder, the build will still fail if it's erroneous
, "print-axiom-incomps" -- print more debug info for closed type families
]
, from
[9, 2]
[ "family-application-cache"
]
, from
[9, 6]
[ "print-redundant-promotion-ticks"
, "show-error-context"
]
, from
[9, 8]
[ "unoptimized-core-for-interpreter"
]
, from
[9, 10]
[ "diagnostics-as-json"
, "print-error-index-links"
, "break-points"
]
]
, flagIn . invertibleFlagSet "-d" $ ["ppr-case-as-let", "ppr-ticks"]
, flagIn $ invertibleFlagSet "-d" ["ppr-case-as-let", "ppr-ticks"]
, isOptIntFlag
, isIntFlag
, if safeToFilterWarnings
Expand Down Expand Up @@ -289,6 +309,7 @@ normaliseGhcArgs (Just ghcVersion) PackageDescription{..} ghcArgs
, from [8, 6] ["-dhex-word-literals"]
, from [8, 8] ["-fshow-docs-of-hole-fits", "-fno-show-docs-of-hole-fits"]
, from [9, 0] ["-dlinear-core-lint"]
, from [9, 10] ["-dipe-stats"]
]

isOptIntFlag :: String -> Any
Expand Down Expand Up @@ -709,7 +730,10 @@ renderGhcOptions comp _platform@(Platform _arch os) opts
| flagProfAuto implInfo -> ["-fprof-auto-exported"]
| otherwise -> ["-auto"]
, ["-split-sections" | flagBool ghcOptSplitSections]
, ["-split-objs" | flagBool ghcOptSplitObjs]
, case compilerCompatVersion GHC comp of
-- the -split-objs flag was removed in GHC 9.8
Just ver | ver >= mkVersion [9, 8] -> []
_ -> ["-split-objs" | flagBool ghcOptSplitObjs]
, case flagToMaybe (ghcOptHPCDir opts) of
Nothing -> []
Just hpcdir -> ["-fhpc", "-hpcdir", u hpcdir]
Expand Down Expand Up @@ -799,8 +823,7 @@ renderGhcOptions comp _platform@(Platform _arch os) opts
-- Packages

concat
[ [ case () of
_
[ [ if
| unitIdSupported comp -> "-this-unit-id"
| packageKeySupported comp -> "-this-package-key"
| otherwise -> "-package-name"
Expand Down
11 changes: 11 additions & 0 deletions changelog.d/pr-10014
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
synopsis: Update ghc args normalization and ghc option rendering
packages: Cabal
issues: #9729
prs: #10014

description: {

The flags -fdiagnostics-as-json, -fprint-error-index-lists, -fbreak-points, -dipe-stats, -ffamily-application-cache, -fprint-redundant-promotion-ticks, -fshow-error-context and -funoptimized-core-for-interpreter have been added to the flags that do not cause recompilation.

--{enable,disable}-split-objs is not shown on in the helper for GHC >= 9.8
}

0 comments on commit be10be8

Please sign in to comment.