
#10083: ghc: panic! (the 'impossible' happened) -------------------------------------+------------------------------------- Reporter: hedayaty | Owner: Type: bug | Status: infoneeded Priority: normal | Milestone: Component: Compiler | Version: 7.8.4 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple crash | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by simonpj): I'm conscious that you (alone, as far as I can tell) are held up by this bug. I think I know how to fix it, but it's not entirely straightforward and we are very far down the road for 7.10. So I'd like to see if we can find a workaroud. Two suggestions. First idea. compile `RSR` (the one with an `hs-boot` file) with `-funfolding-use-threshold=0`. That will switch off inlining in that module only. Second idea (less brutal). In the first version (which is close to what you have), instead of {{{ data RSR = MkRSR SR deriving( Eq ) }}} say {{{ data RSR = MkRSR SR instance Eq RSR where (==) = eqRSR eqRSR :: RSR -> RSR -> Bool {-# NOINLINE eqRSR #-} eqRSR (RSR s1) (RSR s2) = s1==s2 }}} I think that'll work. It's tiresome because you can't use the auto- generated equality method, but your data types are small. You may need to do this for other instances. I hope that this will get you unglued. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10083#comment:14 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler