[git] CMU Common Lisp branch master updated. snapshot-2014-06-92-g75d14d2

Raymond Toy rtoy at common-lisp.net
Tue Aug 5 01:55:36 UTC 2014

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".

The branch, master has been updated
       via  75d14d2ed7dc9085858d9119013b67fbdfe77390 (commit)
      from  47718592f9ef89fd8a52f07d41c8553aa8b525f2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 75d14d2ed7dc9085858d9119013b67fbdfe77390
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Mon Aug 4 18:55:27 2014 -0700

    Fix bug in DOUBLE-FLOAT-BITS vop.
    Add a lifetime spec to the arg so that we don't accidentally destroy
    the arg when writing the two results.  Previously, HI-BITS was
    allocated to the same register as FLOAT (in a descriptor). Writing
    HI-BITS would destroy the contents of the FLOAT and when trying to
    write lo-bits, we would read from the wrong address because FLOAT now
    contains the high bits of the double float number.

diff --git a/src/compiler/x86/float-sse2.lisp b/src/compiler/x86/float-sse2.lisp
index bfa6df9..e7b1b86 100644
--- a/src/compiler/x86/float-sse2.lisp
+++ b/src/compiler/x86/float-sse2.lisp
@@ -1272,7 +1272,8 @@
 (define-vop (double-float-bits)
   (:args (float :scs (double-reg descriptor-reg)
-		:load-if (not (sc-is float double-stack))))
+		:load-if (not (sc-is float double-stack))
+		:to (:result 1)))
   (:results (hi-bits :scs (signed-reg))
 	    (lo-bits :scs (unsigned-reg)))
   (:arg-types double-float)


Summary of changes:
 src/compiler/x86/float-sse2.lisp |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

CMU Common Lisp

More information about the cmucl-cvs mailing list