Evaluate Values-Form and then the Forms, but return all the values of
Values-Form."
(let ((dummy (make-ctran)))
+ (ctran-starts-block dummy)
(ir1-convert start dummy result values-form)
(ir1-convert-progn-body dummy next nil forms)))
\f
(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)
(compiler-note () (error "IDENTITY derive-type not applied.")))
(assert (null (funcall (compile nil '(lambda (x) (funcall #'cddr x))) nil)))
+
+;;; MISC.293 = easy variant of bug 303: repeated write to the same
+;;; LVAR; here the first write may be cleared before the second is
+;;; made.
+(assert
+ (zerop
+ (funcall
+ (compile
+ nil
+ '(lambda ()
+ (declare (notinline complex))
+ (declare (optimize (speed 1) (space 0) (safety 1)
+ (debug 3) (compilation-speed 3)))
+ (flet ((%f () (multiple-value-prog1 0 (return-from %f 0))))
+ (complex (%f) 0)))))))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.10.3"
+"0.8.10.4"