[GHC] #10010: LLVM/optimized code for sqrt incorrect for negative values
GHC
ghc-devs at haskell.org
Tue Jan 20 19:43:56 UTC 2015
#10010: LLVM/optimized code for sqrt incorrect for negative values
-------------------------------------+-------------------------------------
Reporter: glguy | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.4
(LLVM) | Operating System: Unknown/Multiple
Keywords: | Type of failure: Incorrect result
Architecture: | at runtime
Unknown/Multiple | Blocked By:
Test Case: | Related Tickets:
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
The LLVM sqrt intrinsic is undefined below values of -0.0
See http://llvm.org/docs/LangRef.html#llvm-sqrt-intrinsic
In some versions of LLVM it returns 0.0 in this case, but in newer
versions the return value is undefined.
This causes the result of Haskell's sqrt to vary at negative values based
on the codegen and optimization flags chosen.
{{{
main = print (sqrt (-7 :: Double))
}}}
{{{
$ ghc -O -fllvm Sqrt.hs
[1 of 1] Compiling Main ( Sqrt.hs, Sqrt.o )
Linking Sqrt ...
$ ./Sqrt
0.0
$ ghc -O Sqrt.hs
[1 of 1] Compiling Main ( Sqrt.hs, Sqrt.o )
Linking Sqrt ...
$ ./Sqrt
NaN
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10010>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list