diff --git a/compiler/float-tran.lisp b/compiler/float-tran.lisp index 64c568fb6e9b58a8736a3f5c60ff1610d576e549..2e7ce5e6f557e75a49db6f336b113fe82aabd864 100644 --- a/compiler/float-tran.lisp +++ b/compiler/float-tran.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/float-tran.lisp,v 1.99 2004/09/03 18:36:10 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/float-tran.lisp,v 1.100 2004/09/23 13:16:27 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -386,12 +386,18 @@ `(progn (defun ,aux-name (num) ;; When converting a number to a float, the limits are - ;; the same. + ;; the "same." (let* ((lo (bound-func #'(lambda (x) - (coerce x ',type)) + ;; If we can't coerce it, we + ;; return a NIL for the bound. + ;; (Is IGNORE-ERRORS too + ;; heavy-handed? Should we + ;; try to do something more + ;; fine-grained?) + (ignore-errors (coerce x ',type))) (numeric-type-low num))) (hi (bound-func #'(lambda (x) - (coerce x ',type)) + (ignore-errors (coerce x ',type))) (numeric-type-high num)))) (specifier-type `(,',type ,(or lo '*) ,(or hi '*)))))