projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.7.25:
[sbcl.git]
/
src
/
compiler
/
dfo.lisp
diff --git
a/src/compiler/dfo.lisp
b/src/compiler/dfo.lisp
index
6d5d6a7
..
195226d
100644
(file)
--- a/
src/compiler/dfo.lisp
+++ b/
src/compiler/dfo.lisp
@@
-22,7
+22,7
@@
(let ((head (component-head component)))
(do ()
((dolist (ep (block-succ head) t)
(let ((head (component-head component)))
(do ()
((dolist (ep (block-succ head) t)
- (unless (block-flag ep)
+ (unless (or (block-flag ep) (block-delete-p ep))
(find-dfo-aux ep head component)
(return nil))))))
(let ((num 0))
(find-dfo-aux ep head component)
(return nil))))))
(let ((num 0))
@@
-30,10
+30,8
@@
(do-blocks-backwards (block component :both)
(if (block-flag block)
(setf (block-number block) (incf num))
(do-blocks-backwards (block component :both)
(if (block-flag block)
(setf (block-number block) (incf num))
- (setf (block-delete-p block) t)))
- (do-blocks (block component)
- (when (block-delete-p block)
- (delete-block block))))
+ (delete-block-lazily block)))
+ (clean-component component (component-head component)))
(values))
;;; Move all the code and entry points from OLD to NEW. The code in
(values))
;;; Move all the code and entry points from OLD to NEW. The code in
@@
-89,7
+87,7
@@
(defun find-dfo-aux (block head component)
(unless (eq (block-component block) component)
(join-components component (block-component block)))
(defun find-dfo-aux (block head component)
(unless (eq (block-component block) component)
(join-components component (block-component block)))
- (unless (block-flag block)
+ (unless (or (block-flag block) (block-delete-p block))
(setf (block-flag block) t)
(dolist (succ (block-succ block))
(find-dfo-aux succ head component))
(setf (block-flag block) t)
(dolist (succ (block-succ block))
(find-dfo-aux succ head component))