
#10245: panic in new integer switch logic with "out-of-range" literals -------------------------------------+------------------------------------- Reporter: rwbarton | Owner: nomeata Type: bug | Status: closed Priority: high | Milestone: Component: Compiler | Version: 7.11 (CodeGen) | Keywords: Resolution: fixed | Architecture: x86_64 Operating System: Unknown/Multiple | (amd64) Type of failure: Compile-time | Test Case: crash | Blocking: Blocked By: | Differential Revisions: Related Tickets: | -------------------------------------+------------------------------------- Comment (by nomeata):
I'm pretty sure it is valid Haskell;
for some reason I was assuming you were writing unboxed literals. With regular literals, you are right of course! But I think we are implementing it wrongly. According to the report, your code should be treated like {{{ f n = if n == fromIntegral 0x8000000000000000 then "yes" else "no" }}} but my impression is that we produce a literal 0x8000000000000000 :: Int# internally, which is then dropped from the case. I’ll check. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10245#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler