Compiler panic with SPECIALIZE pragma on function from imported module
Consider the following two modules:
module Test1 where
class C a where c :: a -> a
{-# INLINE f #-}
f :: (C a) => a
f = c f
module Test2 where
import Test1
data D
instance C D
{-# SPECIALIZE f :: D #-}
ghc-7.0.1 invoked with -O Test2 results in
[1 of 2] Compiling Test1 ( Test1.hs, Test1.o )
[2 of 2] Compiling Test2 ( Test2.hs, Test2.o )
ghc: panic! (the 'impossible' happened)
(GHC version 7.0.1 for i386-unknown-mingw32):
dsImpSpecs main:Test1.f{v r2} [gid]
This is a highly simplified example of a desired rewrite rule in the generic programming library Multirec. Note that there is no problem if the code is all in the same module.
Trac metadata
Trac field | Value |
---|---|
Version | 7.0.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | jpm@cs.uu.nl |
Operating system | |
Architecture |