diff --git a/basis/compiler/tree/cleanup/cleanup-tests.factor b/basis/compiler/tree/cleanup/cleanup-tests.factor index 54f8aaf20e..4a2e8671fb 100755 --- a/basis/compiler/tree/cleanup/cleanup-tests.factor +++ b/basis/compiler/tree/cleanup/cleanup-tests.factor @@ -510,3 +510,8 @@ cell-bits 32 = [ [ { array } declare 2 <groups> [ . . ] assoc-each ] \ nth-unsafe inlined? ] unit-test + +[ t ] [ + [ { fixnum fixnum } declare = ] + \ both-fixnums? inlined? +] unit-test \ No newline at end of file diff --git a/basis/compiler/tree/propagation/known-words/known-words.factor b/basis/compiler/tree/propagation/known-words/known-words.factor index d5aa5318a4..ecfd415579 100644 --- a/basis/compiler/tree/propagation/known-words/known-words.factor +++ b/basis/compiler/tree/propagation/known-words/known-words.factor @@ -199,8 +199,11 @@ generic-comparison-ops [ ] "outputs" set-word-prop \ both-fixnums? [ - [ class>> fixnum classes-intersect? not ] either? - f <literal-info> object-info ? + [ class>> ] bi@ { + { [ 2dup [ fixnum classes-intersect? not ] either? ] [ f <literal-info> ] } + { [ 2dup [ fixnum class<= ] both? ] [ t <literal-info> ] } + [ object-info ] + } cond 2nip ] "outputs" set-word-prop {