From 592ecf78ec904eea390ca67dbacf00d486276c58 Mon Sep 17 00:00:00 2001 From: Alexey Dejneka Date: Fri, 14 Nov 2003 04:49:06 +0000 Subject: [PATCH] 0.8.5.35: * Fix PFD bugs MISC.152, 153: be more accurate with deleted code in MAYBE-INFER-ITERATION-VAR-TYPE. --- src/compiler/ir1opt.lisp | 1 + tests/compiler.pure.lisp | 40 ++++++++++++++++++++++++++++++++++++++++ version.lisp-expr | 2 +- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/compiler/ir1opt.lisp b/src/compiler/ir1opt.lisp index 921e3e8..d7bdf0e 100644 --- a/src/compiler/ir1opt.lisp +++ b/src/compiler/ir1opt.lisp @@ -1160,6 +1160,7 @@ (set-use (principal-lvar-use (set-value set))) (() (and (combination-p set-use) (fun-info-p (combination-kind set-use)) + (not (node-to-be-deleted-p set-use)) (eq (combination-fun-source-name set-use) '+)) :exit-if-null) (+-args (basic-combination-args set-use)) diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index ac15d8c..13aad3e 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -806,3 +806,43 @@ (common-lisp:handler-case (ash a (min 36 22477))))))))) 100000 0 0))) + +;;; MISC.152, 153: deleted code and iteration var type inference +(assert (eql (funcall + (compile nil + '(lambda (a) + (block b5 + (let ((v1 (let ((v8 (unwind-protect 9365))) + 8862008))) + (* + (return-from b5 + (labels ((%f11 (f11-1) f11-1)) + (%f11 87246015))) + (return-from b5 + (setq v1 + (labels ((%f6 (f6-1 f6-2 f6-3) v1)) + (dpb (unwind-protect a) + (byte 18 13) + (labels ((%f4 () 27322826)) + (%f6 -2 -108626545 (%f4)))))))))))) + -6) + 87246015)) + +(assert (eql (funcall + (compile nil + '(lambda (a) + (if (logbitp 3 + (case -2 + ((-96879 -1035 -57680 -106404 -94516 -125088) + (unwind-protect 90309179)) + ((-20811 -86901 -9368 -98520 -71594) + (let ((v9 (unwind-protect 136707))) + (block b3 + (setq v9 + (let ((v4 (return-from b3 v9))) + (- (ignore-errors (return-from b3 v4)))))))) + (t -50))) + -20343 + a))) + 0) + -20343)) diff --git a/version.lisp-expr b/version.lisp-expr index c812973..4a41772 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; 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.5.34" +"0.8.5.35" -- 1.7.10.4