]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/dominance/dominance-tests.factor
Merge branch 'master' into dcn
[factor.git] / basis / compiler / cfg / dominance / dominance-tests.factor
1 IN: compiler.cfg.dominance.tests
2 USING: tools.test sequences vectors namespaces kernel accessors assocs sets
3 math.ranges arrays compiler.cfg compiler.cfg.dominance compiler.cfg.debugger
4 compiler.cfg.predecessors ;
5
6 : test-dominance ( -- )
7     cfg new 0 get >>entry
8     compute-predecessors
9     dup compute-dominance
10     compute-dfs ;
11
12 ! Example with no back edges
13 V{ } 0 test-bb
14 V{ } 1 test-bb
15 V{ } 2 test-bb
16 V{ } 3 test-bb
17 V{ } 4 test-bb
18 V{ } 5 test-bb
19
20 0 get 1 get 2 get V{ } 2sequence >>successors drop
21 1 get 3 get 1vector >>successors drop
22 2 get 4 get 1vector >>successors drop
23 3 get 4 get 1vector >>successors drop
24 4 get 5 get 1vector >>successors drop
25
26 [ ] [ test-dominance ] unit-test
27
28 [ t ] [ 0 get dom-parent 0 get eq? ] unit-test
29 [ t ] [ 1 get dom-parent 0 get eq? ] unit-test
30 [ t ] [ 2 get dom-parent 0 get eq? ] unit-test
31 [ t ] [ 4 get dom-parent 0 get eq? ] unit-test
32 [ t ] [ 3 get dom-parent 1 get eq? ] unit-test
33 [ t ] [ 5 get dom-parent 4 get eq? ] unit-test
34
35 [ t ] [ 0 get dom-children 1 get 2 get 4 get 3array set= ] unit-test
36
37 [ { 4 } ] [ 1 get dom-frontier [ number>> ] map ] unit-test
38 [ { 4 } ] [ 2 get dom-frontier [ number>> ] map ] unit-test
39 [ { } ] [ 0 get dom-frontier ] unit-test
40 [ { } ] [ 4 get dom-frontier ] unit-test
41
42 [ t ] [ 0 get 3 get dominates? ] unit-test
43 [ f ] [ 3 get 4 get dominates? ] unit-test
44 [ f ] [ 1 get 4 get dominates? ] unit-test
45 [ t ] [ 4 get 5 get dominates? ] unit-test
46 [ f ] [ 1 get 5 get dominates? ] unit-test
47
48 ! Example from the paper
49 V{ } 0 test-bb
50 V{ } 1 test-bb
51 V{ } 2 test-bb
52 V{ } 3 test-bb
53 V{ } 4 test-bb
54
55 0 get 1 get 2 get V{ } 2sequence >>successors drop
56 1 get 3 get 1vector >>successors drop
57 2 get 4 get 1vector >>successors drop
58 3 get 4 get 1vector >>successors drop
59 4 get 3 get 1vector >>successors drop
60
61 [ ] [ test-dominance ] unit-test
62
63 [ t ] [ 0 4 [a,b] [ get dom-parent 0 get eq? ] all? ] unit-test
64
65 ! The other example from the paper
66 V{ } 0 test-bb
67 V{ } 1 test-bb
68 V{ } 2 test-bb
69 V{ } 3 test-bb
70 V{ } 4 test-bb
71 V{ } 5 test-bb
72
73 0 get 1 get 2 get V{ } 2sequence >>successors drop
74 1 get 5 get 1vector >>successors drop
75 2 get 4 get 3 get V{ } 2sequence >>successors drop
76 5 get 4 get 1vector >>successors drop
77 4 get 5 get 3 get V{ } 2sequence >>successors drop
78 3 get 4 get 1vector >>successors drop
79
80 [ ] [ test-dominance ] unit-test
81
82 [ t ] [ 0 5 [a,b] [ get dom-parent 0 get eq? ] all? ] unit-test
83
84 V{ } 0 test-bb
85 V{ } 1 test-bb
86 V{ } 2 test-bb
87 V{ } 3 test-bb
88 V{ } 4 test-bb
89 V{ } 5 test-bb
90 V{ } 6 test-bb
91
92 0 get 1 get 5 get V{ } 2sequence >>successors drop
93 1 get 2 get 3 get V{ } 2sequence >>successors drop
94 2 get 4 get 1vector >>successors drop
95 3 get 4 get 1vector >>successors drop
96 4 get 6 get 1vector >>successors drop
97 5 get 6 get 1vector >>successors drop
98
99 [ ] [ test-dominance ] unit-test
100
101 [ t ] [
102     2 get 3 get 2array iterated-dom-frontier
103     4 get 6 get 2array set=
104 ] unit-test