[GHC] #16191: GHC Panic deriving unbox vector (StrictData/unbox-strict-fields interaction)
GHC
ghc-devs at haskell.org
Wed Jan 16 11:24:30 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
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:
-------------------------------------+-------------------------------------
The attached program fails to compile with the following error:
{{{
ghc: panic! (the 'impossible' happened)
(GHC version 8.6.3 for x86_64-unknown-linux):
mkNewTyConRhs
MV_V [Int#, MVector s_a7WC[sk:1] a_a7WA[sk:1],
MVector s_a7WC[sk:1] a_a7WA[sk:1]]
Call stack:
CallStack (from HasCallStack):
callStackDoc, called at compiler/utils/Outputable.hs:1160:37 in
ghc:Outputable
pprPanic, called at compiler/iface/BuildTyCl.hs:65:27 in
ghc:BuildTyCl
}}}
Removing either of the -funbox-strict-fields or StrictData pragma allow
the code to compile correctly, but you do need to compile with -O to get
the incorrect behaviour -ghci is fine loading the module.
Although I wouldn't expect them to interact here as I don't get the same
behaviour if I explicitly write out what would be implied by the flag and
pragma:
{{{
data V a = V {-# UNPACK #-} !a {-# UNPACK #-} !a
deriving (Show)
}}}
just warnings about the unused UNPACKs.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16191>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list