From 014e7ad6cdd6158508892253ebf820521ce4bbd7 Mon Sep 17 00:00:00 2001 From: Alexey Dejneka Date: Fri, 5 Dec 2003 19:30:47 +0000 Subject: [PATCH] 0.8.6.30: * Fix bug reported by PFD on sbcl-devel 2003-12-04 ... VALUES transform: preserve (single-valuified) derived type; ... LET-CONVERT: flush combination derived type. --- NEWS | 1 + tests/compiler.pure.lisp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/NEWS b/NEWS index a9f68f1..a7342ad 100644 --- a/NEWS +++ b/NEWS @@ -2216,6 +2216,7 @@ changes in sbcl-0.8.7 relative to sbcl-0.8.6: ** extremely complex negations of CONS types were not being sufficiently canonicalized, leading to inconsistencies in SUBTYPEP. + ** VALUES tranformer lost derive type. planned incompatible changes in 0.8.x: * (not done yet, but planned:) When the profiling interface settles diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index 45c22e8..d7732db 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -966,3 +966,14 @@ (%f11 -120429363 (%f11 62362 b))))) 6714367 9645616 -637681868) -264223548)) + +;;; Bug reported by Paul F. Dietz caused by derive type loss in VALUE +;;; transform +(assert (equal (multiple-value-list + (funcall + (compile nil '(lambda () + (declare (optimize (speed 1) (space 0) (safety 3) (debug 3) (compilation-speed 1))) + (ceiling + (ceiling + (flet ((%f16 () 0)) (%f16)))))))) + '(0 0))) -- 1.7.10.4