From d9763e9075310cfbbae3f43f0cc7d638a95872ae Mon Sep 17 00:00:00 2001
From: Raymond Toy <toy.raymond@gmail.com>
Date: Sun, 10 Jan 2016 15:42:41 -0800
Subject: [PATCH] In WITH-FLOAT-TRAPS-*, remove the unused junk modifying the
 state.

We just want to return the original modes, so remove all the old
commented out stuff that was modifying the original modes to some
strange state.  This makes a lot more sense to me if
WITH-FLOAT-TRAPS-* actually restored the modes exactly as they were
before running the body.
---
 src/code/float-trap.lisp | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/src/code/float-trap.lisp b/src/code/float-trap.lisp
index b163cf3ed..63c6e810c 100644
--- a/src/code/float-trap.lisp
+++ b/src/code/float-trap.lisp
@@ -451,6 +451,10 @@
 		    ;; representing the invalid operation.  Otherwise, if we
 		    ;; enable the invalid trap later, these sticky bits will cause
 		    ;; an exception.
+		    ;;
+		    ;; FIXME: Consider removing these for ppc.  Since
+		    ;; we now restore the original modes exactly, I
+		    ;; don't think these are needed anymore.
 		    #+ppc
 		    (invalid-mask (if (member :invalid traps)
 				      (dpb 0
@@ -467,21 +471,8 @@
 				     (logand (,',merge-traps ,orig-modes ,trap-mask)
 					     ,exception-mask)))
 			  ,@body)
-		     ;; Restore the original traps and exceptions.
-		     (format *debug-io* "Saved fpu mode:   #x~4,'0x: ~S~%"
-			     ,orig-modes (decode-floating-point-modes ,orig-modes))
-		     (format *debug-io* "Current fpu mode: #x~4,'0x: ~S~%"
-			     (floating-point-modes) (get-floating-point-modes))
-		     #+nil
-		     (setf (floating-point-modes)
-			   (logior (logand ,orig-modes ,(logior traps exceptions))
-				   (logand ,orig-modes
-					   ,(logand trap-mask exception-mask)
-					   #+ppc
-					   ,invalid-mask
-					   #+mips ,(dpb 0 float-exceptions-byte #xffffffff))))
-		     (setf (floating-point-modes) ,orig-modes)
-		     ))))))))
+		     ;; Restore the modes exactly as they were.
+		     (setf (floating-point-modes) ,orig-modes)))))))))
 
   ;; WITH-FLOAT-TRAPS-MASKED  --  Public
   (with-float-traps masked logand
-- 
GitLab