0.8.3.62:
[sbcl.git] / src / compiler / gtn.lisp
index 400ee93..a5537f1 100644 (file)
@@ -73,9 +73,9 @@
              reversed-ir2-physenv-alist)))
 
     (let ((res (make-ir2-physenv
-               :environment (nreverse reversed-ir2-physenv-alist)
+               :closure (nreverse reversed-ir2-physenv-alist)
                :return-pc-pass (make-return-pc-passing-location
-                                (external-entry-point-p clambda)))))
+                                (xep-p clambda)))))
       (setf (physenv-info lambda-physenv) res)
       (setf (ir2-physenv-old-fp res)
            (make-old-fp-save-location lambda-physenv))
 ;;;    a non-standard convention.
 (defun use-standard-returns (tails)
   (declare (type tail-set tails))
-  (let ((funs (tail-set-functions tails)))
-    (or (and (find-if #'external-entry-point-p funs)
+  (let ((funs (tail-set-funs tails)))
+    (or (and (find-if #'xep-p funs)
             (find-if #'has-full-call-use funs))
        (block punt
          (dolist (fun funs t)
            (dolist (ref (leaf-refs fun))
-             (let* ((cont (node-cont ref))
-                    (dest (continuation-dest cont)))
-               (when (and dest
+             (let* ((lvar (node-lvar ref))
+                    (dest (and lvar (lvar-dest lvar))))
+               (when (and (basic-combination-p dest)
                           (not (node-tail-p dest))
-                          (basic-combination-p dest)
-                          (eq (basic-combination-fun dest) cont)
+                          (eq (basic-combination-fun dest) lvar)
                           (eq (basic-combination-kind dest) :local))
                  (return-from punt nil)))))))))
 
 ;;; there is no such function, then be more vague.
 (defun return-value-efficiency-note (tails)
   (declare (type tail-set tails))
-  (let ((funs (tail-set-functions tails)))
+  (let ((funs (tail-set-funs tails)))
     (when (policy (lambda-bind (first funs))
                  (> (max speed space)
                     inhibit-warnings))
       (dolist (fun funs
                   (let ((*compiler-error-context* (lambda-bind (first funs))))
-                    (compiler-note
+                    (compiler-notify
                      "Return value count mismatch prevents known return ~
                       from these functions:~
                       ~{~%  ~A~}"
                (declare (ignore ignore))
                (when (eq count :unknown)
                  (let ((*compiler-error-context* (lambda-bind fun)))
-                   (compiler-note
+                   (compiler-notify
                     "Return type not fixed values, so can't use known return ~
                      convention:~%  ~S"
                     (type-specifier rtype)))
   (multiple-value-bind (types count) (values-types (tail-set-type tails))
     (let ((ptypes (mapcar #'primitive-type types))
          (use-standard (use-standard-returns tails)))
-      (when (and (eq count :unknown) (not use-standard))
+      (when (and (eq count :unknown) (not use-standard)
+                 (not (eq (tail-set-type tails) *empty-type*)))
        (return-value-efficiency-note tails))
       (if (or (eq count :unknown) use-standard)
          (make-return-info :kind :unknown
         (return (lambda-return fun)))
     (when (and return
               (not (eq (return-info-kind returns) :unknown))
-              (external-entry-point-p fun))
+              (xep-p fun))
       (do-uses (use (return-result return))
        (setf (node-tail-p use) nil))))
   (values))