Don't simplify 'equal?' to 'eq?' when constant is an *inexact* small integer.
authorMark H Weaver <mhw@netris.org>
Mon, 8 Oct 2012 03:57:13 +0000 (23:57 -0400)
committerMark H Weaver <mhw@netris.org>
Mon, 8 Oct 2012 03:57:13 +0000 (23:57 -0400)
* module/language/tree-il/primitives.scm (*primitive-expand-table*):
  Refine test for fixnums to verify that the small integer is exact.

* test-suite/tests/tree-il.test ("primitives"): Add test.

module/language/tree-il/primitives.scm
test-suite/tests/tree-il.test

index dc0a145..0c5b085 100644 (file)
                               (eq? #nil v)
                               (symbol? v)
                               (and (integer? v)
+                                   (exact? v)
                                    (<= v most-positive-fixnum)
                                    (>= v most-negative-fixnum)))
                           (make-application src (make-primitive-ref #f 'eq?)
index bb7f908..0a53037 100644 (file)
    (apply (primitive equal?) (const 42) (toplevel x))
    (apply (primitive eq?) (const 42) (toplevel x)))
 
+  (pass-if-primitives-resolved
+   (apply (primitive equal?) (const 42.0) (toplevel x))
+   (apply (primitive equal?) (const 42.0) (toplevel x)))
+
   (pass-if-primitives-resolved
    (apply (primitive equal?) (const #nil) (toplevel x))
    (apply (primitive eq?) (const #nil) (toplevel x))))