From: Taylor R Campbell Date: Fri, 16 Nov 2018 17:01:39 +0000 (+0000) Subject: Revert "Revert "Remove workaround for 9.2 compiler bug."" X-Git-Tag: mit-scheme-pucked-10.1.2~16^2~67 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=9d4aab5e7f49ec0bb8355ad72eb2e13a9668a644;p=mit-scheme.git Revert "Revert "Remove workaround for 9.2 compiler bug."" This reverts commit 690adab07f3f98ccc53d38a75347f184e8811248. Let's try this again. --- diff --git a/src/runtime/floenv.scm b/src/runtime/floenv.scm index d4d478ee3..3c78ef5b5 100644 --- a/src/runtime/floenv.scm +++ b/src/runtime/floenv.scm @@ -362,30 +362,27 @@ USA. (define flo:nan.0) (define flo:+inf.0) (define flo:-inf.0) -;;; ZERO can be eliminated after 9.3 is released. It works around -;;; overly-aggressive constant folding in SF and LIAR. -(let ((zero (lambda () (identity-procedure 0.)))) - (if (flo:have-trap-enable/disable?) - (begin - (set! flo:nan.0 - (named-lambda (flo:nan.0) - (flo:with-exceptions-untrapped (flo:exception:invalid-operation) - (lambda () - (flo:/ 0. (zero)))))) - (set! flo:+inf.0 - (named-lambda (flo:+inf.0) - (flo:with-exceptions-untrapped (flo:exception:divide-by-zero) - (lambda () - (flo:/ +1. (zero)))))) - (set! flo:-inf.0 - (named-lambda (flo:-inf.0) - (flo:with-exceptions-untrapped (flo:exception:divide-by-zero) - (lambda () - (flo:/ -1. (zero)))))) - unspecific) - ;; This works on macOS. YMMV. - (begin - (set! flo:nan.0 (named-lambda (flo:nan.0) (flo:/ 0. (zero)))) - (set! flo:+inf.0 (named-lambda (flo:+inf.0) (flo:/ +1. (zero)))) - (set! flo:-inf.0 (named-lambda (flo:-inf.0) (flo:/ -1. (zero)))) - unspecific))) \ No newline at end of file +(if (flo:have-trap-enable/disable?) + (begin + (set! flo:nan.0 + (named-lambda (flo:nan.0) + (flo:with-exceptions-untrapped (flo:exception:invalid-operation) + (lambda () + (flo:/ 0. 0.))))) + (set! flo:+inf.0 + (named-lambda (flo:+inf.0) + (flo:with-exceptions-untrapped (flo:exception:divide-by-zero) + (lambda () + (flo:/ +1. 0.))))) + (set! flo:-inf.0 + (named-lambda (flo:-inf.0) + (flo:with-exceptions-untrapped (flo:exception:divide-by-zero) + (lambda () + (flo:/ -1. 0.))))) + unspecific) + ;; This works on macOS. YMMV. + (begin + (set! flo:nan.0 (named-lambda (flo:nan.0) (flo:/ 0. 0.))) + (set! flo:+inf.0 (named-lambda (flo:+inf.0) (flo:/ +1. 0.))) + (set! flo:-inf.0 (named-lambda (flo:-inf.0) (flo:/ -1. 0.))) + unspecific)) \ No newline at end of file