summaryrefslogtreecommitdiff
path: root/compiler/GHC/Rename/Module.hs
diff options
context:
space:
mode:
authorSimon Jakobi <simon.jakobi@gmail.com>2020-03-31 01:19:53 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-05-14 03:31:21 -0400
commitc05c06596bd1b2852454af6243fc15ee852d2f45 (patch)
tree7fc5f0c23f18521a08cda064d4a94cba4d162c22 /compiler/GHC/Rename/Module.hs
parentc9f5a8f4653c4696a1fbb768bd0d8f672d4c7d5f (diff)
downloadhaskell-c05c06596bd1b2852454af6243fc15ee852d2f45.tar.gz
Improve some folds over Uniq[D]FM
* Replace some non-deterministic lazy folds with strict folds. * Replace some O(n log n) folds in deterministic order with O(n) non-deterministic folds. * Replace some folds with set-operations on the underlying IntMaps. This reduces max residency when compiling `nofib/spectral/simple/Main.hs` with -O0 by about 1%. Maximum residency when compiling Cabal also seems reduced on the order of 3-9%.
Diffstat (limited to 'compiler/GHC/Rename/Module.hs')
-rw-r--r--compiler/GHC/Rename/Module.hs4
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/GHC/Rename/Module.hs b/compiler/GHC/Rename/Module.hs
index 2a09849e52..f7a677504f 100644
--- a/compiler/GHC/Rename/Module.hs
+++ b/compiler/GHC/Rename/Module.hs
@@ -1400,8 +1400,8 @@ depAnalTyClDecls rdr_env kisig_fv_env ds_w_fvs
toParents :: GlobalRdrEnv -> NameSet -> NameSet
toParents rdr_env ns
- = nonDetFoldUniqSet add emptyNameSet ns
- -- It's OK to use nonDetFoldUFM because we immediately forget the
+ = nonDetStrictFoldUniqSet add emptyNameSet ns
+ -- It's OK to use a non-deterministic fold because we immediately forget the
-- ordering by creating a set
where
add n s = extendNameSet s (getParent rdr_env n)