From: Taylor R Campbell <campbell@mumble.net>
Date: Wed, 28 Nov 2018 08:51:28 +0000 (+0000)
Subject: Delete a rewriting rule that could not possibly have ever matched.
X-Git-Tag: mit-scheme-pucked-10.1.7~3^2~147
X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=65ec17ef58af29228056fc2bd83523c4f83640a4;p=mit-scheme.git

Delete a rewriting rule that could not possibly have ever matched.

It would have required (object->float (object->float ...)) to appear
in the input, which makes no sense.
---

diff --git a/src/compiler/machines/x86-64/rulrew.scm b/src/compiler/machines/x86-64/rulrew.scm
index 1f6391022..b3a6a8e21 100644
--- a/src/compiler/machines/x86-64/rulrew.scm
+++ b/src/compiler/machines/x86-64/rulrew.scm
@@ -224,30 +224,6 @@ USA.
 		(and (fix:fixnum? n)
 		     (predicate n)))))))
 
-(define-rule rewriting
-  (OBJECT->FLOAT (REGISTER (? operand register-known-value)))
-  ;; This is not quite what we want.  We really want to rewrite all
-  ;; OBJECT->FLOAT expressions with known constant operands, not just
-  ;; the nonzero ones, and then decide later whether to put it in
-  ;; memory based on whether there is a temporary register that we can
-  ;; zero with XOR.  By not rewriting this case when the constant is
-  ;; zero, using a temporary may cause some other register to be
-  ;; written to memory, which defeats the purpose of using XOR to
-  ;; avoid memory access.
-  (QUALIFIER (rtl:constant-flonum-test operand flo:nonzero?))
-  (rtl:make-object->float operand))
-
-(define (rtl:constant-flonum-test expression predicate)
-  (and (rtl:object->float? expression)
-       (let ((expression (rtl:object->float-expression expression)))
-	 (and (rtl:constant? expression)
-	      (let ((n (rtl:constant-value expression)))
-		(and (flo:flonum? n)
-		     (predicate n)))))))
-
-(define-integrable (flo:nonzero? value)
-  (not (flo:= value 0.)))
-
 ;;;; Indexed addressing modes
 
 (define-rule rewriting