From 9eab32eaea1a7e42f3fe62d13a44795b4d9c344a Mon Sep 17 00:00:00 2001 From: rtoy <rtoy> Date: Wed, 28 Apr 2004 17:58:08 +0000 Subject: [PATCH] This causes an error: (macrolet ((%x () t)) (declare (optimize)) (declare (notinline identity))) Because the macrolet IR1 translator puts a list onto the FVARS arg in PROCESS-INLINE-DECLARATION, which is not a LEAF. This patch works around this by checking to see if the element of FVARS is a LEAF before getting the LEAF-NAME. There is probably a better solution. --- compiler/ir1tran.lisp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/compiler/ir1tran.lisp b/compiler/ir1tran.lisp index 07a150e23..393f0a64e 100644 --- a/compiler/ir1tran.lisp +++ b/compiler/ir1tran.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ir1tran.lisp,v 1.169 2004/04/19 22:10:13 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ir1tran.lisp,v 1.170 2004/04/28 17:58:08 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -1232,7 +1232,14 @@ (let ((sense (cdr (assoc (first spec) inlinep-translations :test #'eq))) (new-fenv ())) (dolist (name (rest spec)) - (let ((fvar (find name fvars :key #'leaf-name :test #'function-name-eqv-p))) + (let ((fvar (find name fvars + :key #'(lambda (x) + ;; FVARS doesn't always contain a + ;; LEAF. Sometimes it comes from a + ;; macrolet. + (and (leaf-p x) + (leaf-name x))) + :test #'function-name-eqv-p))) (if fvar (setf (functional-inlinep fvar) sense) (let ((found -- GitLab