diff --git a/module/language/tree-il/primitives.scm b/module/language/tree-il/primitives.scm index dc0a1457e..0c5b0855a 100644 --- a/module/language/tree-il/primitives.scm +++ b/module/language/tree-il/primitives.scm @@ -509,6 +509,7 @@ (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?) diff --git a/test-suite/tests/tree-il.test b/test-suite/tests/tree-il.test index bb7f90863..0a5303703 100644 --- a/test-suite/tests/tree-il.test +++ b/test-suite/tests/tree-il.test @@ -106,6 +106,10 @@ (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))))