
#1600: Optimisation: CPR the results of IO -------------------------------------+------------------------------------- Reporter: simonmar | Owner: Type: task | Status: new Priority: lowest | Milestone: 7.6.2 Component: Compiler | Version: 6.6.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: Runtime | Difficulty: Moderate (less performance bug | than a day) Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------- Comment (by nomeata): I’m working on nested cpr now. There a few related tickets (#1885 and #2289), but I’ll report my progress here, mostly because this has the lowest number and the fine `factIO` example. Building on a patch from SPJ I now have a branch that works in simple cases. I have some doubts about correctness (i.e. `bothDmdType` is used both for type applications and cases, but I believe these need to treat the question of convergence differently). Also, it does ''not'' work for the `factIO` example yet, probably because there is an unboxed tuple to begin with. Need to investigate. The testsuite goes through (reporting, as it seems, only differences in, well, demand signatures), but nofib’s `typecheck` fills the memory quickly, so the analysis clearly is not conservative yet.. Need to investigate. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/1600#comment:19 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler