[GHC] #10251: Bad rule generated in pathological cases

GHC ghc-devs at haskell.org
Mon Apr 6 20:42:45 UTC 2015


#10251: Bad rule generated in pathological cases
-------------------------------------+-------------------------------------
        Reporter:  simonpj           |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.10.1
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  None/Unknown      |  Unknown/Multiple
      Blocked By:                    |               Test Case:
 Related Tickets:                    |                Blocking:
                                     |  Differential Revisions:
-------------------------------------+-------------------------------------

Old description:

> George reports: I am also seeing this on ghc 7.10.1, not sure if this is
> another instance of this bug (#9160):
> {{{
> cabal install bitmap
> [ 3 of 10] Compiling Data.Bitmap.IO ( Data/Bitmap/IO.hs,
> dist/build/Data/Bitmap/IO.o )
>
> Data/Bitmap/IO.hs:1248:1: Warning:
>
>     SPECIALISE pragma for non-overloaded function ‘myPlusPtr’
>
> Data/Bitmap/IO.hs:1249:1: Warning:
>
>     SPECIALISE pragma for non-overloaded function ‘myPlusPtr’
>
> ghc: panic! (the 'impossible' happened)
>
>     (GHC version 7.10.1 for x86_64-apple-darwin):
>
>         Template variable unbound in rewrite rule
>
>     $fPixelComponentFloat3_X2Rc
>     [$fPixelComponentFloat3_X2Rc]
>     [$fPixelComponentFloat3_X2Rc]
>     []
>     []
> }}}
> But it's ''not'' #9160 at all.  So I'm making a new ticket.

New description:

 George reports: I am also seeing this on ghc 7.10.1, not sure if this is
 another instance of this bug (#9160):
 {{{
 cabal install bitmap
 [ 3 of 10] Compiling Data.Bitmap.IO ( Data/Bitmap/IO.hs,
 dist/build/Data/Bitmap/IO.o )

 Data/Bitmap/IO.hs:1248:1: Warning:
     SPECIALISE pragma for non-overloaded function ‘myPlusPtr’

 Data/Bitmap/IO.hs:1249:1: Warning:
     SPECIALISE pragma for non-overloaded function ‘myPlusPtr’

 ghc: panic! (the 'impossible' happened)
     (GHC version 7.10.1 for x86_64-apple-darwin):
         Template variable unbound in rewrite rule
     $fPixelComponentFloat3_X2Rc
     [$fPixelComponentFloat3_X2Rc]
     [$fPixelComponentFloat3_X2Rc]
     []
     []
 }}}
 But it's ''not'' #9160 at all.  So I'm making a new ticket.

--

Comment (by simonpj):

 Slyfox says  I've distilled it a bit to a selfcontained test:
 {{{
 -- sf 9160 # cat B.hs
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# OPTIONS_GHC -O2 #-}
 module B (bug) where

 data D = D
 data E = E

 class Storable a where
     poke2 :: a -> E
 instance Storable D where
     poke2 = poke2 -- undefined

 class Foo a where
 instance Foo D where

 class (Foo t, Storable t) => FooStorable t where

 instance FooStorable D where
     {-# SPECIALIZE instance FooStorable D #-}

 {-# SPECIALIZE bug :: D -> E #-}

 bug
   :: FooStorable t
   => t
   -> E
 bug = poke2
 {-
 sf 9160 # ghc -c -fforce-recomp -Wall B.hs

 B.hs:5:10: Warning: Defined but not used: data constructor ‘D’

 B.hs:6:10: Warning: Defined but not used: data constructor ‘E’
 ghc: panic! (the 'impossible' happened)
   (GHC version 7.10.1 for x86_64-unknown-linux):
         Template variable unbound in rewrite rule
   $fFooStorableD_XU
   [$fFooStorableD_XU]
   [$fFooStorableD_XU]
   []
   []

 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
 -}
 }}}

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


More information about the ghc-tickets mailing list