
#14338: Simplifier fails with "Simplifier ticks exhausted" -------------------------------------+------------------------------------- Reporter: dredozubov | Owner: bgamari Type: bug | Status: new Priority: high | Milestone: 8.4.1 Component: Compiler | Version: 8.2.1 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by bgamari): Indeed essentially all of this bloat comes from specialisations of the `HModify` and `HGet` dictionaries (see `Data.HSet` included in the testcase). For instance, we have, {{{#!hs -- RHS size: {terms: 5, types: 52, coercions: 426, joins: 0/0} $dHModify :: Data.HSet.HModify '[Payload 3, Payload 4, Payload 5, Payload 6, PayloadX] '[Payload 3, Payload 4, Payload 5, Payload 6, PayloadX] PayloadX PayloadX ('TypeFun.Data.Peano.S ('TypeFun.Data.Peano.S ('TypeFun.Data.Peano.S ('TypeFun.Data.Peano.S 'TypeFun.Data.Peano.Z)))) }}} It looks like we end up producing O(N) of these things, with each having O(N) (perhaps more?) coercions. I have added this ticket to the list of "coercion pile-up" issues on Performance/Compiler, since it seems pretty clear that this ticket falls in this bucket. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14338#comment:18 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler