GHC panic when compiling unsafeCoerce
The GHC compiler crashes on the following program.
module Test where
import Unsafe.Coerce
import Graphics.Rendering.OpenGL (color, Color3, GLdouble)
data D4 = D4 Double Double Double Double
crash :: D4 -> IO ()
crash c = color (invalidCast c)
invalidCast :: D4 -> Color3 GLdouble
invalidCast = unsafeCoerce
With the following output:
[1 of 1] Compiling Test ( Test.hs, Test.o )
ghc: panic! (the 'impossible' happened)
(GHC version 7.6.1 for x86_64-apple-darwin):
cgLookupPanic (probably invalid Core; try -dcore-lint)
ww_s28U{v} [lid]
static binds for:
local binds for:
I've made several attempts to make the input program smaller, but all modifications will result in successful compilation.
The cast is invalid but should produce an runtime error, not a compile time error.
Changes I made that somehow prevent this bug from appearing:
- Changing the
crashfunctions into point free stylecolor . invalidCast.- Decreasing the amount of doubles in the
D4datatype.- Inlining the exact definitions from the OpenGL package.
- Using the
colorfunction.
(btw, I know I shouldn't use unsafeCoerce)
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.6.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |