compiler.cfg.gvn: move crappy test code to compiler.cfg.gvn.testing
parent
4008edfdf8
commit
0e7fb629f5
Binary file not shown.
|
Before Width: | Height: | Size: 30 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 31 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB |
|
|
@ -86,64 +86,3 @@ M: array process-instruction
|
||||||
|
|
||||||
dup [ init-value-graph [ process-instruction ] map flatten ] simple-optimization
|
dup [ init-value-graph [ process-instruction ] map flatten ] simple-optimization
|
||||||
cfg-changed predecessors-changed ;
|
cfg-changed predecessors-changed ;
|
||||||
|
|
||||||
USING: io math math.private prettyprint tools.annotations
|
|
||||||
compiler.cfg.debugger
|
|
||||||
compiler.cfg.graphviz
|
|
||||||
compiler.cfg.tco
|
|
||||||
compiler.cfg.useless-conditionals
|
|
||||||
compiler.cfg.branch-splitting
|
|
||||||
compiler.cfg.block-joining
|
|
||||||
compiler.cfg.height
|
|
||||||
compiler.cfg.ssa.construction
|
|
||||||
compiler.cfg.alias-analysis
|
|
||||||
compiler.cfg.copy-prop
|
|
||||||
compiler.cfg.dce
|
|
||||||
compiler.cfg.finalization ;
|
|
||||||
|
|
||||||
SYMBOL: gvn-test
|
|
||||||
|
|
||||||
[ 0 100 [ 1 fixnum+fast ] times ]
|
|
||||||
test-builder first [
|
|
||||||
optimize-tail-calls
|
|
||||||
delete-useless-conditionals
|
|
||||||
split-branches
|
|
||||||
join-blocks
|
|
||||||
normalize-height
|
|
||||||
construct-ssa
|
|
||||||
alias-analysis
|
|
||||||
] with-cfg gvn-test set-global
|
|
||||||
|
|
||||||
: watch-gvn ( -- )
|
|
||||||
\ value-numbering-step
|
|
||||||
[
|
|
||||||
'[
|
|
||||||
_ call
|
|
||||||
"Basic block #" write basic-block get number>> .
|
|
||||||
"vregs>gvns: " write vregs>gvns get .
|
|
||||||
"vregs>vns: " write vregs>vns get .
|
|
||||||
"exprs>vns: " write exprs>vns get .
|
|
||||||
"vns>insns: " write vns>insns get .
|
|
||||||
"\n---\n" print
|
|
||||||
]
|
|
||||||
] annotate ;
|
|
||||||
|
|
||||||
: reset-gvn ( -- )
|
|
||||||
\ value-numbering-step reset ;
|
|
||||||
|
|
||||||
: test-gvn ( -- )
|
|
||||||
watch-gvn
|
|
||||||
gvn-test get-global [
|
|
||||||
dup "Before GVN" "1" (cfgviz)
|
|
||||||
value-numbering
|
|
||||||
dup "After GVN" "2" (cfgviz)
|
|
||||||
copy-propagation
|
|
||||||
dup "After CP" "3" (cfgviz)
|
|
||||||
eliminate-dead-code
|
|
||||||
dup "After DCE" "4" (cfgviz)
|
|
||||||
finalize-cfg
|
|
||||||
dup "Final CFG" "5" (cfgviz)
|
|
||||||
drop
|
|
||||||
] with-cfg
|
|
||||||
reset-gvn ;
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Alex Vondrak
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
! Copyright (C) 2011 Alex Vondrak.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: accessors compiler.cfg compiler.cfg.alias-analysis
|
||||||
|
compiler.cfg.block-joining compiler.cfg.branch-splitting
|
||||||
|
compiler.cfg.copy-prop compiler.cfg.dce compiler.cfg.debugger
|
||||||
|
compiler.cfg.finalization compiler.cfg.graphviz
|
||||||
|
compiler.cfg.gvn compiler.cfg.gvn.graph compiler.cfg.height
|
||||||
|
compiler.cfg.ssa.construction compiler.cfg.tco
|
||||||
|
compiler.cfg.useless-conditionals fry io kernel math
|
||||||
|
math.private namespaces prettyprint sequences tools.annotations
|
||||||
|
;
|
||||||
|
IN: compiler.cfg.gvn.testing
|
||||||
|
|
||||||
|
SYMBOL: gvn-test
|
||||||
|
|
||||||
|
[ 0 100 [ 1 fixnum+fast ] times ]
|
||||||
|
test-builder first [
|
||||||
|
optimize-tail-calls
|
||||||
|
delete-useless-conditionals
|
||||||
|
split-branches
|
||||||
|
join-blocks
|
||||||
|
normalize-height
|
||||||
|
construct-ssa
|
||||||
|
alias-analysis
|
||||||
|
] with-cfg gvn-test set-global
|
||||||
|
|
||||||
|
: watch-gvn ( -- )
|
||||||
|
\ value-numbering-step
|
||||||
|
[
|
||||||
|
'[
|
||||||
|
_ call
|
||||||
|
"Basic block #" write basic-block get number>> .
|
||||||
|
"vregs>gvns: " write vregs>gvns get .
|
||||||
|
"vregs>vns: " write vregs>vns get .
|
||||||
|
"exprs>vns: " write exprs>vns get .
|
||||||
|
"vns>insns: " write vns>insns get .
|
||||||
|
"\n---\n" print
|
||||||
|
]
|
||||||
|
] annotate ;
|
||||||
|
|
||||||
|
: reset-gvn ( -- )
|
||||||
|
\ value-numbering-step reset ;
|
||||||
|
|
||||||
|
: test-gvn ( -- )
|
||||||
|
watch-gvn
|
||||||
|
gvn-test get-global [
|
||||||
|
{
|
||||||
|
value-numbering
|
||||||
|
copy-propagation
|
||||||
|
eliminate-dead-code
|
||||||
|
finalize-cfg
|
||||||
|
} [ watch-pass ] each-index drop
|
||||||
|
] with-cfg
|
||||||
|
reset-gvn ;
|
||||||
Loading…
Reference in New Issue