From: Nathan Froyd Date: Tue, 5 Jul 2005 20:44:37 +0000 (+0000) Subject: 0.9.2.31: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=3fe0010d2777b41e01ea9b4a0f894cfa40f7df1b;p=sbcl.git 0.9.2.31: Oops. Revert broken 0.9.2.6 change. Record a BUG for posterity. ...fix the run-tests.sh script while we're at it, too. --- diff --git a/BUGS b/BUGS index a6fca6d..42b6a8e 100644 --- a/BUGS +++ b/BUGS @@ -2083,3 +2083,16 @@ WORKAROUND: Similar problems exist with SIMPLE-ARRAY-P, ARRAY-HEADER accessors and all array dimension functions. + +383: ASH'ing non-constant zeros + Compiling + (lambda (b) + (declare (type (integer -2 14) b)) + (declare (ignorable b)) + (ash (imagpart b) 57)) + on PPC (and other platforms, presumably) gives an error during the + emission of FASH-ASH-LEFT/FIXNUM=>FIXNUM as the assembler attempts to + stuff a too-large constant into the immediate field of a PPC + instruction. Either the VOP should be fixed or the compiler should be + taught how to transform this case away, paying particular attention + to side-effects that might occur in the arguments to ASH. diff --git a/src/compiler/srctran.lisp b/src/compiler/srctran.lisp index 20ce740..b4214fc 100644 --- a/src/compiler/srctran.lisp +++ b/src/compiler/srctran.lisp @@ -3110,7 +3110,7 @@ ;;; Perhaps we should have to prove that the denominator is nonzero before ;;; doing them? -- WHN 19990917 (macrolet ((def (name) - `(deftransform ,name ((x y) ((integer 0 0) integer) + `(deftransform ,name ((x y) ((constant-arg (integer 0 0)) integer) *) "fold zero arg" 0))) @@ -3118,7 +3118,7 @@ (def /)) (macrolet ((def (name) - `(deftransform ,name ((x y) ((integer 0 0) integer) + `(deftransform ,name ((x y) ((constant-arg (integer 0 0)) integer) *) "fold zero arg" '(values 0 0)))) diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index a7e59e3..7cb31f2 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -1785,6 +1785,12 @@ ;;; crash in the ASH vop (since a shift of 57 wouldn't fit in the ;;; machine's ASH instruction's immediate field) that the compiler ;;; thought was legitimate. +;;; +;;; FIXME: this has been recorded as bug 383. The attempted fix (sbcl +;;; 0.9.2.6) led to lots of spurious optimization notes. So the bug stil +;;; exist and this test case serves as a reminder of the problem. +;;; --njf, 2005-07-05 +#+nil (compile 'nil (LAMBDA (B) (DECLARE (TYPE (INTEGER -2 14) B)) diff --git a/tests/run-tests.sh b/tests/run-tests.sh index 4060d14..89bdaaa 100644 --- a/tests/run-tests.sh +++ b/tests/run-tests.sh @@ -20,7 +20,7 @@ # generated relative to `pwd` in the tests/ directory) so that tests # can chdir before invoking SBCL and still work. sbclstem=`pwd`/../src/runtime/sbcl -SBCL="${1:-$sbclstem --core `pwd`/../output/sbcl.core --noinform --sysinit /dev/null --userinit /dev/null --noprint}" +SBCL="${1:-$sbclstem --core `pwd`/../output/sbcl.core --noinform --sysinit /dev/null --userinit /dev/null --noprint --disable-debugger}" export SBCL echo /running tests on SBCL=\'$SBCL\' # more or less like SBCL, but without enough grot removed that appending diff --git a/version.lisp-expr b/version.lisp-expr index 8c0f018..e551092 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.2.30" +"0.9.2.31"