haskell llvm

¿Por qué compilar este programa Haskell con-fllvm produce un resultado diferente?



(1)

(Pregunta respondida en los comentarios. Se convirtió en una respuesta de wiki de la comunidad. Consulte la pregunta sin respuestas, pero el problema se resolvió en los comentarios (o se extendió en el chat) )

@leftaroundabout escribió:

Lo consideraría un error, aunque podría haber sido aceptable de acuerdo con alguna especificación. Evidentemente, LLVM activó una optimización que asume argumentos no negativos, lo que hace que √ (-7) comportamiento indefinido.

@ Ed''ka escribió:

Probablemente relacionado: LLVM bug 21048

Compilando el siguiente programa:

main = print (sqrt (-7))

En OSX Yosemite, LLVM versión 3.4.2, target x86_64-apple-darwin14.0.0, GHC 7.8.4 produce dos resultados diferentes, dependiendo del uso de llvm:

apple1$ ghc -fforce-recomp a.hs -o a; ./a [1 of 1] Compiling Main ( a.hs, a.o ) Linking a ... NaN apple1$ ghc -fforce-recomp -fllvm a.hs -o a; ./a [1 of 1] Compiling Main ( a.hs, a.o ) Linking a ... 0.0

¿Por qué sucede esto?