
#13564: Why does memory usage increase so much during CoreTidy? -------------------------------------+------------------------------------- Reporter: rwbarton | Owner: rwbarton Type: task | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by rwbarton): Happily the cause turns out to be simple. In `tidyUnfolding` we tidy the RHS of a stable `CoreUnfolding`. But `CoreUnfolding` also has fields `uf_is_value`, `uf_is_conlike`, etc., which are cached computations on the original RHS. Apparently it's common for these to never be used at any point (the iface will only record `uf_guidance`); so we should evaluate these in `tidyUnfolding`, or just throw away the ones that won't ever be used. I'm in the process of verifying this fix still has the expected result with HEAD. There might be further improvements to be made here, but indications are that this fix at least decreases memory usage during code generation to the point where it is no longer larger than the peak usage during simplification. In other words, max memory usage can't be reduced any more from this side. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13564#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler