! Copyright (C) 2008, 2010 Slava Pestov, 2011 Alex Vondrak
! See http://factorcode.org/license.txt for BSD license.
-USING: namespaces arrays assocs hashtables kernel accessors fry
-grouping sorting sets sequences locals
-cpu.architecture
-sequences.deep
-combinators
-compiler.cfg
-compiler.cfg.rpo
-compiler.cfg.def-use
-compiler.cfg.utilities
-compiler.cfg.instructions
-compiler.cfg.predecessors
-compiler.cfg.gvn.alien
-compiler.cfg.gvn.avail
-compiler.cfg.gvn.comparisons
-compiler.cfg.gvn.graph
-compiler.cfg.gvn.math
-compiler.cfg.gvn.rewrite
-compiler.cfg.gvn.slots
-compiler.cfg.gvn.misc
-compiler.cfg.gvn.expressions ;
+USING: accessors arrays assocs compiler.cfg compiler.cfg.def-use
+compiler.cfg.gvn.avail compiler.cfg.gvn.expressions
+compiler.cfg.gvn.graph compiler.cfg.gvn.rewrite
+compiler.cfg.instructions compiler.cfg.predecessors
+compiler.cfg.rpo compiler.cfg.utilities grouping kernel
+namespaces sequences sequences.deep ;
IN: compiler.cfg.gvn
GENERIC: simplify ( insn -- insn' )
dup compute-avail-sets
[ gcse-step ] simple-optimization ;
-: value-numbering ( cfg -- cfg )
- dup {
- [ needs-predecessors ]
- [ determine-value-numbers ]
- [ eliminate-common-subexpressions ]
- [ cfg-changed ]
- [ predecessors-changed ]
- } cleave ;
+: value-numbering ( cfg -- )
+ {
+ needs-predecessors
+ determine-value-numbers
+ eliminate-common-subexpressions
+ cfg-changed
+ predecessors-changed
+ } apply-passes ;