[GHC] #10527: Panic Simplifier ticks exhausted with type families

GHC ghc-devs at haskell.org
Thu Jun 25 16:56:20 UTC 2015


#10527: Panic Simplifier ticks exhausted with type families
-------------------------------------+-------------------------------------
        Reporter:  sopvop            |                   Owner:  bgamari
            Type:  bug               |                  Status:  new
        Priority:  highest           |               Milestone:  7.10.2
       Component:  Compiler          |                 Version:  7.10.1-rc1
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  None/Unknown      |  Unknown/Multiple
      Blocked By:                    |               Test Case:
 Related Tickets:                    |                Blocking:
                                     |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by bgamari):

 rVery early in simplifier run I noticed this difference.

 In 7.10.1,
 {{{#!hs
 Inlining done: Data.Functor.Identity.$fFoldableIdentity2
     Inlined fn:  \ (@ a4)
                    (ds [Occ=Once] :: Data.Functor.Identity.Identity a4) ->
                    ds
     Cont:   ApplyToTy (Bug.Rec ss)
             ApplyToVal nodup ((g x)
                               `cast` (Sym
                                         (Nth:0
 (<Data.Functor.Identity.Identity (Bug.Rec ss)>_R
                                             ->
 Data.Functor.Identity.NTCo:Identity[0]
                                                  <Bug.Rec ss>_R))
                                       :: Data.Functor.Identity.Identity
 (Bug.Rec ss)
                                          ~R#
 Data.Functor.Identity.Identity (Bug.Rec ss)))
             CastIt Nth:1
                      (<Data.Functor.Identity.Identity (Bug.Rec ss)>_R
                       -> Data.Functor.Identity.NTCo:Identity[0] <Bug.Rec
 ss>_R)
             Stop[BoringCtxt] Bug.Rec ss
 }}}

 In 7.10.2,
 {{{#!hs
 Inlining done: Data.Functor.Identity.$fFoldableIdentity2
     Inlined fn:  \ (@ a4)
                    (ds [Occ=Once] :: Data.Functor.Identity.Identity a4) ->
                    ds
     Cont:   ApplyToTy (Bug.Rec ss)
             ApplyToVal simpl ((g x)
                               `cast` (Sym
                                         (Nth:0
 (<Data.Functor.Identity.Identity (Bug.Rec ss)>_R
                                             ->
 Data.Functor.Identity.NTCo:Identity[0]
                                                  <Bug.Rec ss>_R))
                                       :: Data.Functor.Identity.Identity
 (Bug.Rec ss)
                                          ~R#
 Data.Functor.Identity.Identity (Bug.Rec ss)))
             CastIt Nth:1
                      (<Data.Functor.Identity.Identity (Bug.Rec ss)>_R
                       -> Data.Functor.Identity.NTCo:Identity[0] <Bug.Rec
 ss>_R)
             Stop[BoringCtxt] Bug.Rec ss
 }}}

 Notice the second "frame" of the context: `ApplyToVal nodup ((g x) ...)`
 (7.10.1) in contrast to `ApplyToVal simpl ((g x) ...)` (7.10.2). I'm not
 yet sure whether this is significant.

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


More information about the ghc-tickets mailing list