diff options
-rw-r--r-- | compiler/simplCore/SimplCore.hs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/simplCore/SimplCore.hs b/compiler/simplCore/SimplCore.hs index 888463622a..d461b99c43 100644 --- a/compiler/simplCore/SimplCore.hs +++ b/compiler/simplCore/SimplCore.hs @@ -321,6 +321,12 @@ getCoreToDo dflags (CoreDoPasses [ CoreDoSpecialising , simpl_phase 0 ["post-late-spec"] max_iter]), + -- LiberateCase can yield new CSE opportunities because it peels + -- off one layer of a recursive function (concretely, I saw this + -- in wheel-sieve1), and I'm guessing that SpecConstr can too + -- And CSE is a very cheap pass. So it seems worth doing here. + runWhen ((liberate_case || spec_constr) && cse) CoreCSE, + -- Final clean-up simplification: simpl_phase 0 ["final"] max_iter, |