;; 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.
+ ;;
+ ;; FIXME: Is this true? I cannot trigger any bad behaviour if I nuke this
+ ;; form, and the only assumption regarding block ends I see in in stack
+ ;; analysis is the one made by MAP-BLOCK-NLXES, which assumes that nodes
+ ;; with cleanups in their lexenv end their blocks. If this one is
+ ;; necessary, we should explain why in more detail. --NS 2008-07-19
(when (node-p uses)
(node-ends-block uses))
;; If this LVAR's USE is good for DX, it is either a CAST, or it
(not (lvar-dynamic-extent arg)))
append (handle-nested-dynamic-extent-lvars arg) into dx-lvars
finally (when dx-lvars
- ;; A call to non-LET with DX args must end its block,
- ;; otherwise stack analysis will not see the combination and
- ;; the associated cleanup/entry.
- (unless (eq :let (functional-kind fun))
- (node-ends-block call))
+ ;; Stack analysis requires that the CALL ends the block, so
+ ;; that MAP-BLOCK-NLXES sees the cleanup we insert here.
+ (node-ends-block call)
(binding* ((before-ctran (node-prev call))
(nil (ensure-block-start before-ctran))
(block (ctran-block before-ctran))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.18.22"
+"1.0.18.23"