diff --git a/compiler/srctran.lisp b/compiler/srctran.lisp index 0fa0ade8237a0e2d8bd28db245e400ee610b17b5..c99e2519e0bfc53392be1875902c5826d275c2bc 100644 --- a/compiler/srctran.lisp +++ b/compiler/srctran.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.138 2003/09/26 03:52:25 toy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.139 2003/10/10 09:29:18 gerd Exp $") ;;; ;;; ********************************************************************** ;;; @@ -2608,7 +2608,22 @@ ;;; by the bit position of the last set bit. We can't use this second method ;;; when the high order bit is bit 31 because shifting by 32 doesn't work ;;; too well. -;;; +;;; + +;;; This is commented out because its uses of TRULY-THE for vop +;;; selection lie to the compiler, leading to internal +;;; inconsistencies, which in turn lead to incorrect code being +;;; generated. Example: +;;; +;;; (funcall (compile nil +;;; '(lambda () (flet ((%f2 () 288213285)) +;;; (+ (%f2) (* 13 (%f2))))))) +;;; => segmentation violation +;;; +;;; The right fix for this is probably to port SBCL's modular +;;; functions implementation. + +#+nil (deftransform * ((x y) ((unsigned-byte 32) (unsigned-byte 32)) (unsigned-byte 32))