
#10083: ghc: panic! (the 'impossible' happened) -------------------------------------+------------------------------------- Reporter: hedayaty | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.4 Resolution: | Keywords: hs-boot Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple crash | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by ezyang): * keywords: => hs-boot Comment: Here is an interesting phenomenon in the test case in this bug: it does not infinite loop if you use `--make`. If we look carefully at the inlining log we can see why (I added an extra trace for when there is no unfolding): {{{ Inlining done: T10083.eqRSR \ (ds_d1H8 [Occ=Once!] :: T10083.RSR) (ds_d1H9 [Occ=Once!] :: T10083.RSR) -> case ds_d1H8 of { T10083.MkRSR s1 [Occ=Once] -> case ds_d1H9 of { T10083.MkRSR s2 [Occ=Once] -> T10083a.eqSR s1 s2 } } Inlining done: T10083a.eqSR \ (ds [Occ=Once!] :: T10083a.SR) (ds1 [Occ=Once!] :: T10083a.SR) -> case ds of { T10083a.MkSR r1 [Occ=Once] -> case ds1 of { T10083a.MkSR r2 [Occ=Once] -> T10083.eqRSR r1 r2 } } no unfolding eqRSR }}} Notice that once we unfold `eqSR`, there is NO INLINING on `eqRSR`! Coincidence? Absolutely not: when we compiled `B.hs` we added an `Id` to the HPT which has an unfolding referring to the `eqRSR` from the hs-boot file, which obviously doesn't have an inlining. And clearly we don't flush the HPT prior to typechecking `A.hs`. So we will stop inlining once we hit this hs-boot `Id`. The situation with one-shot is different, however: we haven't loaded the interface, and by the time we try to load the `Id` for `eqRSR` when loading the unfolding for `eqSR`, it's already in the environment and so we give it the right unfolding... disaster! There is something pesky going on with the interface loading business but that's for another bug. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10083#comment:21 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler