Cleanup ext/B tests for -w and to run separately
[p5sagit/p5-mst-13.2.git] / ext / B / t / optree_sort.t
CommitLineData
724aa791 1#!perl
2
3BEGIN {
5638aaac 4 if ($ENV{PERL_CORE}){
5 chdir('t') if -d 't';
6 @INC = ('.', '../lib', '../ext/B/t');
7 } else {
8 unshift @INC, 't';
9 push @INC, "../../t";
10 }
9cd8f857 11 require Config;
12 if (($Config::Config{'extensions'} !~ /\bB\b/) ){
13 print "1..0 # Skip -- Perl configured without B module\n";
14 exit 0;
15 }
8dd2f9d4 16 if ($Config::Config{'extensions'} !~ /\bData\/Dumper\b/) {
2799c206 17 print
18 "1..0 # Skip: Data::Dumper was not built, needed by OptreeCheck\n";
19 exit 0;
2799c206 20 }
5638aaac 21 require 'test.pl';
724aa791 22}
23use OptreeCheck;
2ce64696 24use Config;
724aa791 25plan tests => 11;
26
2ce64696 27SKIP: {
28skip "no perlio in this build", 11 unless $Config::Config{useperlio};
29
724aa791 30pass("SORT OPTIMIZATION");
31
32checkOptree ( name => 'sub {sort @a}',
33 code => sub {sort @a},
34 bcopts => '-exec',
35 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
36# 1 <;> nextstate(main 424 optree_sort.t:14) v
37# 2 <0> pushmark s
cc02ea56 38# 3 <#> gv[*a] s
39# 4 <1> rv2av[t2] lK/1
724aa791 40# 5 <@> sort K
41# 6 <1> leavesub[1 ref] K/REFC,1
42EOT_EOT
43# 1 <;> nextstate(main 424 optree_sort.t:14) v
44# 2 <0> pushmark s
45# 3 <$> gv(*a) s
46# 4 <1> rv2av[t1] lK/1
47# 5 <@> sort K
48# 6 <1> leavesub[1 ref] K/REFC,1
49EONT_EONT
50
51checkOptree ( name => 'sort @a',
52 prog => 'sort @a',
53 bcopts => '-exec',
54 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
551 <0> enter
562 <;> nextstate(main 1 -e:1) v
573 <0> pushmark s
584 <#> gv[*a] s
595 <1> rv2av[t2] lK/1
606 <@> sort vK
617 <@> leave[1 ref] vKP/REFC
62EOT_EOT
63# 1 <0> enter
64# 2 <;> nextstate(main 1 -e:1) v
65# 3 <0> pushmark s
66# 4 <$> gv(*a) s
67# 5 <1> rv2av[t1] lK/1
68# 6 <@> sort vK
69# 7 <@> leave[1 ref] vKP/REFC
70EONT_EONT
71
72checkOptree ( name => 'sub {@a = sort @a}',
73 code => sub {@a = sort @a},
74 bcopts => '-exec',
75 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 761 <;> nextstate(main -438 optree.t:244) v
772 <0> pushmark s
783 <0> pushmark s
794 <#> gv[*a] s
cc02ea56 805 <1> rv2av[t4] lK/1
724aa791 816 <@> sort lK
827 <0> pushmark s
838 <#> gv[*a] s
849 <1> rv2av[t2] lKRM*/1
85a <2> aassign[t\d+] KS/COMMON
86b <1> leavesub[1 ref] K/REFC,1
87EOT_EOT
88# 1 <;> nextstate(main 65 optree.t:311) v
89# 2 <0> pushmark s
90# 3 <0> pushmark s
91# 4 <$> gv(*a) s
92# 5 <1> rv2av[t2] lK/1
93# 6 <@> sort lK
94# 7 <0> pushmark s
95# 8 <$> gv(*a) s
96# 9 <1> rv2av[t1] lKRM*/1
97# a <2> aassign[t3] KS/COMMON
98# b <1> leavesub[1 ref] K/REFC,1
99EONT_EONT
100
101checkOptree ( name => '@a = sort @a',
102 prog => '@a = sort @a',
103 bcopts => '-exec',
104 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1051 <0> enter
1062 <;> nextstate(main 1 -e:1) v
1073 <0> pushmark s
1084 <0> pushmark s
1095 <#> gv[*a] s
1106 <1> rv2av[t4] lKRM*/1
1117 <@> sort lK/INPLACE
1128 <@> leave[1 ref] vKP/REFC
113EOT_EOT
114# 1 <0> enter
115# 2 <;> nextstate(main 1 -e:1) v
116# 3 <0> pushmark s
117# 4 <0> pushmark s
118# 5 <$> gv(*a) s
119# 6 <1> rv2av[t2] lKRM*/1
120# 7 <@> sort lK/INPLACE
121# 8 <@> leave[1 ref] vKP/REFC
122EONT_EONT
123
124checkOptree ( name => 'sub {@a = sort @a; reverse @a}',
125 code => sub {@a = sort @a; reverse @a},
126 bcopts => '-exec',
127 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 1281 <;> nextstate(main -438 optree.t:286) v
1292 <0> pushmark s
1303 <0> pushmark s
1314 <#> gv[*a] s
1325 <1> rv2av[t4] lKRM*/1
1336 <@> sort lK/INPLACE
1347 <;> nextstate(main -438 optree.t:288) v
1358 <0> pushmark s
1369 <#> gv[*a] s
137a <1> rv2av[t7] lK/1
138b <@> reverse[t8] K/1
139c <1> leavesub[1 ref] K/REFC,1
140EOT_EOT
141# 1 <;> nextstate(main 66 optree.t:345) v
142# 2 <0> pushmark s
143# 3 <0> pushmark s
144# 4 <$> gv(*a) s
145# 5 <1> rv2av[t2] lKRM*/1
146# 6 <@> sort lK/INPLACE
147# 7 <;> nextstate(main 66 optree.t:346) v
148# 8 <0> pushmark s
149# 9 <$> gv(*a) s
150# a <1> rv2av[t4] lK/1
151# b <@> reverse[t5] K/1
152# c <1> leavesub[1 ref] K/REFC,1
153EONT_EONT
154
155checkOptree ( name => '@a = sort @a; reverse @a',
156 prog => '@a = sort @a; reverse @a',
157 bcopts => '-exec',
158 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1591 <0> enter
1602 <;> nextstate(main 1 -e:1) v
1613 <0> pushmark s
1624 <0> pushmark s
1635 <#> gv[*a] s
1646 <1> rv2av[t4] lKRM*/1
1657 <@> sort lK/INPLACE
1668 <;> nextstate(main 1 -e:1) v
1679 <0> pushmark s
168a <#> gv[*a] s
169b <1> rv2av[t7] lK/1
170c <@> reverse[t8] vK/1
171d <@> leave[1 ref] vKP/REFC
172EOT_EOT
173# 1 <0> enter
174# 2 <;> nextstate(main 1 -e:1) v
175# 3 <0> pushmark s
176# 4 <0> pushmark s
177# 5 <$> gv(*a) s
178# 6 <1> rv2av[t2] lKRM*/1
179# 7 <@> sort lK/INPLACE
180# 8 <;> nextstate(main 1 -e:1) v
181# 9 <0> pushmark s
182# a <$> gv(*a) s
183# b <1> rv2av[t4] lK/1
184# c <@> reverse[t5] vK/1
185# d <@> leave[1 ref] vKP/REFC
186EONT_EONT
187
188checkOptree ( name => 'sub {my @a; @a = sort @a}',
189 code => sub {my @a; @a = sort @a},
190 bcopts => '-exec',
191 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 1921 <;> nextstate(main -437 optree.t:254) v
1932 <0> padav[@a:-437,-436] vM/LVINTRO
1943 <;> nextstate(main -436 optree.t:256) v
1954 <0> pushmark s
1965 <0> pushmark s
1976 <0> padav[@a:-437,-436] l
1987 <@> sort lK
1998 <0> pushmark s
2009 <0> padav[@a:-437,-436] lRM*
201a <2> aassign[t\d+] KS/COMMON
202b <1> leavesub[1 ref] K/REFC,1
203EOT_EOT
204# 1 <;> nextstate(main 427 optree_sort.t:172) v
205# 2 <0> padav[@a:427,428] vM/LVINTRO
206# 3 <;> nextstate(main 428 optree_sort.t:173) v
207# 4 <0> pushmark s
208# 5 <0> pushmark s
209# 6 <0> padav[@a:427,428] l
210# 7 <@> sort lK
211# 8 <0> pushmark s
212# 9 <0> padav[@a:427,428] lRM*
213# a <2> aassign[t2] KS/COMMON
214# b <1> leavesub[1 ref] K/REFC,1
215EONT_EONT
216
217checkOptree ( name => 'my @a; @a = sort @a',
218 prog => 'my @a; @a = sort @a',
219 bcopts => '-exec',
220 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
2211 <0> enter
2222 <;> nextstate(main 1 -e:1) v
2233 <0> padav[@a:1,2] vM/LVINTRO
2244 <;> nextstate(main 2 -e:1) v
2255 <0> pushmark s
2266 <0> pushmark s
2277 <0> padav[@a:1,2] lRM*
2288 <@> sort lK/INPLACE
2299 <@> leave[1 ref] vKP/REFC
230EOT_EOT
231# 1 <0> enter
232# 2 <;> nextstate(main 1 -e:1) v
233# 3 <0> padav[@a:1,2] vM/LVINTRO
234# 4 <;> nextstate(main 2 -e:1) v
235# 5 <0> pushmark s
236# 6 <0> pushmark s
237# 7 <0> padav[@a:1,2] lRM*
238# 8 <@> sort lK/INPLACE
239# 9 <@> leave[1 ref] vKP/REFC
240EONT_EONT
241
242checkOptree ( name => 'sub {my @a; @a = sort @a; push @a, 1}',
243 code => sub {my @a; @a = sort @a; push @a, 1},
244 bcopts => '-exec',
245 debug => 0,
246 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 2471 <;> nextstate(main -437 optree.t:325) v
2482 <0> padav[@a:-437,-436] vM/LVINTRO
2493 <;> nextstate(main -436 optree.t:325) v
2504 <0> pushmark s
2515 <0> pushmark s
2526 <0> padav[@a:-437,-436] lRM*
2537 <@> sort lK/INPLACE
2548 <;> nextstate(main -436 optree.t:325) v
2559 <0> pushmark s
256a <0> padav[@a:-437,-436] lRM
257b <$> const[IV 1] s
258c <@> push[t3] sK/2
259d <1> leavesub[1 ref] K/REFC,1
260EOT_EOT
261# 1 <;> nextstate(main 429 optree_sort.t:219) v
262# 2 <0> padav[@a:429,430] vM/LVINTRO
263# 3 <;> nextstate(main 430 optree_sort.t:220) v
264# 4 <0> pushmark s
265# 5 <0> pushmark s
266# 6 <0> padav[@a:429,430] lRM*
267# 7 <@> sort lK/INPLACE
268# 8 <;> nextstate(main 430 optree_sort.t:220) v
269# 9 <0> pushmark s
270# a <0> padav[@a:429,430] lRM
271# b <$> const(IV 1) s
272# c <@> push[t3] sK/2
273# d <1> leavesub[1 ref] K/REFC,1
274EONT_EONT
275
276checkOptree ( name => 'sub {my @a; @a = sort @a; 1}',
277 code => sub {my @a; @a = sort @a; 1},
278 bcopts => '-exec',
279 debug => 0,
280 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 2811 <;> nextstate(main -437 optree.t:325) v
2822 <0> padav[@a:-437,-436] vM/LVINTRO
2833 <;> nextstate(main -436 optree.t:325) v
2844 <0> pushmark s
2855 <0> pushmark s
2866 <0> padav[@a:-437,-436] lRM*
2877 <@> sort lK/INPLACE
2888 <;> nextstate(main -436 optree.t:346) v
2899 <$> const[IV 1] s
290a <1> leavesub[1 ref] K/REFC,1
291EOT_EOT
292# 1 <;> nextstate(main 431 optree_sort.t:250) v
293# 2 <0> padav[@a:431,432] vM/LVINTRO
294# 3 <;> nextstate(main 432 optree_sort.t:251) v
295# 4 <0> pushmark s
296# 5 <0> pushmark s
297# 6 <0> padav[@a:431,432] lRM*
298# 7 <@> sort lK/INPLACE
299# 8 <;> nextstate(main 432 optree_sort.t:251) v
300# 9 <$> const(IV 1) s
301# a <1> leavesub[1 ref] K/REFC,1
302EONT_EONT
303
2ce64696 304} #skip
724aa791 305
306__END__
307