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

GHC ghc-devs at haskell.org
Sat Jun 27 14:32:55 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):

 Also interesting is that inlining of `$fFunctorIdentity2` is completely
 unchanged between the two commits other than IdInfo of a binding in the
 context. Namely, both have a context entry that look like this,

 {{{
             ApplyToVal simpl ((case xs `cast` ...
                                of _ [Occ=Dead] { Bug.:& @ r @ rs dt_X2fs x
 xs ->
                                case xs `cast` ...
                                of _ [Occ=Dead] { Bug.:& @ r @ rs dt_d2bT x
 xs ->
                                case r `cast` ... of nt_s2fs { Bug.Expr ipv
 ipv ->
                                let {
                                  dt_X1PT :: Bug.Rec '["field1" Bug.:->
 Bug.Expr GHC.Types.Int]
                                  [LclId,
                                   Str=DmdType,
                                   Unf=Unf{Src=<vanilla>, TopLvl=False,
 Value=True, ConLike=True,
                                           WorkFree=True, Expandable=True,
                                           Guidance=IF_ARGS [] 10 30}]
                                  dt_X1PT =
                                    Bug.:&
                                      @ '["field1" Bug.:-> Bug.Expr
 GHC.Types.Int]
                                      @ ("field1" Bug.:-> Bug.Expr
 GHC.Types.Int)
                                      @ '[]
                                      @~ <'["field1" Bug.:-> Bug.Expr
 GHC.Types.Int]>_N
                                      (nt_s2fs `cast` ...)
                                      (xs `cast` ...) } in
                                (Bug.:&
                                   @ '["event_type" Bug.:-> Bug.Expr
 GHC.Types.Int,
                                       "field1" Bug.:-> Bug.Expr
 GHC.Types.Int]
                                   @ ("event_type" Bug.:-> Bug.Expr
 GHC.Types.Int)
                                   @ '["field1" Bug.:-> Bug.Expr
 GHC.Types.Int]
                                   @~ <'["event_type" Bug.:-> Bug.Expr
 GHC.Types.Int,
                                         "field1" Bug.:-> Bug.Expr
 GHC.Types.Int]>_N
                                   (x `cast` ...)
                                   dt_X1PT)
                                `cast` ...
                                }
                                }
                                })
                               `cast` ...)
 }}}

 where the bad commit has the Unfolding and the good commit does not.

 Smells very suspicious.

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


More information about the ghc-tickets mailing list