]> gitweb.factorcode.org Git - factor.git/blob - extra/compiler/cfg/gvn/misc/misc.factor
compiler.cfg.gvn.misc: simplify ##phi rewrite
[factor.git] / extra / compiler / cfg / gvn / misc / misc.factor
1 ! Copyright (C) 2010 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs cpu.architecture grouping kernel
4 sequences
5 compiler.cfg.instructions
6 compiler.cfg.utilities
7 compiler.cfg.gvn.graph
8 compiler.cfg.gvn.rewrite ;
9 IN: compiler.cfg.gvn.misc
10
11 M: ##replace rewrite
12     [ loc>> ] [ src>> vreg>insn ] bi
13     dup literal-insn? [
14         insn>literal dup immediate-store?
15         [ swap \ ##replace-imm new-insn ] [ 2drop f ] if
16     ] [ 2drop f ] if ;
17
18 M: ##phi rewrite
19     [ dst>> ] [ inputs>> values [ vreg>vn ] map sift ] bi
20     dup all-equal? [
21         [ drop f ]
22         [ first <copy> ] if-empty
23     ] [ 2drop f ] if ;