1.0.42.23: x86-64: Fix passing of unboxed complex float arguments.
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Thu, 2 Sep 2010 00:34:28 +0000 (00:34 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Thu, 2 Sep 2010 00:34:28 +0000 (00:34 +0000)
commit829d76d5f12e1c1b6b21ca4c71b34719b8fed5e1
tree3f2eaac64caea0c465c6d723e4286fcfb257bbaa
parent5dd7646f587fe7f85509870d66b7082a93b19adc
1.0.42.23: x86-64: Fix passing of unboxed complex float arguments.

  * This has been broken since 1.0.27.14 (x86oid frame pointer
bias).

  * 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.
src/compiler/x86-64/float.lisp
tests/compiler.pure.lisp
version.lisp-expr