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.
Loading
Please register or sign in to comment