
#12274: GHC panic: simplifier ticks exhausted -------------------------------------+------------------------------------- Reporter: mrkkrp | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): GHC 7.10 makes specialised versions of imported overloaded functions, at least if it can see its inlining. In the example * `mymap` is overloaded, and is small, so its inlining is visible to module `Test` * `mymap` is called at type `Integer` in `Test` so GHC makes specialised copy, and adds a local RULE to rewrite `mymap Integer` to `$smymap`. * The `fmap` rule fires twice, once in the RHS of `$smymap` and once in its (small) unfolding. * But when GHC encounters the call to `mymap` is just inlines it anyway, before thinking about rules. That exposes another call to `fmap` so the rule fires again. Because `mymap` inlines, all the specalisation is in vain. How to avoid that? Maybe one round of simplification so that outright inlining precedes any attempt to specialise. Whether this is the original problem, I'm not sure. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12274#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler