From 7828111b77fb53e34b365abc775148f49eabe1d2 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Thu, 15 Nov 2018 23:26:21 -0800 Subject: [PATCH] Remove workaround for 9.2 compiler bug. --- src/runtime/floenv.scm | 51 ++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 27 deletions(-) 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 -- 2.25.1