! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays classes classes.algebra combinators fry
-generic.parser kernel math namespaces quotations sequences slots
-words make sets
+USING: assocs accessors arrays classes classes.algebra
+combinators fry generic.parser kernel math namespaces
+quotations sequences slots words make sets
compiler.cfg.instructions
compiler.cfg.instructions.syntax
compiler.cfg.gvn.graph ;
M: ##load-integer >expr val>> <integer-expr> ;
M: ##load-reference >expr obj>> <reference-expr> ;
+
+M: ##phi >expr
+ inputs>> values [ vreg>vn ] map \ ##phi prefix ;
M: ##copy process-instruction
dup [ src>> vreg>vn ] [ dst>> ] bi set-vn ;
-M: ##phi rewrite
- [ dst>> ] [ inputs>> values [ vreg>vn ] map ] bi
- dup sift
- dup all-equal? [
- nip
- [ drop f ]
- [ first <copy> ] if-empty
- ] [ 3drop f ] if ;
-
M: ##phi process-instruction
dup rewrite
[ process-instruction ] [ check-redundancy ] ?if ;
-M: ##phi >expr
- inputs>> values [ vreg>vn ] map \ ##phi prefix ;
-
M: array process-instruction
[ process-instruction ] map ;
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors cpu.architecture kernel
+USING: accessors assocs cpu.architecture grouping kernel
+sequences
compiler.cfg.instructions
+compiler.cfg.utilities
compiler.cfg.gvn.graph
compiler.cfg.gvn.rewrite ;
IN: compiler.cfg.gvn.misc
insn>literal dup immediate-store?
[ swap \ ##replace-imm new-insn ] [ 2drop f ] if
] [ 2drop f ] if ;
+
+M: ##phi rewrite
+ [ dst>> ] [ inputs>> values [ vreg>vn ] map ] bi
+ dup sift
+ dup all-equal? [
+ nip
+ [ drop f ]
+ [ first <copy> ] if-empty
+ ] [ 3drop f ] if ;