[GHC] #16191: GHC Panic deriving unbox vector (StrictData/unbox-strict-fields interaction)
GHC
ghc-devs at haskell.org
Wed Jan 16 12:18:21 UTC 2019
#16191: GHC Panic deriving unbox vector (StrictData/unbox-strict-fields
interaction)
-------------------------------------+-------------------------------------
Reporter: dbeacham | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.6.3
Resolution: | Keywords:
Operating System: Linux | Architecture:
Type of failure: GHC rejects | Unknown/Multiple
valid program | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by dbeacham):
Here's a much shorter example without TH or Vector.
{{{
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE StrictData #-}
{-# OPTIONS_GHC -funbox-strict-fields #-}
module Lib where
data V a = V a a
deriving (Show)
data family Test a
newtype instance Test (V a) = V_V (a, a)
}}}
with this error:
{{{
ghc: panic! (the 'impossible' happened)
(GHC version 8.6.3 for x86_64-unknown-linux):
applyTypeToArgs
Expression: V_V @ a_a1BO dt_a1R2 dt_a1R3
Type: forall a. (a, a) -> Test (V a)
Args: [TYPE: a_a1BO, dt_a1R2, dt_a1R3]
Call stack:
CallStack (from HasCallStack):
callStackDoc, called at compiler/utils/Outputable.hs:1160:37 in
ghc:Outputable
pprPanic, called at compiler/coreSyn/CoreUtils.hs:234:14 in
ghc:CoreUtils
}}}
Removing either StrictData or -funbox-strict-fields makes it compile.
Maybe of interest that removing StrictData but adding in explicit
strictness compiles OK:
{{{
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -funbox-strict-fields #-}
module Lib where
data V a = V !a !a
deriving (Show)
data family Test a
newtype instance Test (V a) = V_V (a, a)
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16191#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list