Update of /cvsroot/sbcl/sbcl/src/compiler/x86-64
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv26609/src/compiler/x86-64
184.108.40.206: x86-64: Fix passing of unboxed complex float arguments.
* This has been broken since 220.127.116.11 (x86oid frame pointer
* The "move-arg" VOPs for complex floats required a different
adjustment when being placed relative to the normal frame base
pointer, due to the bias, than when being placed relative to
other base pointers. Unfortunately, a new requirement was also
added that restricted the appropriate registers for use as
frame base pointers to one, and one which would not normally be
selected, leading to "Unexpected offset" errors.
* Removed the restriction.
* The logic in EA-FOR-CXF-STACK is still broken: The frame bias
is only applied when the frame pointer is RSP, which will never
happen, and is not applied when the frame pointer is any other
register. At the same time, so far as I can tell, the bias seems
to be unneccessary.
* Bug reported by sykopomp in #lispgames.
RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86-64/float.lisp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- float.lisp 6 May 2010 13:49:25 -0000 1.25
+++ float.lisp 2 Sep 2010 00:34:28 -0000 1.26
@@ -51,9 +51,7 @@
(+ (tn-offset ,tn)
(cond ((= (tn-offset ,base) rsp-offset)
- ((= (tn-offset ,base) rbp-offset)
- (t (error "Unexpected offset.")))
+ (t 0))