summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Klebinger <klebinger.andreas@gmx.at>2020-07-07 17:12:48 +0200
committerAndreas Klebinger <klebinger.andreas@gmx.at>2020-07-21 17:37:23 +0200
commitdc67f215de1a74c5127af4828828ed1823dc1299 (patch)
tree25f7016a4715c9e0298582f9fda450cc4068eb1a
parent0dd405529f0f17cd9a5b299e7ae5539a885b4b5a (diff)
downloadhaskell-wip/andreask/remove_dict_field_flag.tar.gz
Deprecate -fdmd-tx-dict-sel.wip/andreask/remove_dict_field_flag
It's behaviour is now unconditionally enabled as it's slightly beneficial. There are almost no benchmarks which benefit from disabling it, so it's not worth the keep this configurable. This fixes #18429.
-rw-r--r--compiler/GHC/Core/Opt/DmdAnal.hs5
-rw-r--r--compiler/GHC/Driver/Flags.hs3
-rw-r--r--compiler/GHC/Driver/Session.hs4
-rw-r--r--docs/users_guide/using-optimisation.rst4
4 files changed, 9 insertions, 7 deletions
diff --git a/compiler/GHC/Core/Opt/DmdAnal.hs b/compiler/GHC/Core/Opt/DmdAnal.hs
index 7f4327591e..e11d220773 100644
--- a/compiler/GHC/Core/Opt/DmdAnal.hs
+++ b/compiler/GHC/Core/Opt/DmdAnal.hs
@@ -486,8 +486,9 @@ dmdTransform env var dmd
| isDataConWorkId var
= dmdTransformDataConSig (idArity var) dmd
-- Dictionary component selectors
- | gopt Opt_DmdTxDictSel (ae_dflags env),
- Just _ <- isClassOpId_maybe var
+ -- Used to be controlled by a flag.
+ -- See #18429 for some perf measurements.
+ | Just _ <- isClassOpId_maybe var
= dmdTransformDictSelSig (idStrictness var) dmd
-- Imported functions
| isGlobalId var
diff --git a/compiler/GHC/Driver/Flags.hs b/compiler/GHC/Driver/Flags.hs
index a827ffe315..fc39e941a5 100644
--- a/compiler/GHC/Driver/Flags.hs
+++ b/compiler/GHC/Driver/Flags.hs
@@ -188,7 +188,8 @@ data GeneralFlag
| Opt_OmitYields
| Opt_FunToThunk -- allow GHC.Core.Opt.WorkWrap.Utils.mkWorkerArgs to remove all value lambdas
| Opt_DictsStrict -- be strict in argument dictionaries
- | Opt_DmdTxDictSel -- use a special demand transformer for dictionary selectors
+ | Opt_DmdTxDictSel -- ^ deprecated, no effect and behaviour is now default.
+ -- Allowed switching of a special demand transformer for dictionary selectors
| Opt_Loopification -- See Note [Self-recursive tail calls]
| Opt_CfgBlocklayout -- ^ Use the cfg based block layout algorithm.
| Opt_WeightlessBlocklayout -- ^ Layout based on last instruction per block.
diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs
index 17e3796c3d..3467ae19d0 100644
--- a/compiler/GHC/Driver/Session.hs
+++ b/compiler/GHC/Driver/Session.hs
@@ -3513,7 +3513,8 @@ fFlagsDeps = [
flagSpec "diagnostics-show-caret" Opt_DiagnosticsShowCaret,
flagSpec "dicts-cheap" Opt_DictsCheap,
flagSpec "dicts-strict" Opt_DictsStrict,
- flagSpec "dmd-tx-dict-sel" Opt_DmdTxDictSel,
+ depFlagSpec "dmd-tx-dict-sel"
+ Opt_DmdTxDictSel "effect is now unconditionally enabled",
flagSpec "do-eta-reduction" Opt_DoEtaReduction,
flagSpec "do-lambda-eta-expansion" Opt_DoLambdaEtaExpansion,
flagSpec "eager-blackholing" Opt_EagerBlackHoling,
@@ -4045,7 +4046,6 @@ optLevelFlags :: [([Int], GeneralFlag)]
optLevelFlags -- see Note [Documenting optimisation flags]
= [ ([0,1,2], Opt_DoLambdaEtaExpansion)
, ([0,1,2], Opt_DoEtaReduction) -- See Note [Eta-reduction in -O0]
- , ([0,1,2], Opt_DmdTxDictSel)
, ([0,1,2], Opt_LlvmTBAA)
, ([0], Opt_IgnoreInterfacePragmas)
diff --git a/docs/users_guide/using-optimisation.rst b/docs/users_guide/using-optimisation.rst
index 438560c481..4c44509f21 100644
--- a/docs/users_guide/using-optimisation.rst
+++ b/docs/users_guide/using-optimisation.rst
@@ -353,8 +353,7 @@ by saying ``-fno-wombat``.
Make dictionaries strict.
.. ghc-flag:: -fdmd-tx-dict-sel
- :shortdesc: Use a special demand transformer for dictionary selectors.
- Always enabled by default.
+ :shortdesc: *(deprecated)* Use a special demand transformer for dictionary selectors.
:type: dynamic
:reverse: -fno-dmd-tx-dict-sel
:category:
@@ -362,6 +361,7 @@ by saying ``-fno-wombat``.
:default: on
Use a special demand transformer for dictionary selectors.
+ Behaviour is unconditionally enabled starting with 8.14
.. ghc-flag:: -fdo-eta-reduction
:shortdesc: Enable eta-reduction. Implied by :ghc-flag:`-O`.