[Ecls-list] Latest bugfixes

Juan Jose Garcia Ripoll worm at arrakis.es
Wed May 5 01:49:04 UTC 2004


I have devoted the last weekends to fixing a horrible bug that was 
spotted months ago by Paul Dietz' test suite. The bug involves the 
optimizer for tail recursive calls, which was a very old code based on 
function names and not on function identity. In other words, the 
optimizer thought that the following had a tail recursive call
    (defun foo (z)
       (labels ((f1 (x) ;; instance 1
                  (labels ((f1 (y) 2)) ;; instance 2
                     (f1 x))))
         (f1 z)))
Since the optimizer was based on function names, it thought that (f1 x) 
involved "instance 2" instead of "instance 1".

Fixing this was not easy, and I also used this opportunity to simplify 
and unify the code that handles DEFMACRO, DEFUN and local functions 
produced by LAMBDA, FLET and LABELS.

I still have to fix one more bug involving elaborated combinations of 
FLET and LABELS, and hope to produce a new release of ECL afterwards. In 
the mean time, the new changes are available in CVS.

Best regards,


More information about the ecl-devel mailing list