Подтвердить что ты не робот

Почему компиляция этой программы Haskell с -fllvm приводит к другому результату?

Компиляция следующей программы:

main = print (sqrt (-7))

В OSX Yosemite, LLVM версии 3.4.2, target x86_64-apple-darwin14.0.0, GHC 7.8.4 выдает два разных результата в зависимости от использования 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

Почему это происходит?

4b9b3361

Ответ 1

(Вопрос отвечает в комментариях.) Преобразован в ответ на wiki сообщества. См. Вопрос без ответов, но проблема разрешена в комментариях (или расширенной в чате))

@leftaroundabout писал (а):

Я бы счел это ошибкой, хотя, возможно, это было приемлемо в соответствии с некоторыми спецификациями. LLVM, очевидно, произвела некоторую оптимизацию здесь, которая предполагает неотрицательные аргументы, вызывая поведение √ (-7) undefined.

@Ed'ka писал (а):

Вероятно, связанный: ошибка LLVM 21048