+
+(defun handle-nested-dynamic-extent-lvars (arg)
+ (let ((use (lvar-uses arg)))
+ ;; Stack analysis wants DX value generators to end their
+ ;; blocks. Uses of mupltiple used LVARs already end their blocks,
+ ;; so we just need to process used-once LVARs.
+ (when (node-p use)
+ (node-ends-block use))
+ ;; If the function result is DX, so are its arguments... This
+ ;; assumes that all our DX functions do not store their arguments
+ ;; anywhere -- just use, and maybe return.
+ (if (basic-combination-p use)
+ (cons arg (funcall (lambda (lists)
+ (reduce #'append lists))
+ (mapcar #'handle-nested-dynamic-extent-lvars (basic-combination-args use))))
+ (list arg))))
+