0.8.6.30:
authorAlexey Dejneka <adejneka@comail.ru>
Fri, 5 Dec 2003 19:25:18 +0000 (19:25 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Fri, 5 Dec 2003 19:25:18 +0000 (19:25 +0000)
        * Fix bug reported by PFD on sbcl-devel 2003-12-04
        ... VALUES transform: preserve (single-valuified) derived
            type;
        ... LET-CONVERT: flush combination derived type.

doc/internals-notes/threading-specials
src/code/parse-defmacro.lisp
src/compiler/ir1opt.lisp
src/compiler/locall.lisp
version.lisp-expr

index 5be6a67..aad7915 100644 (file)
@@ -647,7 +647,7 @@ SB-C::*COMPILER-ERROR-CONTEXT*
 SB-C::*SEEN-BLOCKS* 
 SB-C::*TN-ID* 
 SB-C::*IR1-OPTIMIZE-UNTIL-DONE-EVENT-INFO* 
-SB-C::*SPECIALIZED-ARRAY-ELEMENT-TYPE-PROPERTIES* 
+SB-C::*SPECIALIZED-ARRAY-ELEMENT-TYPE-PROPERTIES*       ; readonly
 SB-C::*NUMBER-CONTINUATIONS* 
 SB-C::*CTYPE-TEST-FUN*
 SB-C::*IGNORE-COST-VOPS* 
@@ -955,20 +955,20 @@ SB-VM::*MAYBE-USE-INLINE-ALLOCATION*
 SB-VM::*SIGNED-IMM-DWORD-PREFILTER-WRAPPER* 
 SB-VM::*IMMEDIATE-TYPES* 
 
-SB-KERNEL:*WILD-TYPE* 
+SB-KERNEL:*WILD-TYPE*                                   ; readonly
 SB-KERNEL:*UNPARSE-FUN-TYPE-SIMPLIFY* 
 SB-KERNEL:*CURRENT-LEVEL-IN-PRINT* 
 SB-KERNEL:*UNIVERSAL-FUN-TYPE* 
 SB-KERNEL:*COLD-INIT-COMPLETE-P* 
-SB-KERNEL:*UNIVERSAL-TYPE* 
+SB-KERNEL:*UNIVERSAL-TYPE*                              ; readonly
 SB-KERNEL:*HANDLER-CLUSTERS* 
-SB-KERNEL:*EMPTY-TYPE* 
+SB-KERNEL:*EMPTY-TYPE*                                  ; readonly
 SB-KERNEL:*MAXIMUM-ERROR-DEPTH* 
 SB-KERNEL:*CONDITION-RESTARTS* 
 SB-KERNEL:*TYPE-SYSTEM-INITIALIZED* 
 SB-KERNEL:*RESTART-CLUSTERS* 
 SB-KERNEL::*MAKE-VALUES-TYPE-CACHED-CACHE-VECTOR* 
-SB-KERNEL::*BUILT-IN-CLASS-CODES* 
+SB-KERNEL::*BUILT-IN-CLASS-CODES*                       ; readonly
 SB-KERNEL::*DEF!STRUCT-TYPE-MAKE-LOAD-FORM-FUN* 
 SB-KERNEL::*LAYOUT-CLOS-HASH-RANDOM-STATE* 
 SB-KERNEL::*TYPE-TEST-ORDERING* 
@@ -981,28 +981,28 @@ SB-KERNEL::*TYPE-INTERSECTION2-CACHE-VECTOR*
 SB-KERNEL::*COLD-INIT-FORMS*
 SB-KERNEL::*DEFAULT-DEFAULT* 
 SB-KERNEL::*RAW-SLOT-DATA-LIST* 
-SB-KERNEL::*SPECIALIZED-ARRAY-ELEMENT-TYPES* 
+SB-KERNEL::*SPECIALIZED-ARRAY-ELEMENT-TYPES*            ; readonly
 SB-KERNEL::*DEFSTRUCT-HOOKS* 
 SB-KERNEL::*VALUES-TYPE-UNION-CACHE-VECTOR* 
 SB-KERNEL::*INTERNAL-ERRORS* 
 SB-KERNEL::*VALUES-TYPE-INTERSECTION-CACHE-VECTOR* 
 SB-KERNEL::*FORWARD-REFERENCED-LAYOUTS* 
-SB-KERNEL::*SYSTEM-LETS* 
+SB-KERNEL::*SYSTEM-LETS*                                ; bound
 SB-KERNEL::*%COERCE-TO-VALUES-CACHE-VECTOR* 
 SB-KERNEL::*IGNORABLE-VARS*
-SB-KERNEL::*ENV-VAR* 
+SB-KERNEL::*ENV-VAR*                                    ; bound
 SB-KERNEL::|*%%MAKE-UNION-TYPE-cached-CACHE-VECTOR*| 
 SB-KERNEL::*CSUBTYPEP-CACHE-VECTOR* 
 SB-KERNEL::*EMPTY-CONDITION-SLOT* 
 SB-KERNEL::*TYPE-UNION2-CACHE-VECTOR* 
 SB-KERNEL::*TYPE-CLASS-FUN-SLOTS* 
-SB-KERNEL::*ARG-TESTS* 
-SB-KERNEL::*USER-LETS* 
+SB-KERNEL::*ARG-TESTS*                                  ; bound
+SB-KERNEL::*USER-LETS*                                  ; bound
 SB-KERNEL::|*%%MAKE-ARRAY-TYPE-cached-CACHE-VECTOR*| 
 SB-KERNEL::*FINDING-NAME* 
 SB-KERNEL::*TYPE-CLASSES* 
 SB-KERNEL::*VALUES-SPECIFIER-TYPE-CACHE-VECTOR* 
-SB-KERNEL::*FLOAT-FORMATS* 
+SB-KERNEL::*FLOAT-FORMATS*                              ; readonly
 SB-KERNEL::*INTERNAL-ERROR-ARGS*
 SB-KERNEL::*DEF!STRUCT-SUPERTYPE* 
 SB-KERNEL::*%TYPE-UNION-CACHE-VECTOR* 
@@ -1021,7 +1021,7 @@ SB-IMPL::*HANDLERS-INSTALLED*
 SB-IMPL::*READ-FROM-STRING-SPARES* 
 SB-IMPL::*HASH-TABLE-TESTS* 
 SB-IMPL::*ATTRIBUTE-NAMES* 
-SB-IMPL::*DAYS-BEFORE-MONTH* 
+SB-IMPL::*DAYS-BEFORE-MONTH*                            ; readonly
 SB-IMPL::*CHARACTER-ATTRIBUTES* 
 SB-IMPL::*UNIX-HOST* 
 SB-IMPL::*DESCRIPTOR-HANDLERS* 
@@ -1029,7 +1029,7 @@ SB-IMPL::*STRING-OUTPUT-STREAMS*
 SB-IMPL::*CLOSE-ON-ERROR* 
 SB-IMPL::*INTEGER-READER-SAFE-DIGITS* 
 SB-IMPL::*TIMEZONE-TABLE* 
-SB-IMPL::*BQ-COMMA-FLAG* 
+SB-IMPL::*BQ-COMMA-FLAG*                                ; readonly
 SB-IMPL::*PRINT-OBJECT-IS-DISABLED-P*
 SB-IMPL::*MERGE-SORT-TEMP-VECTOR* 
 SB-IMPL::*PROFILE-HASH-CACHE* 
@@ -1050,11 +1050,11 @@ SB-IMPL::*SHARP-SHARP-ALIST*
 SB-IMPL::*BASE-POWER* 
 SB-IMPL::*LOGICAL-PATHNAME-DEFAULTS* 
 SB-IMPL::*AVAILABLE-BUFFERS* 
-SB-IMPL::*BQ-DOT-FLAG* 
+SB-IMPL::*BQ-DOT-FLAG*                          ; readonly
 SB-IMPL::*CIRCULARITY-COUNTER* 
 SB-IMPL::*DIGITS* 
 SB-IMPL::*PREVIOUS-READTABLE-CASE* 
-SB-IMPL::*BQ-VECTOR-FLAG* 
+SB-IMPL::*BQ-VECTOR-FLAG*                       ; readonly
 SB-IMPL::*ABBREV-WEEKDAY-TABLE* 
 SB-IMPL::*LOGICAL-HOSTS* 
 SB-IMPL::*PACKAGE-NAMES* 
@@ -1067,7 +1067,7 @@ SB-IMPL::*PERIODIC-POLLING-FUNCTION*
 SB-IMPL::*ABORTED-COMPILATION-UNIT-COUNT*
 SB-IMPL::*LONG-WEEKDAY-TABLE* 
 SB-IMPL::*INTERNAL-SYMBOL-OUTPUT-FUN* 
-SB-IMPL::*BACKQUOTE-COUNT* 
+SB-IMPL::*BACKQUOTE-COUNT*                      ; bound
 SB-IMPL::*DIGIT-BASES* 
 SB-IMPL::*PREVIOUS-DRIBBLE-STREAMS* 
 SB-IMPL::*MAX-EVENT-TO-USEC* 
@@ -1078,7 +1078,7 @@ SB-IMPL::*LONG-MONTH-TABLE*
 SB-IMPL::*OLD-PACKAGE* 
 SB-IMPL::*INTEGER-READER-BASE-POWER* 
 SB-IMPL::*ERROR-THROW-UP-COUNT* 
-SB-IMPL::*BQ-AT-FLAG* 
+SB-IMPL::*BQ-AT-FLAG*                           ; readonly
 SB-IMPL::*MACHINE-VERSION*   ; unset/unbound ?  are we using this?
 SB-IMPL::*IGNORE-WILDCARDS* 
 SB-IMPL::*INCH-PTR* 
@@ -1101,8 +1101,8 @@ SB-IMPL::*PREVIOUS-CASE*
 SB-BIGNUM::*TRUNCATE-Y*
 SB-BIGNUM::*TRUNCATE-X*
 
-SB-INT:*CL-PACKAGE* 
-SB-INT:*KEYWORD-PACKAGE* 
+SB-INT:*CL-PACKAGE*                     ; readonly
+SB-INT:*KEYWORD-PACKAGE*                ; readonly
 SB-INT:*SETF-FDEFINITION-HOOK* 
 SB-INT:*DEFAULT-INIT-CHAR-FORM* 
 SB-INT:*EOF-OBJECT* 
index 94f8325..af0c7ba 100644 (file)
 
 ;;; variables for accumulating the results of parsing a DEFMACRO. (Declarations
 ;;; in DEFMACRO are the reason this isn't as easy as it sounds.)
-(defvar *arg-tests* nil) ; tests that do argument counting at expansion time
+(defvar *arg-tests*) ; tests that do argument counting at expansion time
 (declaim (type list *arg-tests*))
-(defvar *system-lets* nil) ; LET bindings done to allow lambda-list parsing
+(defvar *system-lets*) ; LET bindings done to allow lambda-list parsing
 (declaim (type list *system-lets*))
-(defvar *user-lets* nil) ; LET bindings that the user has explicitly supplied
+(defvar *user-lets*) ; LET bindings that the user has explicitly supplied
 (declaim (type list *user-lets*))
-(defvar *env-var* nil) ; &ENVIRONMENT variable name
+(defvar *env-var*) ; &ENVIRONMENT variable name
 
 ;; the default default for unsupplied &OPTIONAL and &KEY args
-(defvar *default-default* nil)
+(defvar *default-default*)
 
 ;;; temps that we introduce and might not reference
 (defvar *ignorable-vars*)
index 7238730..1ada265 100644 (file)
 (deftransform values ((&rest vals) * * :node node)
   (unless (lvar-single-value-p (node-lvar node))
     (give-up-ir1-transform))
-  (setf (node-derived-type node) *wild-type*)
+  (setf (node-derived-type node)
+        (make-short-values-type (list (single-value-type
+                                       (node-derived-type node)))))
   (principal-lvar-single-valuify (node-lvar node))
   (if vals
       (let ((dummies (make-gensym-list (length (cdr vals)))))
index f370eb3..9b3613d 100644 (file)
                          next-block)))
     (move-return-stuff fun call next-block)
     (merge-lets fun call)
-    (setf (node-tail-p call) nil)))
+    (setf (node-tail-p call) nil)
+    ;; If CALL has a derive type NIL, it means that "its return" is
+    ;; unreachable, but the next BIND is still reachable; in order to
+    ;; not confuse MAYBE-TERMINATE-BLOCK...
+    (setf (node-derived-type call) *wild-type*)))
 
 ;;; Reoptimize all of CALL's args and its result.
 (defun reoptimize-call (call)
index f5eaf92..565319a 100644 (file)
@@ -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.6.29"
+"0.8.6.30"