summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2016-03-04 13:06:42 +0000
committerSimon Marlow <marlowsd@gmail.com>2016-03-11 16:14:25 +0000
commit2f45cf3f48162a5f843005755dafa1c5c1b451a7 (patch)
tree33d4eaacb1e4107228361236cb9946226e8e4e0c /utils
parent7ba817c217d3c5c4dd9550b0cf0f4314b54895a3 (diff)
downloadhaskell-2f45cf3f48162a5f843005755dafa1c5c1b451a7.tar.gz
Add -foptimal-applicative-do
Summary: The algorithm for ApplicativeDo rearrangement is based on a heuristic that runs in O(n^2). This patch adds the optimal algorithm, which is O(n^3), selected by a flag (-foptimal-applicative-do). It finds better solutions in a small number of cases (about 2% of the cases where ApplicativeDo makes a difference), but it can be very slow for large do expressions. I'm mainly adding it for experimental reasons. ToDo: user guide docs Test Plan: validate Reviewers: simonpj, bgamari, austin, niteria, erikd Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1969
Diffstat (limited to 'utils')
-rw-r--r--utils/mkUserGuidePart/Options/Optimizations.hs6
1 files changed, 6 insertions, 0 deletions
diff --git a/utils/mkUserGuidePart/Options/Optimizations.hs b/utils/mkUserGuidePart/Options/Optimizations.hs
index 389cd37c68..dd9ffd9ced 100644
--- a/utils/mkUserGuidePart/Options/Optimizations.hs
+++ b/utils/mkUserGuidePart/Options/Optimizations.hs
@@ -216,6 +216,12 @@ optimizationsOptions =
, flagType = DynamicFlag
, flagReverse = "-fno-omit-yields"
}
+ , flag { flagName = "-foptimal-applicative-do"
+ , flagDescription =
+ "Use a slower but better algorithm for ApplicativeDo"
+ , flagType = DynamicFlag
+ , flagReverse = "-fno-optimal-applicative-do"
+ }
, flag { flagName = "-fpedantic-bottoms"
, flagDescription =
"Make GHC be more precise about its treatment of bottom (but see "++