Back out i386 rewriting rule to optimize OBJECT->FIXNUM operands.
authorTaylor R Campbell <campbell@mumble.net>
Sun, 17 Oct 2010 02:01:19 +0000 (02:01 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Sun, 17 Oct 2010 02:01:19 +0000 (02:01 +0000)
This causes conpar.scm, for example, to be miscompiled.

src/compiler/machines/i386/rulrew.scm

index 1b2dc8d232e39920d45912544462ba2aaef7e2b2..21acaaf54720f49e1d4257a8aaf87402d0f458cc 100644 (file)
@@ -150,6 +150,11 @@ USA.
   (QUALIFIER (rtl:constant-fixnum? source))
   (rtl:make-object->fixnum source))
 
+#|
+
+These are tempting, but there is a lapopt rule that makes
+OBJECT->FIXNUM not, after all, independent of the tag.
+
 (define-rule rewriting
   (OBJECT->FIXNUM (REGISTER (? source register-known-value)))
   (QUALIFIER (rtl:cons-non-pointer? source))
@@ -160,6 +165,8 @@ USA.
   (QUALIFIER (rtl:object->datum? source))
   (rtl:make-object->fixnum (rtl:object->datum-expression source)))
 
+|#
+
 (define-rule rewriting
   (FIXNUM-2-ARGS MULTIPLY-FIXNUM
                 (REGISTER (? operand-1 register-known-value))
@@ -176,7 +183,7 @@ USA.
   (QUALIFIER
    (and (rtl:constant-fixnum-test operand-2 (lambda (n) n true))))
   (rtl:make-fixnum-2-args 'MULTIPLY-FIXNUM operand-1 operand-2 overflow?))
-
+\f
 (define-rule rewriting
   (FIXNUM-2-ARGS (? operator)
                 (? operand-1)