From: William Harold Newman Date: Fri, 28 Apr 2006 13:08:50 +0000 (+0000) Subject: 0.9.12.4: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=3558758e6943e53c15bf76c2d4cfd4ee896c726b;p=sbcl.git 0.9.12.4: tweaked whitespace in compiler while hunting unsuccessfully for a quick fix for bug 401 logged bug 401 --- diff --git a/BUGS b/BUGS index 8088a3b..4b009c1 100644 --- a/BUGS +++ b/BUGS @@ -2129,6 +2129,22 @@ WORKAROUND: For some more details see comments for (define-alien-type-method (c-string :deport-gen) ...) in host-c-call.lisp. -400: "aggressive constant folding" - (fixed in sbcl-0.9.10.17) - +401: "optimizer runaway on bad constant type specifiers in TYPEP" + In 0.9.12.3 (and probably many earlier versions), COMPILE-FILE on + (defun ouch401 () + (etypecase (signum (- x y)) + ((-1 nil)) + ((0 1) (oops "shouldn't happen")))) + or just + (defun foo401 (x) + (typep x '(-1 nil))) + spins emitting what seems to be an endless series of compiler + warnings like + ; --> TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP + ; --> TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP + ; --> TYPEP + ; ==> + ; (TYPEP SB-C::OBJECT '(-1 NIL)) + ; + ; caught WARNING: + ; illegal type specifier for TYPEP: (-1 NIL) diff --git a/src/compiler/ir1tran.lisp b/src/compiler/ir1tran.lisp index 8026ab7..c6cf4d0 100644 --- a/src/compiler/ir1tran.lisp +++ b/src/compiler/ir1tran.lisp @@ -470,7 +470,8 @@ ,@body (return-from ,skip nil))))) (ir1-convert ,start ,next ,result - (make-compiler-error-form ,condition ,form))))))) + (make-compiler-error-form ,condition + ,form))))))) ;; Translate FORM into IR1. The code is inserted as the NEXT of the ;; CTRAN START. RESULT is the LVAR which receives the value of the @@ -516,8 +517,9 @@ (aver (and (consp lexical-def) (eq (car lexical-def) 'macro))) (ir1-convert start next result - (careful-expand-macro (cdr lexical-def) - form)))))) + (careful-expand-macro + (cdr lexical-def) + form)))))) ((or (atom opname) (not (eq (car opname) 'lambda))) (compiler-error "illegal function call")) (t diff --git a/version.lisp-expr b/version.lisp-expr index 291b8b1..8236d82 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.9.12.3" +"0.9.12.4"