diff --git a/module/language/tree-il/primitives.scm b/module/language/tree-il/primitives.scm index 0c5b0855a..c3cd8c67a 100644 --- a/module/language/tree-il/primitives.scm +++ b/module/language/tree-il/primitives.scm @@ -498,23 +498,14 @@ (define (maybe-simplify a b) (and (const? a) (let ((v (const-exp a))) - (cond - ((eq? #f v) - (make-application src (make-primitive-ref #f 'not) - (list b))) - ((eq? '() v) - (make-application src (make-primitive-ref #f 'null?) - (list b))) - ((or (eq? #t v) - (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?) - (list a b))) - (else #f))))) + (and (or (memq v '(#f #t () #nil)) + (symbol? v) + (and (integer? v) + (exact? v) + (<= v most-positive-fixnum) + (>= v most-negative-fixnum))) + (make-application src (make-primitive-ref #f 'eq?) + (list a b)))))) (or (maybe-simplify a b) (maybe-simplify b a))) (else #f))) diff --git a/test-suite/tests/tree-il.test b/test-suite/tests/tree-il.test index 0a5303703..008eb83fc 100644 --- a/test-suite/tests/tree-il.test +++ b/test-suite/tests/tree-il.test @@ -87,12 +87,12 @@ (with-test-prefix "primitives" (pass-if-primitives-resolved - (apply (primitive equal?) (toplevel x) (const #f)) - (apply (primitive not) (toplevel x))) + (apply (primitive equal?) (const #f) (toplevel x)) + (apply (primitive eq?) (const #f) (toplevel x))) (pass-if-primitives-resolved - (apply (primitive equal?) (toplevel x) (const ())) - (apply (primitive null?) (toplevel x))) + (apply (primitive equal?) (const ()) (toplevel x)) + (apply (primitive eq?) (const ()) (toplevel x))) (pass-if-primitives-resolved (apply (primitive equal?) (const #t) (lexical x y))