[GHC] #10491: Regression, simplifier explosion with Accelerate, cannot compile, increasing tick factor is not a workaround

GHC ghc-devs at haskell.org
Fri Jun 19 15:07:14 UTC 2015


#10491: Regression, simplifier explosion with Accelerate, cannot compile,
increasing tick factor is not a workaround
-------------------------------------+-------------------------------------
        Reporter:  robertce          |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  highest           |               Milestone:  7.10.2
       Component:  Compiler          |                 Version:  7.10.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 Revisions:
-------------------------------------+-------------------------------------

Comment (by simonpj):

 I looked at this a bit too, but I'm now in an all-day meeting.

 One idea.  I think that 95% of the pain comes from cross-module
 specialisation, dramatically exacerbated by the silent superclasses thing.
 If I'm right, a much quicker fix would be `-fno-specialise`.

 A less draconian fix would be an extra flag `-fno-cross-module-
 specialise`, which turns `Specialise.specImports` into a no-op.  GHC never
 ''used'' to do cross-module specialisation.  Maybe we should even disable
 it by-default in 7.10?  Anyway implementing such a flag would take only a
 minute or two, and would be a Good Thing anyway.

 Moving HEAD's fix for silent userclasses is a pretty complicated solution.

 Ben, suggestions:
  * See if `-fno-specialise` solves the problem
  * Add the flag and see if that too solves the problem
  * Add some stats gathering in `Specialise` that reports how many imported
 functions are specialised, at how many different types, and how big the
 specialised code is.  The idea is so we can more easily see when there's a
 specialisation blow-up.
  * If so we can switch off cross-module specialisation by default
    (although I'd prefer it to be on in 7.12)

 Simon

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10491#comment:23>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list