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