[GHC] #5889: -fno-prof-count-entries leads to linking errors

GHC ghc-devs at haskell.org
Thu Nov 2 19:00:20 UTC 2017


#5889: -fno-prof-count-entries leads to linking errors
-------------------------------------+-------------------------------------
        Reporter:  akio              |                Owner:  bgamari
            Type:  bug               |               Status:  new
        Priority:  highest           |            Milestone:  8.4.1
       Component:  Compiler          |              Version:  8.3
      Resolution:                    |             Keywords:
Operating System:  Linux             |         Architecture:  x86_64
 Type of failure:  GHC rejects       |  (amd64)
  valid program                      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by bgamari):

 Alright, I know what is going on here:

 Look at the simplified Core of `Type.newTyConInstRhs`,

 {{{
 newTyConInstRhs :: TyCon -> [Type] -> Type
 [GblId,
  Arity=2,
  Str=<S,1*U><S,U>,
  Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
          WorkFree=True, Expandable=True,
          Guidance=ALWAYS_IF(arity=2,unsat_ok=True,boring_ok=False)
          Tmpl= \ (tycon_a9Sq [Occ=OnceL] :: TyCon)
                  (tys_a9Sr [Occ=OnceL] :: [Type]) ->
                  scc<newTyConInstRhs>
                  let {
                    ds_sofN :: ([TyVar], Type)
                    [LclId]
                    ds_sofN
                      = scc<newTyConInstRhs.(...)> newTyConEtadRhs
 tycon_a9Sq } in
                  applyTysX
                    (scc<newTyConInstRhs.tvs>
                     case ds_sofN of { (tvs_ab8F [Occ=Once], _ [Occ=Dead])
 ->
                     tvs_ab8F
                     })
                    (scc<newTyConInstRhs.rhs>
                     case ds_sofN of { (_ [Occ=Dead], rhs_ab8H [Occ=Once])
 ->
                     rhs_ab8H
                     })
                    tys_a9Sr}]
 newTyConInstRhs
   = \ (tycon_a9Sq :: TyCon) (tys_a9Sr :: [Type]) ->
       scc<newTyConInstRhs>
       case scc<newTyConInstRhs.(...)> newTyConEtadRhs tycon_a9Sq of
       { (ww1_suMl, ww2_suMm) ->
       applyTysX ww1_suMl ww2_suMm tys_a9Sr
       }
 }}}

 Note how the unfolding contains references to two SCCs,
 `newTyConInstRhs.tvs` and `newTyConInstRhs.rhs`, which do not appear in
 the RHS. Indeed these were both present in the original desugared Core, so
 it seems like the simplifier eliminated them. I'm not yet sure why it does
 this, nor do I know why this is only triggered with `-fno-prof-count-
 entries`.

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


More information about the ghc-tickets mailing list