1.0.27.4: x86/x86-64 REP prefix has the same code as REPE (not REPNE)
[sbcl.git] / src / compiler / locall.lisp
index e758d67..7cb638b 100644 (file)
                 (handle-nested-dynamic-extent-lvars dx (cast-value use)))
                (combination
                 (loop for arg in (combination-args use)
-                      when (lvar-good-for-dx-p arg dx)
-                      append (handle-nested-dynamic-extent-lvars dx arg))))))
+                      ;; deleted args show up as NIL here
+                      when (and arg (lvar-good-for-dx-p arg dx))
+                      append (handle-nested-dynamic-extent-lvars dx arg)))
+               (ref
+                (let* ((other (trivial-lambda-var-ref-lvar use)))
+                  (unless (eq other lvar)
+                    (handle-nested-dynamic-extent-lvars dx other)))))))
       (cons lvar
             (if (listp uses)
                 (loop for use in uses
   (with-ir1-environment-from-node (lambda-bind (main-entry fun))
     (let ((res (ir1-convert-lambda (make-xep-lambda-expression fun)
                                    :debug-name (debug-name
-                                                'xep (leaf-debug-name fun)))))
+                                                'xep (leaf-debug-name fun))
+                                   :system-lambda t)))
       (setf (functional-kind res) :external
             (leaf-ever-used res) t
             (functional-entry-fun res) fun
                (%funcall ,entry ,@args))
             :debug-name (debug-name 'hairy-function-entry
                                     (lvar-fun-debug-name
-                                     (basic-combination-fun call)))))))
+                                     (basic-combination-fun call)))
+            :system-lambda t))))
     (convert-call ref call new-fun)
     (dolist (ref (leaf-refs entry))
       (convert-call-if-possible ref (lvar-dest (node-lvar ref))))))