X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler.impure-cload.lisp;h=39c4d18d60a922041e9e79532f8d61242736ff77;hb=b7d4d90a22c7dff0c41d261fc4f5c3266edd2a6e;hp=9a2d2f6d48f8c38d4e1a3ede3cd6c2b783e8ce76;hpb=b3e7d6608689a639cb774e2ce15bb5bacaed5179;p=sbcl.git diff --git a/tests/compiler.impure-cload.lisp b/tests/compiler.impure-cload.lisp index 9a2d2f6..39c4d18 100644 --- a/tests/compiler.impure-cload.lisp +++ b/tests/compiler.impure-cload.lisp @@ -391,5 +391,22 @@ (foo-b (z) (foo-a z))) (declare (inline foo-a)) (foo-a x))) + +;;; broken inference of an upper bound of an iteration variable, +;;; reported by Rajat Datta. +(defun isieve (num) + (let ((vec (make-array num :initial-element 0)) + (acc 0)) + (do ((i 2 (+ i 1))) + ((>= i num) 'done) + (when (= (svref vec i) 0) + (do ((j (* i i) (+ j i))) + ((>= j num) 'done) + (setf (svref vec j) 1)) + (incf acc))) + acc)) + +(assert (= (isieve 46349) 4792)) + (sb-ext:quit :unix-status 104)