From: Alastair Bridgewater Date: Wed, 6 May 2009 21:12:08 +0000 (+0000) Subject: 1.0.28.22: Fix deref of (alien (* t)) values X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=4fba4f48670186616a081b0fc00076c2174ba77d;p=sbcl.git 1.0.28.22: Fix deref of (alien (* t)) values When attempting to deref a value known to the compiler as an (alien (* t)) issue a compiler note rather than attempting to open-code (the type may be better known at run-time). Update NEWS with mention of the changes from 1.0.28.11 (oops). --- diff --git a/NEWS b/NEWS index 3aa0e0e..45585c9 100644 --- a/NEWS +++ b/NEWS @@ -10,8 +10,13 @@ * bug fix: some forms of AND, OR, and COND resulted in expansions that could result in their subforms being treated as top level forms. (reported by James Knight) + * bug fix: On x86/x86-64 alien functions declared to return integers shorter + than a machine register could leave garbage in the high bits of the + result register (bug 316325). * bug fix: disable address space randomization Linux/x86-64 as well, not just x86-64. (reported by Ken Olum) + * bug fix: Attempting to DEREF an (ALIEN (* T)) would produce a WARNING and + generate incorrect code. * bug fix: #201; type inference for CONS and ARRAY types could derive wrong results in the presence of eg. RPLACA or ADJUST-ARRAY. * bug fix: special variables with a proclaimed specific subtype of FUNCTION diff --git a/src/compiler/aliencomp.lisp b/src/compiler/aliencomp.lisp index bebc0a3..4321c31 100644 --- a/src/compiler/aliencomp.lisp +++ b/src/compiler/aliencomp.lisp @@ -190,6 +190,8 @@ (abort-ir1-transform "too many indices for pointer deref: ~W" (length indices))) (let ((element-type (alien-pointer-type-to alien-type))) + (unless element-type + (give-up-ir1-transform "unable to open code deref of wild pointer type")) (if indices (let ((bits (alien-type-bits element-type)) (alignment (alien-type-alignment element-type))) diff --git a/version.lisp-expr b/version.lisp-expr index b4722a2..17e9d15 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".) -"1.0.28.21" +"1.0.28.22"