0.8.4.12:
authorChristophe Rhodes <csr21@cam.ac.uk>
Thu, 9 Oct 2003 11:05:11 +0000 (11:05 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Thu, 9 Oct 2003 11:05:11 +0000 (11:05 +0000)
commitb61003dec6f5af2b03549439155676666186283e
tree092611484319ffea8c343635e1924b1a75a1cc2b
parent11f02398a1a9ccbde847c82fd233e8378e45c29c
0.8.4.12:
        I'm not proud of this.

        HEALTH WARNING: this may not work.  It does for me, on Linux/PPC.
If your sourceforge-fu is strong, please try it.
        HEALTH WARNING: this is ugly as sin.  Unexported symbols, special
                assumptions, KLUDGEs thrown in with gay abandon.

        In partial mitigation, it does fix a bug :-)

        Fix for lying-to-the-compiler bug in
                UB32-STRENGTH-REDUCE-CONSTANT-MULTIPLY
        ... turn TRULY-THEs into suitable LOGANDs
                (inefficient in compile-time space; we only need one
                LOGAND wrapping the resulting form)
        ... likewise in x86 OPTIMIZE-MULTIPLY
                (even less efficient: constant mask is first :-)
        but that would be slow at runtime if we just left it there, so
        ... add - as a modular function (that was easy)
        ... add preliminary support for ASH as a modular function
                (for constant right shifts):
        ... delete ASH-RIGHT-[UN]SIGNED from the sparc backend
                (will be restored eventually, fear not, probably more
cross-platformly)
        ... hack in special knowledge about ASH into CUT-TO-WIDTH
        ... ensure that all backends have a suitable VOP for translation
                of new ASH function
        ... (alpha version is 64bit, oh yes)
        ... don't forget out-of-line version (for xc also!)
                (aside: might we not need out-of-line versions of
                other modular functions in the xc?)
12 files changed:
src/code/cross-misc.lisp
src/code/numbers.lisp
src/compiler/alpha/arith.lisp
src/compiler/generic/vm-tran.lisp
src/compiler/hppa/arith.lisp
src/compiler/mips/arith.lisp
src/compiler/ppc/arith.lisp
src/compiler/sparc/arith.lisp
src/compiler/srctran.lisp
src/compiler/x86/arith.lisp
tests/compiler.pure.lisp
version.lisp-expr