Re: [GHC] #2940: Do CSE after CorePrep

#2940: Do CSE after CorePrep -------------------------------------+------------------------------------- Reporter: simonpj | Owner: simonpj Type: bug | Status: new Priority: lowest | Milestone: 8.0.1 Component: Compiler | Version: 6.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): See [wiki:MoreCSE]. I'm inclined to think that it'd be better to do CSE ''earlier'' not ''later''. The main idea (on the [wiki:MoreCSE] page) is this: * Make float-out more aggressive by (a) let-binding every sub-expression, and (b) floating let-bindings out even if they don't escape a lambda. So in your first example {{{ g x = (x + 1, x + 1) }}} we'd get {{{ g x = let v1 = x+1 in let v2 = x+2 in (v1,v2) }}} * Now do CSE as now. The extra let-bindings should give a lot more more opportunities. * Float inwards to reverse the effect of the first pass if CSE did not bite. Also talk to Joachim who wrote [wiki:MoreCSE]. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/2940#comment:18 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC