
#1600: Optimisation: CPR the results of IO -------------------------------------+------------------------------------- Reporter: simonmar | Owner: (none) Type: task | Status: new Priority: lowest | Milestone: Component: Compiler | Version: 6.6.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #8598 | Differential Rev(s): Phab:D4244 Wiki Page: | -------------------------------------+------------------------------------- Comment (by mpickering): Sebastian says that this patch got parked because of a few reasons. Anyone interested in picking up this ticket can see a source of ideas in the linked differential. https://phabricator.haskell.org/D4244 He says: * I wasn't sure I understood everything that was going in that patch * There were several 'improvements' that were independent of nested CPR that we wanted to test in isolation (#15001, D4563, D4565) * I felt strongly against complicating demand analysis any further. I remember there was this horrible special case for `case` expressions ([https://phabricator.haskell.org/D4244#inline-35408 klick]) that IMO shows that CPR analysis, as opposed to Usage/Strictness analysis, is a forward analysis. Also there's this 'virgin run', which basically means we run the demand analyser twice anyway, because CPR relies on strictness info being available. That's why I strongly argue that we should split off CPR analysis first before implementing nested CPR. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/1600#comment:82 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler