
#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): So this is an interesting case. The module that blows up is quite small; it seems that the blowing up code all comes from unfoldings introduced via, {{{#!hs mainH :: HReader AppPayload Int :<|> HReader AppPayload Int mainH = handleReaderRequest' :<|> handleReaderRequest }}} where `AppPayload` is a type-level list. The number of coercions in the desugared core seems to scale quadratically with the length of this list, ||= Phase =||= N=1 =||= N=2 =||= N=3 =||= N=4 =||= N=5 =|| || Desugar (terms) || 74 || 87 || 100 || 113 || 126 || || Desugar (types) || 350 || 502 || 694 || 926 || 1198 || || Desugar (coerc) || 395 || 746 || 1238 || 1895 || 2741 || Yet in all of these cases somehow Core Tidy brings all of these programs down to precisely 67 terms and a couple hundred types/coercions. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14338#comment:17 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler