projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.10.32:
[sbcl.git]
/
src
/
compiler
/
ir1opt.lisp
diff --git
a/src/compiler/ir1opt.lisp
b/src/compiler/ir1opt.lisp
index
bfad3a0
..
370c5a9
100644
(file)
--- a/
src/compiler/ir1opt.lisp
+++ b/
src/compiler/ir1opt.lisp
@@
-337,7
+337,11
@@
(not (eq (block-home-lambda block)
(block-home-lambda next)))
;; Stack analysis phase wants ENTRY to start a block.
(not (eq (block-home-lambda block)
(block-home-lambda next)))
;; Stack analysis phase wants ENTRY to start a block.
- (entry-p (block-start-node next)))
+ (entry-p (block-start-node next))
+ (let ((last (block-last block)))
+ (and (valued-node-p last)
+ (awhen (node-lvar last)
+ (consp (lvar-uses it))))))
nil)
(t
(join-blocks block next)
nil)
(t
(join-blocks block next)
@@
-1080,10
+1084,9
@@
(block-next (node-block call)))
(let ((new-fun (ir1-convert-inline-lambda
res
(block-next (node-block call)))
(let ((new-fun (ir1-convert-inline-lambda
res
- :debug-name (debug-namify "LAMBDA-inlined ~A"
- (as-debug-name
- source-name
- "<unknown function>"))))
+ :debug-name (debug-namify "LAMBDA-inlined "
+ source-name
+ "<unknown function>")))
(ref (lvar-use (combination-fun call))))
(change-ref-leaf ref new-fun)
(setf (combination-kind call) :full)
(ref (lvar-use (combination-fun call))))
(change-ref-leaf ref new-fun)
(setf (combination-kind call) :full)
@@
-1748,7
+1751,9
@@
(unless next-block
(when ctran (ensure-block-start ctran))
(setq next-block (first (block-succ (node-block cast))))
(unless next-block
(when ctran (ensure-block-start ctran))
(setq next-block (first (block-succ (node-block cast))))
- (ensure-block-start (node-prev cast)))
+ (ensure-block-start (node-prev cast))
+ (reoptimize-lvar lvar)
+ (setf (lvar-%derived-type value) nil))
(%delete-lvar-use use)
(add-lvar-use use lvar)
(unlink-blocks (node-block use) (node-block cast))
(%delete-lvar-use use)
(add-lvar-use use lvar)
(unlink-blocks (node-block use) (node-block cast))
@@
-1769,7
+1774,9
@@
;; FIXME: Do it in one step.
(filter-lvar
value
;; FIXME: Do it in one step.
(filter-lvar
value
- `(multiple-value-call #'list 'dummy))
+ (if (cast-single-value-p cast)
+ `(list 'dummy)
+ `(multiple-value-call #'list 'dummy)))
(filter-lvar
(cast-value cast)
;; FIXME: Derived type.
(filter-lvar
(cast-value cast)
;; FIXME: Derived type.