summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
fb24d88)
When SPEED = 3 > COMPILATION-SPEED, propagate type in code
like (cond ((eql (the fixnum x) y) (setf x 42) y) ...).
(binding* ((var (set-var node))
(nil (lambda-var-p var) :exit-if-null)
(nil (lambda-var-constraints var) :exit-if-null))
(binding* ((var (set-var node))
(nil (lambda-var-p var) :exit-if-null)
(nil (lambda-var-constraints var) :exit-if-null))
+ (when (policy node (and (= speed 3) (> speed compilation-speed)))
+ (let ((type (lambda-var-type var)))
+ (unless (eql *universal-type* type)
+ (do-eql-vars (other (var gen))
+ (unless (eql other var)
+ (conset-add-constraint gen 'typep other type nil))))))
(conset-clear-lambda-var gen var)
(let ((type (single-value-type (node-derived-type node))))
(unless (eq type *universal-type*)
(conset-clear-lambda-var gen var)
(let ((type (single-value-type (node-derived-type node))))
(unless (eq type *universal-type*)