[GHC] #9451: Incorrect optimizations involving negative zero

#9451: Incorrect optimizations involving negative zero -------------------------------------+------------------------------------- Reporter: manzyuk | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.3 Keywords: | Operating System: Architecture: Unknown/Multiple | Unknown/Multiple Difficulty: Unknown | Type of failure: Incorrect Blocked By: | result at runtime Related Tickets: | Test Case: | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- The program {{{#!hs main = print $ if negativeZero == 0.0 then 1 / negativeZero else 0.0 where negativeZero = negate 0.0 }}} outputs `-Infinity` when compiled with GHC 7.6.3 and `Infinity` when compiled with GHC 7.8.3 and the optimization level -O2. The relevant pieces of Core: {{{ -- GHC 7.6.3 Main.main2 = case GHC.Prim.==## (GHC.Prim.negateDouble# 0.0) 0.0 of _ { GHC.Types.False -> Main.main3 (GHC.Types.[] @ GHC.Types.Char); GHC.Types.True -> case GHC.Prim./## 1.0 (GHC.Prim.negateDouble# 0.0) of wild2_aK6 { __DEFAULT -> GHC.Float.$w$sshowSignedFloat GHC.Float.$fShowDouble_$sshowFloat GHC.Show.shows26 wild2_aK6 (GHC.Types.[] @ GHC.Types.Char) } } }}} {{{ -- GHC 7.8.3 Main.main2 = case GHC.Prim.negateDouble# 0.0 of _ [Occ=Dead] { __DEFAULT -> Main.main3 (GHC.Types.[] @ GHC.Types.Char); 0.0 -> case GHC.Prim./## 1.0 0.0 of wild2_a1NU { __DEFAULT -> GHC.Float.$w$sshowSignedFloat GHC.Float.$fShowDouble_$sshowFloat GHC.Show.shows27 wild2_a1NU (GHC.Types.[] @ GHC.Types.Char) } } }}} I don't think this problem is operating system/architecture dependent, but for the sake of completeness I'm on a 32-bit Linux, and this issue was first discovered on 64-bit Windows running in a virtual machine. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9451 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9451: Incorrect optimizations involving negative zero -------------------------------------+------------------------------------- Reporter: manzyuk | Owner: Type: bug | Status: closed Priority: normal | Milestone: Component: Compiler | Version: 7.8.3 Resolution: duplicate | Keywords: Operating System: | Architecture: Unknown/Multiple Unknown/Multiple | Difficulty: Unknown Type of failure: Incorrect | Blocked By: result at runtime | Related Tickets: Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by rwbarton): * status: new => closed * resolution: => duplicate Comment: Thanks for the report. This is a duplicate of #9238, but interesting to know that it is a regression from 7.6.3. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9451#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC