summaryrefslogtreecommitdiff
path: root/compiler/GHC/Stg/Lift/Analysis.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Stg/Lift/Analysis.hs')
-rw-r--r--compiler/GHC/Stg/Lift/Analysis.hs3
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/GHC/Stg/Lift/Analysis.hs b/compiler/GHC/Stg/Lift/Analysis.hs
index f6a955adb3..3eea75b21e 100644
--- a/compiler/GHC/Stg/Lift/Analysis.hs
+++ b/compiler/GHC/Stg/Lift/Analysis.hs
@@ -545,7 +545,8 @@ closureGrowth expander sizer group abs_ids = go
-- we lift @f@
newbies = abs_ids `minusDVarSet` clo_fvs'
-- Lifting @f@ removes @f@ from the closure but adds all @newbies@
- cost = foldDVarSet (\id size -> sizer id + size) 0 newbies - n_occs
+ cost = nonDetStrictFoldDVarSet (\id size -> sizer id + size) 0 newbies - n_occs
+ -- Using a non-deterministic fold is OK here because addition is commutative.
go (RhsSk body_dmd body)
-- The conservative assumption would be that
-- 1. Every RHS with positive growth would be called multiple times,