1 IN: optimizer.def-use.tests
2 USING: inference inference.dataflow optimizer optimizer.def-use
3 namespaces assocs kernel sequences math tools.test words sets ;
6 [ 1 2 3 ] dataflow compute-def-use drop
7 def-use get values dup length swap [ length ] map
10 : kill-set ( quot -- seq )
11 dataflow compute-def-use drop compute-dead-literals keys
12 [ value-literal ] map ;
15 [ [ 1 2 3 ] [ + ] over drop drop ] kill-set
19 [ [ + ] [ 1 2 3 ] over drop nip ] kill-set
23 [ [ + ] dup over 3drop ] kill-set
28 [ [ + ] [ - ] [ 1 2 3 ] pick pick 2drop >r 2drop r> ]
34 [ [ 1 2 3 ] [ 4 5 6 ] [ + ] pick >r drop r> ]
39 [ [ 1 ] [ 2 ] ] [ [ 1 ] [ 2 ] if ] kill-set set=
44 [ [ 5 ] [ dup ] if ] kill-set set=
49 [ 5 swap [ dup ] [ dup ] if ]
55 [ 5 swap [ dup ] [ dup ] if 2drop ]
59 : literal-kill-test ( a b -- )
60 dup [ >r dup slip r> literal-kill-test ] [ 2drop ] if ; inline
63 { [ ] [ >r dup slip r> literal-kill-test ] [ 2drop ] }
64 [ [ ] swap literal-kill-test ] kill-set set=
72 [ 2drop ] with assoc-find ;
75 [ [ 2drop ] with assoc-find ] kill-set
76 [ 2drop ] swap member?
80 [ [ "x" 2drop ] assoc-find ] kill-set
81 [ "x" 2drop ] swap member?
84 : 2swap ( x y z t -- z t x y )
85 rot >r rot r> ; inline
88 [ 2swap [ swapd * -rot p2 +@ ] 2keep ] assoc-each ;
92 [ swapd * -rot p2 +@ ]
93 [ 2swap [ swapd * -rot p2 +@ ] 2keep ]
94 } \ regression-1 def>> kill-set [ member? ] curry map
97 : regression-2 ( x y -- x.y )
101 [ 2swap [ swapd * -rot p2 +@ ] 2keep ]
104 ] H{ } make-assoc p3 ;
109 [ swapd * -rot p2 +@ ]
110 [ 2swap [ swapd * -rot p2 +@ ] 2keep ]
113 [ 2swap [ swapd * -rot p2 +@ ] 2keep ]
119 [ 2swap [ swapd * -rot p2 +@ ] 2keep ]
124 \ regression-2 def>> kill-set
125 [ member? ] curry map