diff options
author | klebinger.andreas@gmx.at <klebinger.andreas@gmx.at> | 2018-06-03 00:37:59 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2018-06-03 00:38:07 -0400 |
commit | f68c2cb60f881a0a41ae2e8cafc5de193ef9c3fb (patch) | |
tree | 43c63e49469e8e04f0f67338b9b7830298fca2b8 /compiler/main/DynFlags.hs | |
parent | 9b7eec8614f531e20a34e8dd2f62293ab0fedf8c (diff) | |
download | haskell-f68c2cb60f881a0a41ae2e8cafc5de193ef9c3fb.tar.gz |
Allow aligning of cmm procs at specific boundry
Allows to align CmmProcs at the given boundries.
It makes performance usually worse but can be helpful
to limit the effect of a unrelated function B becoming
faster/slower after changing function A.
Test Plan: ci, using it.
Reviewers: bgamari
Reviewed By: bgamari
Subscribers: rwbarton, thomie, carter
GHC Trac Issues: #15148
Differential Revision: https://phabricator.haskell.org/D4706
Diffstat (limited to 'compiler/main/DynFlags.hs')
-rw-r--r-- | compiler/main/DynFlags.hs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index b9141f9e87..b2c82fa2ee 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -876,6 +876,8 @@ data DynFlags = DynFlags { floatLamArgs :: Maybe Int, -- ^ Arg count for lambda floating -- See CoreMonad.FloatOutSwitches + cmmProcAlignment :: Maybe Int, -- ^ Align Cmm functions at this boundry or use default. + historySize :: Int, -- ^ Simplification history size importPaths :: [FilePath], @@ -1758,6 +1760,7 @@ defaultDynFlags mySettings (myLlvmTargets, myLlvmPasses) = specConstrRecursive = 3, liberateCaseThreshold = Just 2000, floatLamArgs = Just 0, -- Default: float only if no fvs + cmmProcAlignment = Nothing, historySize = 20, strictnessBefore = [], @@ -3397,6 +3400,10 @@ dynamic_flags_deps = [ (intSuffix (\n d -> d { floatLamArgs = Just n })) , make_ord_flag defFlag "ffloat-all-lams" (noArg (\d -> d { floatLamArgs = Nothing })) + , make_ord_flag defFlag "fproc-alignment" + (intSuffix (\n d -> d { cmmProcAlignment = Just n })) + + , make_ord_flag defFlag "fhistory-size" (intSuffix (\n d -> d { historySize = n })) , make_ord_flag defFlag "funfolding-creation-threshold" |