back-propagate-one-dx-lvar: check the flag before processing nlx entries.

Fixes lp#1809565
This commit is contained in:
Stas Boukarev 2018-12-23 04:49:59 +03:00
parent e7485a9ba7
commit 85bc68ea29
2 changed files with 13 additions and 1 deletions

View file

@ -120,7 +120,9 @@
(when (eq (block-out block) nlx)
(map-block-nlxes
(lambda (nlx)
(mark (nlx-info-target nlx)))
(let ((target (nlx-info-target nlx)))
(when (eq (block-flag target) cycle)
(mark target))))
block)))
(mark (block)
(let ((2block (block-info block)))

View file

@ -1541,3 +1541,13 @@
(declare (dynamic-extent v))
(car (elt v 0))))
((t t) 10)))
(with-test (:name :back-propagate-one-dx-lvar-nlx)
(checked-compile-and-assert
()
`(lambda (c)
(catch 'c
(let ((v (list (vector 0 c 0 0) (catch 'ct5 (throw 'ct5 0)) 0)))
(declare (dynamic-extent v))
(elt (elt v 0) 1))))
((33) 33)))