nil
'(lambda (a)
(declare (type (integer 21 28) a))
- (declare (optimize (compilation-speed 1) (safety 2)
+ (declare (optimize (compilation-speed 1) (safety 2)
(speed 0) (debug 0) (space 1)))
(let* ((v7 (flet ((%f3 (f3-1 f3-2)
(loop for lv2 below 1
;;; MISC.626: bandaged AVER was still wrong
(assert (eql -829253
- (funcall
- (compile
- nil
- '(lambda (a)
- (declare (type (integer -902970 2) a))
- (declare (optimize (space 2) (debug 0) (compilation-speed 1)
- (speed 0) (safety 3)))
- (prog2 (if (logbitp 30 a) 0 (block b3 0)) a)))
- -829253)))
+ (funcall
+ (compile
+ nil
+ '(lambda (a)
+ (declare (type (integer -902970 2) a))
+ (declare (optimize (space 2) (debug 0) (compilation-speed 1)
+ (speed 0) (safety 3)))
+ (prog2 (if (logbitp 30 a) 0 (block b3 0)) a)))
+ -829253)))
;; MISC.628: constant-folding %LOGBITP was buggy
(assert (eql t
- (funcall
- (compile
- nil
- '(lambda ()
- (declare (optimize (safety 3) (space 3) (compilation-speed 3)
- (speed 0) (debug 1)))
- (not (not (logbitp 0 (floor 2147483651 (min -23 0))))))))))
+ (funcall
+ (compile
+ nil
+ '(lambda ()
+ (declare (optimize (safety 3) (space 3) (compilation-speed 3)
+ (speed 0) (debug 1)))
+ (not (not (logbitp 0 (floor 2147483651 (min -23 0))))))))))
+
+;; mistyping found by random-tester
+(assert (zerop
+ (funcall
+ (compile
+ nil
+ '(lambda ()
+ (declare (optimize (speed 1) (debug 0)
+ (space 2) (safety 0) (compilation-speed 0)))
+ (unwind-protect 0
+ (* (/ (multiple-value-prog1 -29457482 -5602513511) 1))))))))
+
+;; aggressive constant folding (bug #400)
+(assert
+ (eq t (funcall (compile nil '(lambda () (or t (the integer (/ 1 0))))))))
+
+(with-test (:name (:compiler :constraint-propagation :var-eql-to-non-var-1))
+ (assert
+ (handler-case
+ (compile nil '(lambda (x y)
+ (when (eql x (length y))
+ (locally
+ (declare (optimize (speed 3)))
+ (1+ x)))))
+ (compiler-note () (error "The code is not optimized.")))))
+
+(with-test (:name (:compiler :constraint-propagation :var-eql-to-non-var-2))
+ (assert
+ (handler-case
+ (compile nil '(lambda (x y)
+ (when (eql (length y) x)
+ (locally
+ (declare (optimize (speed 3)))
+ (1+ x)))))
+ (compiler-note () (error "The code is not optimized.")))))