Skip to content
Snippets Groups Projects
Commit b3816280 authored by gerd's avatar gerd
Browse files

FIXME: Dead code elimination sometimes leaves spurious references

	to unused lambda-vars.  Unused vars are not packed, and so have a
	tn but a null tn-offset.  Some of these cases have been fixed, but
	not all of them, and since it's not sure if/when all of them will
	be fixed, add a hack for these cases.

	* src/compiler/debug-dump.lisp (dump-1-variable): If the
	tn-offset of a tn is null, set the tn to nil.

	(compile nil
          '(lambda (a b)
             (declare (optimize (speed 3) (debug 1)))
             (let ((v7
                    (let ((v2 (block b5 (return-from b5 (if t b -4)))))
                         a)))
                  -65667836)))
	 => error nil is not integer, in dump-1-variable.

	This is caused by an exit from the return-from being deleted,
	while leaving the exit's value untouched, which leads to a
	remaining reference to lambda-var b, which is unused and therefore
	not being packed.

	* src/compiler/ir1opt.lisp (maybe-delete-exit): When no node
	receives the value of the exit, flush the dest of the exit's
	value.
parent 56fd6636
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment