1.0.28.72: two regressions from 1.0.28.59
[sbcl.git] / src / compiler / physenvanal.lisp
index 592c002..e43bf9e 100644 (file)
                        do (etypecase what
                             (cons
                              (let ((lvar (cdr what)))
-                               (if (lvar-good-for-dx-p lvar (car what) component)
-                                   (let ((real (principal-lvar lvar)))
-                                     (setf (lvar-dynamic-extent real) cleanup)
-                                     (real-dx-lvars real))
-                                   (setf (lvar-dynamic-extent lvar) nil))))
+                               (cond ((lvar-good-for-dx-p lvar (car what) component)
+                                      (let ((real (principal-lvar lvar)))
+                                        (setf (lvar-dynamic-extent real) cleanup)
+                                        (real-dx-lvars real)))
+                                     (t
+                                      (do-uses (use lvar)
+                                        (unless (ref-p use)
+                                          (let ((*compiler-error-context* use))
+                                            (compiler-notify "could not stack allocate the result of ~S"
+                                                             (find-original-source (node-source-path use))))))
+                                      (setf (lvar-dynamic-extent lvar) nil)))))
                             (node       ; DX closure
                              (let* ((call what)
                                     (arg (first (basic-combination-args call)))