[armedbear-cvs] r11564 - trunk/abcl/src/org/armedbear/lisp
Erik Huelsmann
ehuelsmann at common-lisp.net
Sun Jan 18 18:34:54 UTC 2009
Author: ehuelsmann
Date: Sun Jan 18 18:34:53 2009
New Revision: 11564
Log:
Fix compiler issue found by compiling AP5: Instead of calculating the true upper bound
(which may become a number as big as 2^most-positive-fixnum), return '* as the upper bound
instead. The number won't fit into a fixnum anyway.
Modified:
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
Modified: trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp (original)
+++ trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp Sun Jan 18 18:34:53 2009
@@ -6139,7 +6139,8 @@
;; Everything is non-negative.
(setf result-type (list 'INTEGER
(ash low1 low2)
- (ash high1 high2))))
+ (if (<= 64 high2)
+ '* (ash high1 high2)))))
((and (>= low1 0) (>= high1 0) (<= low2 0) (<= high2 0))
;; Negative (or zero) second argument.
(setf result-type (list 'INTEGER
More information about the armedbear-cvs
mailing list