Madhu wrote:
> Sorry. Actually I was able to reproduce this under 
> 
>        (optimize (speed 3) (space 0)) 
> 
> settings.  The MOD and REM come from NTHCDR in list.lisp. 
> 
> 
> Here is a reduced test case:
> 
> * (defun f (x) (declare (optimize (speed 3)(space 0)))
>    (append (nthcdr 1 x) (nthcdr 1 x)))
> 
> * (compile 'f)
> 
> I can't explain it from looking at srctran.lisp's deftransform for
> nthcdr.

My guess.  nthcdr is declared maybe-inline.  Since speed > space (or
maybe space = 0 or something like that), nthcdr is inlined.  And that
happens before the deftransform for nthcdr is ever gets a chance.

Easy enough to put an inhibit-warnings in the offending part of nthcdr.
 Not sure if we really want to.

Or just don't compile the code with speed 3 and space 0.  I've never
really noticed much speed up with speed 3 on code that manipulates
lists.  But I don't manipulates lists that much.

Ray

Reply via email to