projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Transfer strictness and arity info when abstracting over type variables
[ghc-hetmet.git]
/
compiler
/
simplCore
/
SimplCore.lhs
diff --git
a/compiler/simplCore/SimplCore.lhs
b/compiler/simplCore/SimplCore.lhs
index
fc5b903
..
95bd40b
100644
(file)
--- a/
compiler/simplCore/SimplCore.lhs
+++ b/
compiler/simplCore/SimplCore.lhs
@@
-57,11
+57,13
@@
import StrictAnal ( saBinds )
import CprAnalyse ( cprAnalyse )
#endif
import Vectorise ( vectorise )
import CprAnalyse ( cprAnalyse )
#endif
import Vectorise ( vectorise )
+import Util
import UniqSupply ( UniqSupply, mkSplitUniqSupply, splitUniqSupply )
import IO ( hPutStr, stderr )
import Outputable
import UniqSupply ( UniqSupply, mkSplitUniqSupply, splitUniqSupply )
import IO ( hPutStr, stderr )
import Outputable
-import List ( partition )
+import Control.Monad
+import List ( partition, intersperse )
import Maybes
\end{code}
import Maybes
\end{code}
@@
-463,8
+465,11
@@
simplifyPgm mode switches hsc_env us imp_rule_base guts
where
dflags = hsc_dflags hsc_env
phase_info = case mode of
where
dflags = hsc_dflags hsc_env
phase_info = case mode of
- SimplGently -> "gentle"
- SimplPhase n -> show n
+ SimplGently -> "gentle"
+ SimplPhase n ss -> shows n
+ . showString " ["
+ . showString (concat $ intersperse "," ss)
+ $ "]"
dump_phase = shouldDumpSimplPhase dflags mode
dump_phase = shouldDumpSimplPhase dflags mode
@@
-476,17
+481,13
@@
simplifyPgm mode switches hsc_env us imp_rule_base guts
-- about to begin, with '1' for the first
| iteration_no > max_iterations -- Stop if we've run out of iterations
= do {
-- about to begin, with '1' for the first
| iteration_no > max_iterations -- Stop if we've run out of iterations
= do {
-#ifdef DEBUG
- if max_iterations > 2 then
- hPutStr stderr ("NOTE: Simplifier still going after " ++
+ when (debugIsOn && (max_iterations > 2)) $
+ hPutStr stderr ("NOTE: Simplifier still going after " ++
show max_iterations ++
" iterations; bailing out. Size = " ++ show (coreBindsSize binds) ++ "\n" )
show max_iterations ++
" iterations; bailing out. Size = " ++ show (coreBindsSize binds) ++ "\n" )
- else
- return ();
-#endif
-- Subtract 1 from iteration_no to get the
-- number of iterations we actually completed
-- Subtract 1 from iteration_no to get the
-- number of iterations we actually completed
- return ("Simplifier baled out", iteration_no - 1, counts, binds)
+ ; return ("Simplifier bailed out", iteration_no - 1, counts, binds)
}
-- Try and force thunks off the binds; significantly reduces
}
-- Try and force thunks off the binds; significantly reduces