projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[project @ 2003-06-03 09:41:48 by ross]
[ghc-hetmet.git]
/
ghc
/
compiler
/
stranal
/
StrictAnal.lhs
diff --git
a/ghc/compiler/stranal/StrictAnal.lhs
b/ghc/compiler/stranal/StrictAnal.lhs
index
666d7ff
..
d143a15
100644
(file)
--- 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}
Semantique analyser) was written by Andy Gill.
\begin{code}
+#ifndef OLD_STRICTNESS
+module StrictAnal ( ) where
+
+#else
+
module StrictAnal ( saBinds ) where
#include "HsVersions.h"
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 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
import BasicTypes ( Activation( NeverActive ) )
import Outputable
import FastTypes
@@
-80,12
+85,6
@@
strict workers.
\begin{code}
saBinds :: DynFlags -> [CoreBind] -> IO [CoreBind]
\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";
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
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
-> 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)
]
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
-- 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"
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]
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)
sequenceSa (m:ms) = m `thenSa` \ r ->
sequenceSa ms `thenSa` \ rs ->
returnSa (r:rs)
-#endif /* DEBUG */
+
+#endif /* OLD_STRICTNESS */
\end{code}
\end{code}