Fix interaction of float type derivation and negative zeros.
commitfa63f3de4d4235cc31f5f8f579d6df106362bb24
authorStas Boukarev <stassats@gmail.com>
Sun, 6 Mar 2016 11:17:07 +0000 (6 14:17 +0300)
committerStas Boukarev <stassats@gmail.com>
Sun, 6 Mar 2016 11:17:07 +0000 (6 14:17 +0300)
treeee2a21e9d52d5aab17aeb6b12cf57fe557647657
parentd6dbcf22d4be9a57c13533984c132ea612369326
Fix interaction of float type derivation and negative zeros.

Claiming it is good for optimizers type deriviation converted types
like (double-float -0d0 -0d0) into (double-float -0d0 0d0) before
derivation, and then (-0d0 0d0) "back" into (0d0 0d0). The original
type becomes lost and can lead to wrong results. It's not clear which
optimizers benefit from this, but if it produces wrong results then
it's not worth it.
Remove the convert-numeric-type and convert-back-numeric-type
functions.

Reported by Akshay Srinivasan.
src/compiler/bitops-derive-type.lisp
src/compiler/float-tran.lisp
src/compiler/srctran.lisp
tests/compiler.pure.lisp
tests/float.pure.lisp