(cond
((lvar-delayed-leaf lvar)
(setf (ir2-lvar-kind info) :delayed))
- (t (setf (ir2-lvar-locs info)
- (list (make-normal-tn (ir2-lvar-primitive-type info)))))))
+ (t (let ((tn (make-normal-tn (ir2-lvar-primitive-type info))))
+ (setf (ir2-lvar-locs info) (list tn))
+ #!+stack-grows-downward-not-upward
+ (when (lvar-dynamic-extent lvar)
+ (setf (ir2-lvar-stack-pointer info)
+ (make-stack-pointer-tn)))))))
(ltn-annotate-casts lvar)
(values))
;;; reference, otherwise we annotate for a single value.
(defun annotate-fun-lvar (lvar &optional (delay t))
(declare (type lvar lvar))
+ (aver (not (lvar-dynamic-extent lvar)))
(let* ((tn-ptype (primitive-type (lvar-type lvar)))
(info (make-ir2-lvar tn-ptype)))
(setf (lvar-info lvar) info)
(defun annotate-unknown-values-lvar (lvar)
(declare (type lvar lvar))
+ (aver (not (lvar-dynamic-extent lvar)))
(let ((2lvar (make-ir2-lvar nil)))
(setf (ir2-lvar-kind 2lvar) :unknown)
(setf (ir2-lvar-locs 2lvar) (make-unknown-values-locations))
;;; specified primitive TYPES.
(defun annotate-fixed-values-lvar (lvar types)
(declare (type lvar lvar) (list types))
+ (aver (not (lvar-dynamic-extent lvar))) ; XXX
(let ((res (make-ir2-lvar nil)))
(setf (ir2-lvar-locs res) (mapcar #'make-normal-tn types))
(setf (lvar-info lvar) res))
(setf (node-tail-p call) nil))
(t
(setf (basic-combination-info call) :full)
- (annotate-fun-lvar (basic-combination-fun call)
- nil)
+ (annotate-fun-lvar (basic-combination-fun call) nil)
(dolist (arg (reverse args))
(annotate-unknown-values-lvar arg))
(flush-full-call-tail-transfer call))))
(defun template-args-ok (template call safe-p)
(declare (type template template)
(type combination call))
+ (declare (ignore safe-p))
(let ((mtype (template-more-args-type template)))
(do ((args (basic-combination-args call) (cdr args))
(types (template-arg-types template) (cdr types)))
(when (losers)
(collect ((messages)
- (count 0 +))
+ (notes 0 +))
(flet ((lose1 (string &rest stuff)
(messages string)
(messages stuff)))
(dolist (loser (losers))
(when (and *efficiency-note-limit*
- (>= (count) *efficiency-note-limit*))
+ (>= (notes) *efficiency-note-limit*))
(lose1 "etc.")
(return))
(let* ((type (template-type loser))
(t
(aver (ltn-policy-safe-p ltn-policy))
(lose1 "can't trust output type assertion under safe policy")))
- (count 1))))
+ (notes 1))))
(let ((*compiler-error-context* call))
(compiler-notify "~{~?~^~&~6T~}"