[GHC] #12415: Fancy BinIface encoding for tuples is broken for constraint tuples
GHC
ghc-devs at haskell.org
Wed Jul 20 17:29:41 UTC 2016
#12415: Fancy BinIface encoding for tuples is broken for constraint tuples
-------------------------------------+-------------------------------------
Reporter: bgamari | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: #12357 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by bgamari:
@@ -26,1 +26,2 @@
- to identify them for special handling during serialization.
+ to identify them for special handling during serialization, when we only
+ have the `Name` to look at.
New description:
We have a special way of encoding tuple-related names in the interface
file symbol table. See `Note [Symbol table representation of names]`.
However, it was broken for constraint tuples by
ffc21506894c7887d3620423aaf86bc6113a1071. Namely, `putName` now panics
when given a constraint tuple,
{{{#!hs
putTupleName_ :: BinHandle -> TyCon -> TupleSort -> Word32 -> IO ()
putTupleName_ bh tc tup_sort thing_tag
= -- ASSERT(arity < 2^(30 :: Int))
put_ bh (0x80000000 .|. (sort_tag `shiftL` 28) .|. (thing_tag `shiftL`
26) .|. arity)
where
(sort_tag, arity) = case tup_sort of
BoxedTuple -> (0, fromIntegral (tyConArity tc))
UnboxedTuple -> (1, fromIntegral (tyConArity tc `div` 2))
-- See Note [Unboxed tuple RuntimeRep vars] in TyCon
ConstraintTuple -> pprPanic "putTupleName:ConstraintTuple" (ppr tc)
}}}
While this currently doesn't break anything, this is only because the
clever encoding isn't used for constraint tuples.
I believe the problem is very similar to the one which prevented us from
encoding tuple type representations in #12357 (see
ticket:12357#comment:31). By unwiring constraint tuples it becomes harder
to identify them for special handling during serialization, when we only
have the `Name` to look at.
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12415#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list