diff --git a/extra/compiler/cfg/gvn/expressions/expressions.factor b/extra/compiler/cfg/gvn/expressions/expressions.factor index e87fe66d89..c656d4ccc0 100644 --- a/extra/compiler/cfg/gvn/expressions/expressions.factor +++ b/extra/compiler/cfg/gvn/expressions/expressions.factor @@ -84,5 +84,8 @@ M: ##load-integer >expr val>> ; M: ##load-reference >expr obj>> ; +! TODO experiment with sorting, in case that identifies more +! phi equivalences + M: ##phi >expr inputs>> values [ vreg>vn ] map \ ##phi prefix ; diff --git a/extra/compiler/cfg/gvn/misc/misc.factor b/extra/compiler/cfg/gvn/misc/misc.factor index 864af7b0b5..9e23ae3bdd 100644 --- a/extra/compiler/cfg/gvn/misc/misc.factor +++ b/extra/compiler/cfg/gvn/misc/misc.factor @@ -16,10 +16,8 @@ M: ##replace rewrite ] [ 2drop f ] if ; M: ##phi rewrite - [ dst>> ] [ inputs>> values [ vreg>vn ] map ] bi - dup sift + [ dst>> ] [ inputs>> values [ vreg>vn ] map sift ] bi dup all-equal? [ - nip [ drop f ] [ first ] if-empty - ] [ 3drop f ] if ; + ] [ 2drop f ] if ;