Promote #23435 (strlcat ()/strlcpy ()) to non-standard OS's
[p5sagit/p5-mst-13.2.git] / ext / B / t / optree_sort.t
CommitLineData
724aa791 1#!perl
2
3BEGIN {
4 chdir 't';
5 @INC = ('../lib', '../ext/B/t');
9cd8f857 6 require Config;
7 if (($Config::Config{'extensions'} !~ /\bB\b/) ){
8 print "1..0 # Skip -- Perl configured without B module\n";
9 exit 0;
10 }
724aa791 11 require './test.pl';
12}
13use OptreeCheck;
2ce64696 14use Config;
724aa791 15plan tests => 11;
16
2ce64696 17SKIP: {
18skip "no perlio in this build", 11 unless $Config::Config{useperlio};
19
724aa791 20pass("SORT OPTIMIZATION");
21
22checkOptree ( name => 'sub {sort @a}',
23 code => sub {sort @a},
24 bcopts => '-exec',
25 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
26# 1 <;> nextstate(main 424 optree_sort.t:14) v
27# 2 <0> pushmark s
cc02ea56 28# 3 <#> gv[*a] s
29# 4 <1> rv2av[t2] lK/1
724aa791 30# 5 <@> sort K
31# 6 <1> leavesub[1 ref] K/REFC,1
32EOT_EOT
33# 1 <;> nextstate(main 424 optree_sort.t:14) v
34# 2 <0> pushmark s
35# 3 <$> gv(*a) s
36# 4 <1> rv2av[t1] lK/1
37# 5 <@> sort K
38# 6 <1> leavesub[1 ref] K/REFC,1
39EONT_EONT
40
41checkOptree ( name => 'sort @a',
42 prog => 'sort @a',
43 bcopts => '-exec',
44 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
451 <0> enter
462 <;> nextstate(main 1 -e:1) v
473 <0> pushmark s
484 <#> gv[*a] s
495 <1> rv2av[t2] lK/1
506 <@> sort vK
517 <@> leave[1 ref] vKP/REFC
52EOT_EOT
53# 1 <0> enter
54# 2 <;> nextstate(main 1 -e:1) v
55# 3 <0> pushmark s
56# 4 <$> gv(*a) s
57# 5 <1> rv2av[t1] lK/1
58# 6 <@> sort vK
59# 7 <@> leave[1 ref] vKP/REFC
60EONT_EONT
61
62checkOptree ( name => 'sub {@a = sort @a}',
63 code => sub {@a = sort @a},
64 bcopts => '-exec',
65 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 661 <;> nextstate(main -438 optree.t:244) v
672 <0> pushmark s
683 <0> pushmark s
694 <#> gv[*a] s
cc02ea56 705 <1> rv2av[t4] lK/1
724aa791 716 <@> sort lK
727 <0> pushmark s
738 <#> gv[*a] s
749 <1> rv2av[t2] lKRM*/1
75a <2> aassign[t\d+] KS/COMMON
76b <1> leavesub[1 ref] K/REFC,1
77EOT_EOT
78# 1 <;> nextstate(main 65 optree.t:311) v
79# 2 <0> pushmark s
80# 3 <0> pushmark s
81# 4 <$> gv(*a) s
82# 5 <1> rv2av[t2] lK/1
83# 6 <@> sort lK
84# 7 <0> pushmark s
85# 8 <$> gv(*a) s
86# 9 <1> rv2av[t1] lKRM*/1
87# a <2> aassign[t3] KS/COMMON
88# b <1> leavesub[1 ref] K/REFC,1
89EONT_EONT
90
91checkOptree ( name => '@a = sort @a',
92 prog => '@a = sort @a',
93 bcopts => '-exec',
94 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
951 <0> enter
962 <;> nextstate(main 1 -e:1) v
973 <0> pushmark s
984 <0> pushmark s
995 <#> gv[*a] s
1006 <1> rv2av[t4] lKRM*/1
1017 <@> sort lK/INPLACE
1028 <@> leave[1 ref] vKP/REFC
103EOT_EOT
104# 1 <0> enter
105# 2 <;> nextstate(main 1 -e:1) v
106# 3 <0> pushmark s
107# 4 <0> pushmark s
108# 5 <$> gv(*a) s
109# 6 <1> rv2av[t2] lKRM*/1
110# 7 <@> sort lK/INPLACE
111# 8 <@> leave[1 ref] vKP/REFC
112EONT_EONT
113
114checkOptree ( name => 'sub {@a = sort @a; reverse @a}',
115 code => sub {@a = sort @a; reverse @a},
116 bcopts => '-exec',
117 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 1181 <;> nextstate(main -438 optree.t:286) v
1192 <0> pushmark s
1203 <0> pushmark s
1214 <#> gv[*a] s
1225 <1> rv2av[t4] lKRM*/1
1236 <@> sort lK/INPLACE
1247 <;> nextstate(main -438 optree.t:288) v
1258 <0> pushmark s
1269 <#> gv[*a] s
127a <1> rv2av[t7] lK/1
128b <@> reverse[t8] K/1
129c <1> leavesub[1 ref] K/REFC,1
130EOT_EOT
131# 1 <;> nextstate(main 66 optree.t:345) v
132# 2 <0> pushmark s
133# 3 <0> pushmark s
134# 4 <$> gv(*a) s
135# 5 <1> rv2av[t2] lKRM*/1
136# 6 <@> sort lK/INPLACE
137# 7 <;> nextstate(main 66 optree.t:346) v
138# 8 <0> pushmark s
139# 9 <$> gv(*a) s
140# a <1> rv2av[t4] lK/1
141# b <@> reverse[t5] K/1
142# c <1> leavesub[1 ref] K/REFC,1
143EONT_EONT
144
145checkOptree ( name => '@a = sort @a; reverse @a',
146 prog => '@a = sort @a; reverse @a',
147 bcopts => '-exec',
148 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1491 <0> enter
1502 <;> nextstate(main 1 -e:1) v
1513 <0> pushmark s
1524 <0> pushmark s
1535 <#> gv[*a] s
1546 <1> rv2av[t4] lKRM*/1
1557 <@> sort lK/INPLACE
1568 <;> nextstate(main 1 -e:1) v
1579 <0> pushmark s
158a <#> gv[*a] s
159b <1> rv2av[t7] lK/1
160c <@> reverse[t8] vK/1
161d <@> leave[1 ref] vKP/REFC
162EOT_EOT
163# 1 <0> enter
164# 2 <;> nextstate(main 1 -e:1) v
165# 3 <0> pushmark s
166# 4 <0> pushmark s
167# 5 <$> gv(*a) s
168# 6 <1> rv2av[t2] lKRM*/1
169# 7 <@> sort lK/INPLACE
170# 8 <;> nextstate(main 1 -e:1) v
171# 9 <0> pushmark s
172# a <$> gv(*a) s
173# b <1> rv2av[t4] lK/1
174# c <@> reverse[t5] vK/1
175# d <@> leave[1 ref] vKP/REFC
176EONT_EONT
177
178checkOptree ( name => 'sub {my @a; @a = sort @a}',
179 code => sub {my @a; @a = sort @a},
180 bcopts => '-exec',
181 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 1821 <;> nextstate(main -437 optree.t:254) v
1832 <0> padav[@a:-437,-436] vM/LVINTRO
1843 <;> nextstate(main -436 optree.t:256) v
1854 <0> pushmark s
1865 <0> pushmark s
1876 <0> padav[@a:-437,-436] l
1887 <@> sort lK
1898 <0> pushmark s
1909 <0> padav[@a:-437,-436] lRM*
191a <2> aassign[t\d+] KS/COMMON
192b <1> leavesub[1 ref] K/REFC,1
193EOT_EOT
194# 1 <;> nextstate(main 427 optree_sort.t:172) v
195# 2 <0> padav[@a:427,428] vM/LVINTRO
196# 3 <;> nextstate(main 428 optree_sort.t:173) v
197# 4 <0> pushmark s
198# 5 <0> pushmark s
199# 6 <0> padav[@a:427,428] l
200# 7 <@> sort lK
201# 8 <0> pushmark s
202# 9 <0> padav[@a:427,428] lRM*
203# a <2> aassign[t2] KS/COMMON
204# b <1> leavesub[1 ref] K/REFC,1
205EONT_EONT
206
207checkOptree ( name => 'my @a; @a = sort @a',
208 prog => 'my @a; @a = sort @a',
209 bcopts => '-exec',
210 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
2111 <0> enter
2122 <;> nextstate(main 1 -e:1) v
2133 <0> padav[@a:1,2] vM/LVINTRO
2144 <;> nextstate(main 2 -e:1) v
2155 <0> pushmark s
2166 <0> pushmark s
2177 <0> padav[@a:1,2] lRM*
2188 <@> sort lK/INPLACE
2199 <@> leave[1 ref] vKP/REFC
220EOT_EOT
221# 1 <0> enter
222# 2 <;> nextstate(main 1 -e:1) v
223# 3 <0> padav[@a:1,2] vM/LVINTRO
224# 4 <;> nextstate(main 2 -e:1) v
225# 5 <0> pushmark s
226# 6 <0> pushmark s
227# 7 <0> padav[@a:1,2] lRM*
228# 8 <@> sort lK/INPLACE
229# 9 <@> leave[1 ref] vKP/REFC
230EONT_EONT
231
232checkOptree ( name => 'sub {my @a; @a = sort @a; push @a, 1}',
233 code => sub {my @a; @a = sort @a; push @a, 1},
234 bcopts => '-exec',
235 debug => 0,
236 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 2371 <;> nextstate(main -437 optree.t:325) v
2382 <0> padav[@a:-437,-436] vM/LVINTRO
2393 <;> nextstate(main -436 optree.t:325) v
2404 <0> pushmark s
2415 <0> pushmark s
2426 <0> padav[@a:-437,-436] lRM*
2437 <@> sort lK/INPLACE
2448 <;> nextstate(main -436 optree.t:325) v
2459 <0> pushmark s
246a <0> padav[@a:-437,-436] lRM
247b <$> const[IV 1] s
248c <@> push[t3] sK/2
249d <1> leavesub[1 ref] K/REFC,1
250EOT_EOT
251# 1 <;> nextstate(main 429 optree_sort.t:219) v
252# 2 <0> padav[@a:429,430] vM/LVINTRO
253# 3 <;> nextstate(main 430 optree_sort.t:220) v
254# 4 <0> pushmark s
255# 5 <0> pushmark s
256# 6 <0> padav[@a:429,430] lRM*
257# 7 <@> sort lK/INPLACE
258# 8 <;> nextstate(main 430 optree_sort.t:220) v
259# 9 <0> pushmark s
260# a <0> padav[@a:429,430] lRM
261# b <$> const(IV 1) s
262# c <@> push[t3] sK/2
263# d <1> leavesub[1 ref] K/REFC,1
264EONT_EONT
265
266checkOptree ( name => 'sub {my @a; @a = sort @a; 1}',
267 code => sub {my @a; @a = sort @a; 1},
268 bcopts => '-exec',
269 debug => 0,
270 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 2711 <;> nextstate(main -437 optree.t:325) v
2722 <0> padav[@a:-437,-436] vM/LVINTRO
2733 <;> nextstate(main -436 optree.t:325) v
2744 <0> pushmark s
2755 <0> pushmark s
2766 <0> padav[@a:-437,-436] lRM*
2777 <@> sort lK/INPLACE
2788 <;> nextstate(main -436 optree.t:346) v
2799 <$> const[IV 1] s
280a <1> leavesub[1 ref] K/REFC,1
281EOT_EOT
282# 1 <;> nextstate(main 431 optree_sort.t:250) v
283# 2 <0> padav[@a:431,432] vM/LVINTRO
284# 3 <;> nextstate(main 432 optree_sort.t:251) v
285# 4 <0> pushmark s
286# 5 <0> pushmark s
287# 6 <0> padav[@a:431,432] lRM*
288# 7 <@> sort lK/INPLACE
289# 8 <;> nextstate(main 432 optree_sort.t:251) v
290# 9 <$> const(IV 1) s
291# a <1> leavesub[1 ref] K/REFC,1
292EONT_EONT
293
2ce64696 294} #skip
724aa791 295
296__END__
297