+ block
+ (lambda (dx-cleanup)
+ (dolist (lvar (cleanup-info dx-cleanup))
+ (let* ((generator (lvar-use lvar))
+ (block (node-block generator))
+ (2block (block-info block)))
+ ;; DX objects, living in the LVAR, are
+ ;; alive in the environment, protected by
+ ;; the CLEANUP. We also cannot move them
+ ;; (because, in general, we cannot track
+ ;; all references to them). Therefore,
+ ;; everything, allocated deeper than a DX
+ ;; object, should be kept alive until the
+ ;; object is deallocated.
+ (setq new-end (merge-uvl-live-sets
+ new-end (ir2-block-end-stack 2block)))
+ (setq new-end (merge-uvl-live-sets
+ new-end (ir2-block-pushed 2block)))))))