
#13253: Exponential compilation time with RWST & ReaderT stack with `-02` -------------------------------------+------------------------------------- Reporter: phadej | Owner: bgamari, osa1 Type: bug | Status: new Priority: normal | Milestone: 8.8.1 Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #15630 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by tdammers): I did try (1), but failed. A naive attempt at "simply" stopping the recursion leads to core lint errors, causing uniques to escape their scope. AFAICT this has to do with how the specialiser mixes the "gather usages", "generate uniques" and "specialise" concerns. Unfortunately, the particular code that does this (`scExpr`) doesn't come with sufficient documentation, and I can't seem to figure out how to do it properly - it's not even clear to me what "do nothing" should look like in the context of `scExpr` - `return (nullUsage, e)`, as I originally expected, is certainly not it. Also, it looks like there is a recursion counter of sorts, `sc_count`, in place already (or rather, a counter that calculates the number of specialisations), but it doesn't seem to be effective in this particular case. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13253#comment:45 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler