1 USING: accessors compiler.tree compiler.tree.builder
2 compiler.tree.optimizer compiler.tree.propagation.info
3 compiler.tree.propagation.recursive kernel kernel.private layouts
4 literals math math.intervals sequences sequences.private tools.test ;
5 IN: compiler.tree.propagation.recursive.tests
14 0 100 [a,b] fixnum counter-class
15 -100 100 [a,b] fixnum counter-class
16 0 100 [a,b] integer counter-class
17 0 10 [a,b] array-capacity counter-class
20 ! generalize-counter-interval
21 { T{ interval f { 0 t } { 1/0. t } } } [
22 T{ interval f { 1 t } { 1 t } }
23 T{ interval f { 0 t } { 0 t } }
24 integer generalize-counter-interval
27 { T{ interval f { 0 t } { $[ max-array-capacity ] t } } } [
28 T{ interval f { 1 t } { 1 t } }
29 T{ interval f { 0 t } { 0 t } }
30 fixnum generalize-counter-interval
33 { T{ interval f { -1/0. t } { 10 t } } } [
34 T{ interval f { -1 t } { -1 t } }
35 T{ interval f { 10 t } { 10 t } }
36 integer generalize-counter-interval
39 { T{ interval f { $[ most-negative-fixnum ] t } { 10 t } } } [
40 T{ interval f { -1 t } { -1 t } }
41 T{ interval f { 10 t } { 10 t } }
42 fixnum generalize-counter-interval
46 T{ interval f { -268435456 t } { 268435455 t } }
47 T{ interval f { 1 t } { 268435455 t } }
49 integer generalize-counter-interval =
53 T{ interval f { -268435456 t } { 268435455 t } }
54 T{ interval f { 1 t } { 268435455 t } }
56 fixnum generalize-counter-interval =
60 T{ interval f { -5 t } { 3 t } }
61 T{ interval f { 2 t } { 11 t } }
62 integer generalize-counter-interval
65 { $[ fixnum-interval ] } [
66 T{ interval f { -5 t } { 3 t } }
67 T{ interval f { 2 t } { 11 t } }
68 fixnum generalize-counter-interval
72 : integer-loop ( a -- b )
73 { integer } declare [ dup 0 > ] [ 1 - ] while ;
79 T{ interval { from { 1 t } } { to { 1/0. t } } }
84 \ integer-loop build-tree optimize-tree
85 [ #if? ] filter second children>> first first recursive-phi-infos