1.0.17.3: unify CONSTANT nodes for DEFCONSTANT and literal constants
[sbcl.git] / src / compiler / xref.lisp
index 48d2a54..ac1dad8 100644 (file)
                ;; Note that this code can get executed several times
                ;; for the same block, if the functional is referenced
                ;; from multiple XEPs.
-               (loop for ctran = start then (node-next node)
+               (loop for ctran = start then (node-next (ctran-next ctran))
                      while ctran
-                     for node = (ctran-next ctran)
-                     do (record-node-xrefs node functional))
+                     do (record-node-xrefs (ctran-next ctran) functional))
                ;; Properly record the deferred macroexpansion information
                ;; that's been stored in the block.
                (dolist (xref-data (block-macroexpands block))
                 (record-xref :calls name context node nil)))))
          ;; Reading a constant
          (constant
-          (let* ((name (constant-%source-name leaf)))
-            (record-xref :references name context node nil))))))
+          (record-xref :references (ref-%source-name node) context node nil)))))
     ;; Setting a special variable
     (cset
      (let* ((var (set-var node)))
     (list
      (every #'internal-name-p what))
     (symbol
-     (member (symbol-package what)
-             (load-time-value (list* (find-package "COMMON-LISP")
-                                     (find-package "KEYWORD")
-                                     (remove-if-not
-                                      (lambda (package)
-                                        (= (mismatch "SB!"
-                                                     (package-name package))
-                                           3))
-                                      (list-all-packages))))))
+     (or (eq '.anonymous. what)
+         (member (symbol-package what)
+                 (load-time-value (list* (find-package "COMMON-LISP")
+                                         (find-package "KEYWORD")
+                                         (remove-if-not
+                                          (lambda (package)
+                                            (= (mismatch "SB!"
+                                                         (package-name package))
+                                               3))
+                                          (list-all-packages)))))))
     (t t)))
 
 (defun record-xref (kind what context node path)