
#9533: Signed/unsigned integer difference between compiled and interpreted code -------------------------------------+------------------------------------- Reporter: | Owner: MichaelBurge | Status: new Type: bug | Milestone: Priority: high | Version: 7.8.3 Component: Compiler | Keywords: Resolution: | Architecture: x86_64 (amd64) Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: Incorrect | Related Tickets: result at runtime | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by rwbarton): It's not specific to `Word#` actually. The following program has the same wrong behavior. {{{ x :: Int x = 11 y :: Int y = 10 test = case x - y of 3 -> "D" -- comment out either of these two lines and output will be "A" 5 -> "C" 18446744073709551617 -> "A" -- 2^64 + 1 _ -> "B" main = putStrLn $ show test }}} If I build ghc with `-DDEBUG` I get panics like {{{ ghc-stage2: panic! (the 'impossible' happened) (GHC version 7.9.20140831 for x86_64-unknown-linux): ASSERT failed! file compiler/basicTypes/Literal.lhs line 222 18446744073709551617 }}} so I suppose the error is really in creating these `Literal`s with out-of- range values. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9533#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler