Re: Bug loading this file...

Gary Byers <[email protected]> Mon, 29 Jul 2002 08:09:41 -0600 (MDT)
Newsgroups gmane.lisp.openmcl.bugs
Message-ID <[email protected]>

On Mon, 29 Jul 2002, Gary Byers wrote:

> It looks like one of the "internal compiler changes that wasn't supposed to
> be user-visible" in 0.12.1 is user-visible ...
>
> As a workaround (until that's fixed), you can get a lot farther by disabling
> *SAVE-LOCAL-SYMBOLS* (it's set to T in an EVAL-WHEN near the top of the file).
>
> It's possible that fixing the *SAVE-LOCAL-SYMBOLS* mechanism will involve
> disabling it for a release or two, and that it may behave a bit differently
> in the future than it has traditionally (e.g., may only take effect under
> certain compilation policies.)
>

That may happen (sooner or later), but the enclosed patch seems to keep
things from blowing up in the meantime.
local-symbols-freed-lreg.diff (text/plain, 927 B)
Index: compiler/PPC/ppc2.lisp
===================================================================
RCS file: /usr/local/publiccvs/ccl/compiler/PPC/ppc2.lisp,v
retrieving revision 1.20
diff -u -r1.20 ppc2.lisp
--- compiler/PPC/ppc2.lisp	18 Jun 2002 13:56:30 -0000	1.20
+++ compiler/PPC/ppc2.lisp	29 Jul 2002 14:07:59 -0000
@@ -4487,6 +4487,15 @@
             (setf (vinsn-label-info v) (emit-lap-label v)))
           (ppc2-expand-note id)))
       (ppc2-expand-vinsn v)))
+  ;;; This doesn't have too much to do with anything else that's
+  ;;; going on here, but it needs to happen before the lregs
+  ;;; are freed.  There really shouldn't be such a thing as a
+  ;;; var-ea, of course ...
+  (dolist (s *ppc2-recorded-symbols*)
+    (let* ((var (car s))
+	   (ea (var-ea var)))
+      (when (typep ea 'lreg)
+	(setf (var-ea var) (lreg-value ea)))))
   (free-logical-registers)
   (ppc2-free-lcells))