X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fstranal%2FStrictAnal.lhs;h=d143a15b86d5375b0b7f34b2fbfc22661fff9065;hb=06e14415fa8aef5be7d01314d08fcd87873cd0da;hp=666d7ff2b2ec653d68aa3c4cd22f9c3c60108a6a;hpb=e0d750bedbd33f7a133c8c82c35fd8db537ab649;p=ghc-hetmet.git diff --git a/ghc/compiler/stranal/StrictAnal.lhs b/ghc/compiler/stranal/StrictAnal.lhs index 666d7ff..d143a15 100644 --- a/ghc/compiler/stranal/StrictAnal.lhs +++ b/ghc/compiler/stranal/StrictAnal.lhs @@ -7,6 +7,11 @@ The original version(s) of all strictness-analyser code (except the Semantique analyser) was written by Andy Gill. \begin{code} +#ifndef OLD_STRICTNESS +module StrictAnal ( ) where + +#else + module StrictAnal ( saBinds ) where #include "HsVersions.h" @@ -22,7 +27,7 @@ import ErrUtils ( dumpIfSet_dyn ) import SaAbsInt import SaLib import Demand ( Demand, wwStrict, isStrict, isLazy ) -import Util ( zipWith3Equal, stretchZipWith ) +import Util ( zipWith3Equal, stretchZipWith, compareLength ) import BasicTypes ( Activation( NeverActive ) ) import Outputable import FastTypes @@ -80,12 +85,6 @@ strict workers. \begin{code} saBinds :: DynFlags -> [CoreBind] -> IO [CoreBind] -#ifndef DEBUG --- Omit strictness analyser if DEBUG is off - -saBinds dflags binds = return binds - -#else saBinds dflags binds = do { showPass dflags "Strictness analysis"; @@ -233,7 +232,9 @@ saApp str_env abs_env (fun, args) where arg_dmds = case fun of Var var -> case lookupAbsValEnv str_env var of - Just (AbsApproxFun ds _) | length ds >= length args + Just (AbsApproxFun ds _) + | compareLength ds args /= LT + -- 'ds' is at least as long as 'args'. -> ds ++ minDemands other -> minDemands other -> minDemands @@ -460,7 +461,7 @@ pp_stats (SaStats tlam dlam tc dc tlet dlet) ptext SLIT("; Let vars: "), int (iBox dlet), char '/', int (iBox tlet) ] -#else {-OMIT_STRANAL_STATS-} +#else /* OMIT_STRANAL_STATS */ -- identity monad type SaM a = a @@ -474,7 +475,7 @@ tickLambda var = panic "OMIT_STRANAL_STATS: tickLambda" tickCases vars = panic "OMIT_STRANAL_STATS: tickCases" tickLet var = panic "OMIT_STRANAL_STATS: tickLet" -#endif {-OMIT_STRANAL_STATS-} +#endif /* OMIT_STRANAL_STATS */ mapSa :: (a -> SaM b) -> [a] -> SaM [b] @@ -488,5 +489,6 @@ sequenceSa [] = returnSa [] sequenceSa (m:ms) = m `thenSa` \ r -> sequenceSa ms `thenSa` \ rs -> returnSa (r:rs) -#endif /* DEBUG */ + +#endif /* OLD_STRICTNESS */ \end{code}