diff --git a/extra/compiler/cfg/gvn/avail/avail.factor b/extra/compiler/cfg/gvn/avail/avail.factor index 906646281c..768850df8b 100644 --- a/extra/compiler/cfg/gvn/avail/avail.factor +++ b/extra/compiler/cfg/gvn/avail/avail.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2011 Alex Vondrak. ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs hashtables kernel namespaces sequences -sequences.extras sets +sets compiler.cfg compiler.cfg.dataflow-analysis compiler.cfg.def-use @@ -24,9 +24,12 @@ M: avail transfer-set drop defined assoc-union ; : available? ( vn -- ? ) basic-block get avail-in key? ; +: best-vreg ( available-vregs -- vreg ) + [ f ] [ infimum ] if-empty ; + : >avail-vreg ( vreg -- vreg/f ) final-iteration? get [ - congruence-class [ available? ] filter ?infimum + congruence-class [ available? ] filter best-vreg ] when ; : available-uses? ( insn -- ? )