From: simonpj Date: Thu, 1 Mar 2001 17:07:49 +0000 (+0000) Subject: [project @ 2001-03-01 17:07:49 by simonpj] X-Git-Tag: Approximately_9120_patches~2493 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=4d9d0308c951ace938b5a209a8b046260739b3f1;p=ghc-hetmet.git [project @ 2001-03-01 17:07:49 by simonpj] Simplify between LiberateCase and SpecConstr --- diff --git a/ghc/compiler/main/DriverState.hs b/ghc/compiler/main/DriverState.hs index 3dc7951..2471eb0 100644 --- a/ghc/compiler/main/DriverState.hs +++ b/ghc/compiler/main/DriverState.hs @@ -1,5 +1,5 @@ ----------------------------------------------------------------------------- --- $Id: DriverState.hs,v 1.30 2001/02/28 11:48:34 simonpj Exp $ +-- $Id: DriverState.hs,v 1.31 2001/03/01 17:07:49 simonpj Exp $ -- -- Settings for the driver -- @@ -281,6 +281,20 @@ buildCoreToDo = do else CoreDoNothing, if opt_level >= 2 then + CoreDoSimplify (isAmongSimpl [ + MaxSimplifierIterations max_iter + -- No -finline-phase: allow all Ids to be inlined now + ]) + else + CoreDoNothing, + -- Simplify before SpecConstr, because LiberateCase leaves + -- case binders the wrong way round. E.g. it leaves it like + -- case x of wild { ... f x .... } + -- rather than + -- case x of wild { ... f wild ... } + -- The latter is better because 'wild' has the unfolding for + -- x inside it. + if opt_level >= 2 then CoreDoSpecConstr else CoreDoNothing,