>>>>> "Michael" == Michael Naunton <[EMAIL PROTECTED]> writes:

    Michael> On Mon, 2003-10-27 at 17:11, rif wrote:
    >> 
    >> Yes, l2-distance-squared is inlined.  I don't personally see how the
    >> lack of this could be causing a problem converting between dist and
    >> best-dist --- they are both double-floats, and they are both declared
    >> as double-floats, so I'd hope the conversion happens without going
    >> through float-to-pointer.
    >> 
    >> I'm tenatively guessing that Raymond's suggestion that the system's
    >> out of FP registers is the issue.
    >> 

    Michael> I'd also buy Raymond's explanation.  There are things
    Michael> going on with the optimizer that I don't understand.

But my guess is probably wrong.  I looked at the generated assembly.
Only a couple of FP registers are in use.

Another bit of info.  Every time I've seen this they've all had the
same construct:

     (let ((x <init>))
       (declare (double-float x))
       <some code that setf's x>
       x)

For some reason, it seems that, because x is returned, the compiler
thinks that x needs to be boxed everywhere instead of just boxing the
final x.

But this doesn't always happen.

I don't understand this.

Ray







Reply via email to