diff options
author | Joachim Breitner <mail@joachim-breitner.de> | 2016-12-15 10:57:43 -0800 |
---|---|---|
committer | Joachim Breitner <mail@joachim-breitner.de> | 2016-12-29 19:25:50 +0100 |
commit | aac08a0f37442a79096d7d2392f34b42ee5da2bb (patch) | |
tree | 4001ca3f68b6bb5eef8089d52633817913c47a16 /compiler/main | |
parent | a3704409acc3bd237d3e872f640686918fb51f5f (diff) | |
download | haskell-wip/T9291.tar.gz |
Add a CSE pass to Stg (#9291)wip/T9291
This CSE pass only targets data constructor applications. This is
probably the best we can do, as function calls and primitive operations
might have side-effects.
Introduces the flag -fstg-cse, enabled by default with -O.
Differential Revision: https://phabricator.haskell.org/D2871
Diffstat (limited to 'compiler/main')
-rw-r--r-- | compiler/main/DynFlags.hs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index e7ace47f2a..0bc119a783 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -427,6 +427,7 @@ data GeneralFlag | Opt_CrossModuleSpecialise | Opt_StaticArgumentTransformation | Opt_CSE + | Opt_StgCSE | Opt_LiberateCase | Opt_SpecConstr | Opt_DoLambdaEtaExpansion @@ -3481,6 +3482,7 @@ fFlagsDeps = [ flagSpec "cmm-elim-common-blocks" Opt_CmmElimCommonBlocks, flagSpec "cmm-sink" Opt_CmmSink, flagSpec "cse" Opt_CSE, + flagSpec "stg-cse" Opt_StgCSE, flagSpec "cpr-anal" Opt_CprAnal, flagSpec "defer-type-errors" Opt_DeferTypeErrors, flagSpec "defer-typed-holes" Opt_DeferTypedHoles, @@ -3930,6 +3932,7 @@ optLevelFlags -- see Note [Documenting optimisation flags] , ([1,2], Opt_CmmElimCommonBlocks) , ([1,2], Opt_CmmSink) , ([1,2], Opt_CSE) + , ([1,2], Opt_StgCSE) , ([1,2], Opt_EnableRewriteRules) -- Off for -O0; see Note [Scoping for Builtin rules] -- in PrelRules , ([1,2], Opt_FloatIn) |