0.9.6.23:
[sbcl.git] / src / compiler / x86-64 / float.lisp
index 310d92a..9f97d65 100644 (file)
                                       (:double '((inst movsd ea x)))))
                            (let ((ea (make-ea
                                       :dword :base fp
-                                      :disp (- (* (+ (tn-offset y)
-                                                     ,(case format
-                                                            (:single 1)
-                                                            (:double 2) ))
+                                      :disp (- (* (1+ (tn-offset y))
                                                   n-word-bytes)))))
                              ,@(ecase format
                                  (:single '((inst movss ea x)))
          (unless (location= imag r-imag)
            (inst movss r-imag imag))))
       (complex-single-stack
-       (inst movss (ea-for-csf-real-stack r) real)
+       (unless (location= real r)
+         (inst movss (ea-for-csf-real-stack r) real))
        (inst movss (ea-for-csf-imag-stack r) imag)))))
 
 (define-vop (make-complex-double-float)
          (unless (location= imag r-imag)
            (inst movsd r-imag imag))))
       (complex-double-stack
-       (inst movsd (ea-for-cdf-real-stack r) real)
+       (unless (location= real r)
+         (inst movsd (ea-for-cdf-real-stack r) real))
        (inst movsd (ea-for-cdf-imag-stack r) imag)))))
 
 (define-vop (complex-float-value)