Optimize raw-instance-slots-equalp for #-complex-float-vops.
authorStas Boukarev <stassats@gmail.com>
Tue, 5 Nov 2013 15:56:00 +0000 (19:56 +0400)
committerStas Boukarev <stassats@gmail.com>
Tue, 5 Nov 2013 15:56:00 +0000 (19:56 +0400)
commit151fa3c5d85e3fd4621f65ee9676822a73ffbb57
tree60c0f1ab829e3b44fac0428f7b34f9035a1ad2a6
parent1cba0af01f5107ab384d0d8b94b1f6330b3d0ef4
Optimize raw-instance-slots-equalp for #-complex-float-vops.

The comparer function for COMPLEX types wasn't properly optimized
during cross-compilation because the types of REALPART and IMAGPART
weren't derived by the cross-compiler on account of
CROSS-FLOAT-INFINITY-KLUDGE, but the derivers do not actually perform
any mathematical derivation, just
(complex (double-float 10d0)) => (double-float 10d0).
Enabling them during cross-compilation allows = on complex floats be
optimized and avoids consing.
src/code/defstruct.lisp
src/code/target-defstruct.lisp
src/compiler/float-tran.lisp