[Armedbear-devel] Incorrect (un)dead-code-elimination

Mark Evenson evenson at panix.com
Tue Apr 22 10:54:37 UTC 2014


On 21 Apr 2014, at 18:22, Douglas Katzman <dougk at google.com> wrote:

> ;; In the test below, COMPUTE-INSIDES should be called by EXAMP-FAIL
> 
> java -jar abcl-bin-1.3.0/abcl.jar
> ...
> CL-USER(1): (defmacro ultra-fancy-macro (&optional (x 'compute-insides))
>                     (list 'cons ''loop (list x)))
> ULTRA-FANCY-MACRO
> 
> CL-USER(2): (defun examp-fail (directives)
>                    (labels ((compute-insides () '((here-are-the-guts)))
>                                (compute-loop () (ultra-fancy-macro)))
>                     (compute-loop)))
> ; Note: deleting unused local function LABELS COMPUTE-INSIDES
> EXAMP-FAIL
> 
> CL-USER(3): (examp-fail nil) ; just checking.. maybe the Note was wrong?
> (examp-fail nil)
> #<THREAD "interpreter" {652D03DC}>: 
> Debugger invoked on condition of type UNDEFINED-FUNCTION
>  The function COMPUTE-INSIDES is undefined.
> Restarts:
> ...
> 3: TOP-LEVEL    Return to top level.
> [1] CL-USER(4): 3
> 
> CL-USER(5): (defun examp-works (directives)
>                     (labels ((compute-insides () '((here-are-the-guts)))
>                                 (compute-loop () (ultra-fancy-macro)))
>                      #'compute-insides ; spuriously reference it
>                      (compute-loop)))
> EXAMP-WORKS
> 
> CL-USER(6): (examp-works nil)
> (LOOP (HERE-ARE-THE-GUTS))
> 
> Without a statically observable use of compute-insides it is considered unused.
> Macros have expanded *before* deciding that.
> It is clear that the macro expands correctly based on 'examp-works'

Filed as [ticket-358][].  Thanks for the report!

[ticket-358]: http://abcl.org/trac/ticket/358

-- 
"A screaming comes across the sky.  It has happened before but there is nothing 
to compare to it now."






_______________________________________________
Armedbear-devel mailing list
Armedbear-devel at common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel



More information about the armedbear-devel mailing list