Lines Matching refs:analysis
56 StructuredCFGAnalysis analysis(context.get());
59 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
60 EXPECT_EQ(analysis.ContainingLoop(1), 0);
61 EXPECT_EQ(analysis.MergeBlock(1), 0);
62 EXPECT_EQ(analysis.NestingDepth(1), 0);
63 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
64 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
65 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
66 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
67 EXPECT_FALSE(analysis.IsContinueBlock(1));
68 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
69 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
70 EXPECT_FALSE(analysis.IsMergeBlock(1));
73 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
74 EXPECT_EQ(analysis.ContainingLoop(2), 0);
75 EXPECT_EQ(analysis.MergeBlock(2), 3);
76 EXPECT_EQ(analysis.NestingDepth(2), 1);
77 EXPECT_EQ(analysis.LoopMergeBlock(2), 0);
78 EXPECT_EQ(analysis.LoopNestingDepth(2), 0);
79 EXPECT_EQ(analysis.ContainingSwitch(2), 0);
80 EXPECT_EQ(analysis.SwitchMergeBlock(2), 0);
81 EXPECT_FALSE(analysis.IsContinueBlock(2));
82 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
83 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
84 EXPECT_FALSE(analysis.IsMergeBlock(2));
87 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
88 EXPECT_EQ(analysis.ContainingLoop(3), 0);
89 EXPECT_EQ(analysis.MergeBlock(3), 0);
90 EXPECT_EQ(analysis.NestingDepth(3), 0);
91 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
92 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
93 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
94 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
95 EXPECT_FALSE(analysis.IsContinueBlock(3));
96 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
97 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
98 EXPECT_TRUE(analysis.IsMergeBlock(3));
131 StructuredCFGAnalysis analysis(context.get());
134 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
135 EXPECT_EQ(analysis.ContainingLoop(1), 0);
136 EXPECT_EQ(analysis.MergeBlock(1), 0);
137 EXPECT_EQ(analysis.NestingDepth(1), 0);
138 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
139 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
140 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
141 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
142 EXPECT_FALSE(analysis.IsContinueBlock(1));
143 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
144 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
145 EXPECT_FALSE(analysis.IsMergeBlock(1));
148 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
149 EXPECT_EQ(analysis.ContainingLoop(2), 1);
150 EXPECT_EQ(analysis.MergeBlock(2), 3);
151 EXPECT_EQ(analysis.NestingDepth(2), 1);
152 EXPECT_EQ(analysis.LoopMergeBlock(2), 3);
153 EXPECT_EQ(analysis.LoopNestingDepth(2), 1);
154 EXPECT_EQ(analysis.ContainingSwitch(2), 0);
155 EXPECT_EQ(analysis.SwitchMergeBlock(2), 0);
156 EXPECT_FALSE(analysis.IsContinueBlock(2));
157 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
158 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
159 EXPECT_FALSE(analysis.IsMergeBlock(2));
162 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
163 EXPECT_EQ(analysis.ContainingLoop(3), 0);
164 EXPECT_EQ(analysis.MergeBlock(3), 0);
165 EXPECT_EQ(analysis.NestingDepth(3), 0);
166 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
167 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
168 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
169 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
170 EXPECT_FALSE(analysis.IsContinueBlock(3));
171 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
172 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
173 EXPECT_TRUE(analysis.IsMergeBlock(3));
176 EXPECT_EQ(analysis.ContainingConstruct(4), 1);
177 EXPECT_EQ(analysis.ContainingLoop(4), 1);
178 EXPECT_EQ(analysis.MergeBlock(4), 3);
179 EXPECT_EQ(analysis.NestingDepth(4), 1);
180 EXPECT_EQ(analysis.LoopMergeBlock(4), 3);
181 EXPECT_EQ(analysis.LoopNestingDepth(4), 1);
182 EXPECT_EQ(analysis.ContainingSwitch(4), 0);
183 EXPECT_EQ(analysis.SwitchMergeBlock(4), 0);
184 EXPECT_TRUE(analysis.IsContinueBlock(4));
185 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(4));
186 EXPECT_TRUE(analysis.IsInContinueConstruct(4));
187 EXPECT_FALSE(analysis.IsMergeBlock(4));
225 StructuredCFGAnalysis analysis(context.get());
228 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
229 EXPECT_EQ(analysis.ContainingLoop(1), 0);
230 EXPECT_EQ(analysis.MergeBlock(1), 0);
231 EXPECT_EQ(analysis.NestingDepth(1), 0);
232 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
233 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
234 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
235 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
236 EXPECT_FALSE(analysis.IsContinueBlock(1));
237 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
238 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
239 EXPECT_FALSE(analysis.IsMergeBlock(1));
242 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
243 EXPECT_EQ(analysis.ContainingLoop(2), 1);
244 EXPECT_EQ(analysis.MergeBlock(2), 3);
245 EXPECT_EQ(analysis.NestingDepth(2), 1);
246 EXPECT_EQ(analysis.LoopMergeBlock(2), 3);
247 EXPECT_EQ(analysis.LoopNestingDepth(2), 1);
248 EXPECT_EQ(analysis.ContainingSwitch(2), 0);
249 EXPECT_EQ(analysis.SwitchMergeBlock(2), 0);
250 EXPECT_FALSE(analysis.IsContinueBlock(2));
251 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
252 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
253 EXPECT_FALSE(analysis.IsMergeBlock(2));
256 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
257 EXPECT_EQ(analysis.ContainingLoop(3), 0);
258 EXPECT_EQ(analysis.MergeBlock(3), 0);
259 EXPECT_EQ(analysis.NestingDepth(3), 0);
260 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
261 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
262 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
263 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
264 EXPECT_FALSE(analysis.IsContinueBlock(3));
265 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
266 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
267 EXPECT_TRUE(analysis.IsMergeBlock(3));
270 EXPECT_EQ(analysis.ContainingConstruct(4), 1);
271 EXPECT_EQ(analysis.ContainingLoop(4), 1);
272 EXPECT_EQ(analysis.MergeBlock(4), 3);
273 EXPECT_EQ(analysis.NestingDepth(4), 1);
274 EXPECT_EQ(analysis.LoopMergeBlock(4), 3);
275 EXPECT_EQ(analysis.LoopNestingDepth(4), 1);
276 EXPECT_EQ(analysis.ContainingSwitch(4), 0);
277 EXPECT_EQ(analysis.SwitchMergeBlock(4), 0);
278 EXPECT_TRUE(analysis.IsContinueBlock(4));
279 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(4));
280 EXPECT_TRUE(analysis.IsInContinueConstruct(4));
281 EXPECT_FALSE(analysis.IsMergeBlock(4));
284 EXPECT_EQ(analysis.ContainingConstruct(5), 2);
285 EXPECT_EQ(analysis.ContainingLoop(5), 1);
286 EXPECT_EQ(analysis.MergeBlock(5), 6);
287 EXPECT_EQ(analysis.NestingDepth(5), 2);
288 EXPECT_EQ(analysis.LoopMergeBlock(5), 3);
289 EXPECT_EQ(analysis.LoopNestingDepth(5), 1);
290 EXPECT_EQ(analysis.ContainingSwitch(5), 0);
291 EXPECT_EQ(analysis.SwitchMergeBlock(5), 0);
292 EXPECT_FALSE(analysis.IsContinueBlock(5));
293 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(5));
294 EXPECT_FALSE(analysis.IsInContinueConstruct(5));
295 EXPECT_FALSE(analysis.IsMergeBlock(5));
298 EXPECT_EQ(analysis.ContainingConstruct(6), 1);
299 EXPECT_EQ(analysis.ContainingLoop(6), 1);
300 EXPECT_EQ(analysis.MergeBlock(6), 3);
301 EXPECT_EQ(analysis.NestingDepth(6), 1);
302 EXPECT_EQ(analysis.LoopMergeBlock(6), 3);
303 EXPECT_EQ(analysis.LoopNestingDepth(6), 1);
304 EXPECT_EQ(analysis.ContainingSwitch(6), 0);
305 EXPECT_EQ(analysis.SwitchMergeBlock(6), 0);
306 EXPECT_FALSE(analysis.IsContinueBlock(6));
307 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(6));
308 EXPECT_FALSE(analysis.IsInContinueConstruct(6));
309 EXPECT_TRUE(analysis.IsMergeBlock(6));
347 StructuredCFGAnalysis analysis(context.get());
350 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
351 EXPECT_EQ(analysis.ContainingLoop(1), 0);
352 EXPECT_EQ(analysis.MergeBlock(1), 0);
353 EXPECT_EQ(analysis.NestingDepth(1), 0);
354 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
355 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
356 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
357 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
358 EXPECT_FALSE(analysis.IsContinueBlock(1));
359 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
360 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
361 EXPECT_FALSE(analysis.IsMergeBlock(1));
364 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
365 EXPECT_EQ(analysis.ContainingLoop(2), 0);
366 EXPECT_EQ(analysis.MergeBlock(2), 3);
367 EXPECT_EQ(analysis.NestingDepth(2), 1);
368 EXPECT_EQ(analysis.LoopMergeBlock(2), 0);
369 EXPECT_EQ(analysis.LoopNestingDepth(2), 0);
370 EXPECT_EQ(analysis.ContainingSwitch(2), 0);
371 EXPECT_EQ(analysis.SwitchMergeBlock(2), 0);
372 EXPECT_FALSE(analysis.IsContinueBlock(2));
373 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
374 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
375 EXPECT_FALSE(analysis.IsMergeBlock(2));
378 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
379 EXPECT_EQ(analysis.ContainingLoop(3), 0);
380 EXPECT_EQ(analysis.MergeBlock(3), 0);
381 EXPECT_EQ(analysis.NestingDepth(3), 0);
382 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
383 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
384 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
385 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
386 EXPECT_FALSE(analysis.IsContinueBlock(3));
387 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
388 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
389 EXPECT_TRUE(analysis.IsMergeBlock(3));
392 EXPECT_EQ(analysis.ContainingConstruct(4), 1);
393 EXPECT_EQ(analysis.ContainingLoop(4), 0);
394 EXPECT_EQ(analysis.MergeBlock(4), 3);
395 EXPECT_EQ(analysis.NestingDepth(4), 1);
396 EXPECT_EQ(analysis.LoopMergeBlock(4), 0);
397 EXPECT_EQ(analysis.LoopNestingDepth(4), 0);
398 EXPECT_EQ(analysis.ContainingSwitch(4), 0);
399 EXPECT_EQ(analysis.SwitchMergeBlock(4), 0);
400 EXPECT_FALSE(analysis.IsContinueBlock(4));
401 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(4));
402 EXPECT_FALSE(analysis.IsInContinueConstruct(4));
403 EXPECT_TRUE(analysis.IsMergeBlock(4));
406 EXPECT_EQ(analysis.ContainingConstruct(5), 2);
407 EXPECT_EQ(analysis.ContainingLoop(5), 2);
408 EXPECT_EQ(analysis.MergeBlock(5), 4);
409 EXPECT_EQ(analysis.NestingDepth(5), 2);
410 EXPECT_EQ(analysis.LoopMergeBlock(5), 4);
411 EXPECT_EQ(analysis.LoopNestingDepth(5), 1);
412 EXPECT_EQ(analysis.ContainingSwitch(5), 0);
413 EXPECT_EQ(analysis.SwitchMergeBlock(5), 0);
414 EXPECT_TRUE(analysis.IsContinueBlock(5));
415 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(5));
416 EXPECT_TRUE(analysis.IsInContinueConstruct(5));
417 EXPECT_FALSE(analysis.IsMergeBlock(5));
420 EXPECT_EQ(analysis.ContainingConstruct(6), 2);
421 EXPECT_EQ(analysis.ContainingLoop(6), 2);
422 EXPECT_EQ(analysis.MergeBlock(6), 4);
423 EXPECT_EQ(analysis.NestingDepth(6), 2);
424 EXPECT_EQ(analysis.LoopMergeBlock(6), 4);
425 EXPECT_EQ(analysis.LoopNestingDepth(6), 1);
426 EXPECT_EQ(analysis.ContainingSwitch(6), 0);
427 EXPECT_EQ(analysis.SwitchMergeBlock(6), 0);
428 EXPECT_FALSE(analysis.IsContinueBlock(6));
429 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(6));
430 EXPECT_FALSE(analysis.IsInContinueConstruct(6));
431 EXPECT_FALSE(analysis.IsMergeBlock(6));
467 StructuredCFGAnalysis analysis(context.get());
470 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
471 EXPECT_EQ(analysis.ContainingLoop(1), 0);
472 EXPECT_EQ(analysis.MergeBlock(1), 0);
473 EXPECT_EQ(analysis.NestingDepth(1), 0);
474 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
475 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
476 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
477 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
478 EXPECT_FALSE(analysis.IsContinueBlock(1));
479 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
480 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
481 EXPECT_FALSE(analysis.IsMergeBlock(1));
484 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
485 EXPECT_EQ(analysis.ContainingLoop(2), 0);
486 EXPECT_EQ(analysis.MergeBlock(2), 3);
487 EXPECT_EQ(analysis.NestingDepth(2), 1);
488 EXPECT_EQ(analysis.LoopMergeBlock(2), 0);
489 EXPECT_EQ(analysis.LoopNestingDepth(2), 0);
490 EXPECT_EQ(analysis.ContainingSwitch(2), 0);
491 EXPECT_EQ(analysis.SwitchMergeBlock(2), 0);
492 EXPECT_FALSE(analysis.IsContinueBlock(2));
493 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
494 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
495 EXPECT_FALSE(analysis.IsMergeBlock(2));
498 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
499 EXPECT_EQ(analysis.ContainingLoop(3), 0);
500 EXPECT_EQ(analysis.MergeBlock(3), 0);
501 EXPECT_EQ(analysis.NestingDepth(3), 0);
502 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
503 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
504 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
505 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
506 EXPECT_FALSE(analysis.IsContinueBlock(3));
507 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
508 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
509 EXPECT_TRUE(analysis.IsMergeBlock(3));
512 EXPECT_EQ(analysis.ContainingConstruct(4), 1);
513 EXPECT_EQ(analysis.ContainingLoop(4), 0);
514 EXPECT_EQ(analysis.MergeBlock(4), 3);
515 EXPECT_EQ(analysis.NestingDepth(4), 1);
516 EXPECT_EQ(analysis.LoopMergeBlock(4), 0);
517 EXPECT_EQ(analysis.LoopNestingDepth(4), 0);
518 EXPECT_EQ(analysis.ContainingSwitch(4), 0);
519 EXPECT_EQ(analysis.SwitchMergeBlock(4), 0);
520 EXPECT_FALSE(analysis.IsContinueBlock(4));
521 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(4));
522 EXPECT_FALSE(analysis.IsInContinueConstruct(4));
523 EXPECT_TRUE(analysis.IsMergeBlock(4));
526 EXPECT_EQ(analysis.ContainingConstruct(5), 2);
527 EXPECT_EQ(analysis.ContainingLoop(5), 0);
528 EXPECT_EQ(analysis.MergeBlock(5), 4);
529 EXPECT_EQ(analysis.NestingDepth(5), 2);
530 EXPECT_EQ(analysis.LoopMergeBlock(5), 0);
531 EXPECT_EQ(analysis.LoopNestingDepth(5), 0);
532 EXPECT_EQ(analysis.ContainingSwitch(5), 0);
533 EXPECT_EQ(analysis.SwitchMergeBlock(5), 0);
534 EXPECT_FALSE(analysis.IsContinueBlock(5));
535 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(5));
536 EXPECT_FALSE(analysis.IsInContinueConstruct(5));
537 EXPECT_FALSE(analysis.IsMergeBlock(5));
577 StructuredCFGAnalysis analysis(context.get());
580 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
581 EXPECT_EQ(analysis.ContainingLoop(1), 0);
582 EXPECT_EQ(analysis.MergeBlock(1), 0);
583 EXPECT_EQ(analysis.NestingDepth(1), 0);
584 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
585 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
586 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
587 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
588 EXPECT_FALSE(analysis.IsContinueBlock(1));
589 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
590 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
591 EXPECT_FALSE(analysis.IsMergeBlock(1));
594 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
595 EXPECT_EQ(analysis.ContainingLoop(2), 1);
596 EXPECT_EQ(analysis.MergeBlock(2), 3);
597 EXPECT_EQ(analysis.NestingDepth(2), 1);
598 EXPECT_EQ(analysis.LoopMergeBlock(2), 3);
599 EXPECT_EQ(analysis.LoopNestingDepth(2), 1);
600 EXPECT_EQ(analysis.ContainingSwitch(2), 0);
601 EXPECT_EQ(analysis.SwitchMergeBlock(2), 0);
602 EXPECT_FALSE(analysis.IsContinueBlock(2));
603 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
604 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
605 EXPECT_FALSE(analysis.IsMergeBlock(2));
608 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
609 EXPECT_EQ(analysis.ContainingLoop(3), 0);
610 EXPECT_EQ(analysis.MergeBlock(3), 0);
611 EXPECT_EQ(analysis.NestingDepth(3), 0);
612 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
613 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
614 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
615 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
616 EXPECT_FALSE(analysis.IsContinueBlock(3));
617 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
618 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
619 EXPECT_TRUE(analysis.IsMergeBlock(3));
622 EXPECT_EQ(analysis.ContainingConstruct(4), 1);
623 EXPECT_EQ(analysis.ContainingLoop(4), 1);
624 EXPECT_EQ(analysis.MergeBlock(4), 3);
625 EXPECT_EQ(analysis.NestingDepth(4), 1);
626 EXPECT_EQ(analysis.LoopMergeBlock(4), 3);
627 EXPECT_EQ(analysis.LoopNestingDepth(4), 1);
628 EXPECT_EQ(analysis.ContainingSwitch(4), 0);
629 EXPECT_EQ(analysis.SwitchMergeBlock(4), 0);
630 EXPECT_FALSE(analysis.IsContinueBlock(4));
631 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(4));
632 EXPECT_FALSE(analysis.IsInContinueConstruct(4));
633 EXPECT_TRUE(analysis.IsMergeBlock(4));
636 EXPECT_EQ(analysis.ContainingConstruct(5), 2);
637 EXPECT_EQ(analysis.ContainingLoop(5), 2);
638 EXPECT_EQ(analysis.MergeBlock(5), 4);
639 EXPECT_EQ(analysis.NestingDepth(5), 2);
640 EXPECT_EQ(analysis.LoopMergeBlock(5), 4);
641 EXPECT_EQ(analysis.LoopNestingDepth(5), 2);
642 EXPECT_EQ(analysis.ContainingSwitch(5), 0);
643 EXPECT_EQ(analysis.SwitchMergeBlock(5), 0);
644 EXPECT_TRUE(analysis.IsContinueBlock(5));
645 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(5));
646 EXPECT_TRUE(analysis.IsInContinueConstruct(5));
647 EXPECT_FALSE(analysis.IsMergeBlock(5));
650 EXPECT_EQ(analysis.ContainingConstruct(6), 2);
651 EXPECT_EQ(analysis.ContainingLoop(6), 2);
652 EXPECT_EQ(analysis.MergeBlock(6), 4);
653 EXPECT_EQ(analysis.NestingDepth(6), 2);
654 EXPECT_EQ(analysis.LoopMergeBlock(6), 4);
655 EXPECT_EQ(analysis.LoopNestingDepth(6), 2);
656 EXPECT_EQ(analysis.ContainingSwitch(6), 0);
657 EXPECT_EQ(analysis.SwitchMergeBlock(6), 0);
658 EXPECT_FALSE(analysis.IsContinueBlock(6));
659 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(6));
660 EXPECT_FALSE(analysis.IsInContinueConstruct(6));
661 EXPECT_FALSE(analysis.IsMergeBlock(6));
664 EXPECT_EQ(analysis.ContainingConstruct(7), 1);
665 EXPECT_EQ(analysis.ContainingLoop(7), 1);
666 EXPECT_EQ(analysis.MergeBlock(7), 3);
667 EXPECT_EQ(analysis.NestingDepth(7), 1);
668 EXPECT_EQ(analysis.LoopMergeBlock(7), 3);
669 EXPECT_EQ(analysis.LoopNestingDepth(7), 1);
670 EXPECT_EQ(analysis.ContainingSwitch(7), 0);
671 EXPECT_EQ(analysis.SwitchMergeBlock(7), 0);
672 EXPECT_TRUE(analysis.IsContinueBlock(7));
673 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(7));
674 EXPECT_TRUE(analysis.IsInContinueConstruct(7));
675 EXPECT_FALSE(analysis.IsMergeBlock(7));
701 StructuredCFGAnalysis analysis(context.get());
706 EXPECT_EQ(analysis.ContainingConstruct(i), 0);
707 EXPECT_EQ(analysis.ContainingLoop(i), 0);
708 EXPECT_EQ(analysis.MergeBlock(i), 0);
709 EXPECT_EQ(analysis.NestingDepth(i), 0);
710 EXPECT_EQ(analysis.LoopMergeBlock(i), 0);
711 EXPECT_EQ(analysis.LoopNestingDepth(i), 0);
712 EXPECT_EQ(analysis.ContainingSwitch(i), 0);
713 EXPECT_EQ(analysis.SwitchMergeBlock(i), 0);
714 EXPECT_FALSE(analysis.IsContinueBlock(i));
715 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(i));
716 EXPECT_FALSE(analysis.IsInContinueConstruct(i));
717 EXPECT_FALSE(analysis.IsMergeBlock(i));
738 StructuredCFGAnalysis analysis(context.get());
767 StructuredCFGAnalysis analysis(context.get());
770 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
771 EXPECT_EQ(analysis.ContainingLoop(1), 0);
772 EXPECT_EQ(analysis.MergeBlock(1), 0);
773 EXPECT_EQ(analysis.NestingDepth(1), 0);
774 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
775 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
776 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
777 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
778 EXPECT_FALSE(analysis.IsContinueBlock(1));
779 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
780 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
781 EXPECT_FALSE(analysis.IsMergeBlock(1));
784 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
785 EXPECT_EQ(analysis.ContainingLoop(2), 0);
786 EXPECT_EQ(analysis.MergeBlock(2), 3);
787 EXPECT_EQ(analysis.NestingDepth(2), 1);
788 EXPECT_EQ(analysis.LoopMergeBlock(2), 0);
789 EXPECT_EQ(analysis.LoopNestingDepth(2), 0);
790 EXPECT_EQ(analysis.ContainingSwitch(2), 1);
791 EXPECT_EQ(analysis.SwitchMergeBlock(2), 3);
792 EXPECT_FALSE(analysis.IsContinueBlock(2));
793 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
794 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
795 EXPECT_FALSE(analysis.IsMergeBlock(2));
798 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
799 EXPECT_EQ(analysis.ContainingLoop(3), 0);
800 EXPECT_EQ(analysis.MergeBlock(3), 0);
801 EXPECT_EQ(analysis.NestingDepth(3), 0);
802 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
803 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
804 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
805 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
806 EXPECT_FALSE(analysis.IsContinueBlock(3));
807 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
808 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
809 EXPECT_TRUE(analysis.IsMergeBlock(3));
847 StructuredCFGAnalysis analysis(context.get());
850 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
851 EXPECT_EQ(analysis.ContainingLoop(1), 0);
852 EXPECT_EQ(analysis.MergeBlock(1), 0);
853 EXPECT_EQ(analysis.NestingDepth(1), 0);
854 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
855 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
856 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
857 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
858 EXPECT_FALSE(analysis.IsContinueBlock(1));
859 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
860 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
861 EXPECT_FALSE(analysis.IsMergeBlock(1));
864 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
865 EXPECT_EQ(analysis.ContainingLoop(2), 0);
866 EXPECT_EQ(analysis.MergeBlock(2), 3);
867 EXPECT_EQ(analysis.NestingDepth(2), 1);
868 EXPECT_EQ(analysis.LoopMergeBlock(2), 0);
869 EXPECT_EQ(analysis.LoopNestingDepth(2), 0);
870 EXPECT_EQ(analysis.ContainingSwitch(2), 1);
871 EXPECT_EQ(analysis.SwitchMergeBlock(2), 3);
872 EXPECT_FALSE(analysis.IsContinueBlock(2));
873 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
874 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
875 EXPECT_FALSE(analysis.IsMergeBlock(2));
878 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
879 EXPECT_EQ(analysis.ContainingLoop(3), 0);
880 EXPECT_EQ(analysis.MergeBlock(3), 0);
881 EXPECT_EQ(analysis.NestingDepth(3), 0);
882 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
883 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
884 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
885 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
886 EXPECT_FALSE(analysis.IsContinueBlock(3));
887 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
888 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
889 EXPECT_TRUE(analysis.IsMergeBlock(3));
892 EXPECT_EQ(analysis.ContainingConstruct(4), 1);
893 EXPECT_EQ(analysis.ContainingLoop(4), 0);
894 EXPECT_EQ(analysis.MergeBlock(4), 3);
895 EXPECT_EQ(analysis.NestingDepth(4), 1);
896 EXPECT_EQ(analysis.LoopMergeBlock(4), 0);
897 EXPECT_EQ(analysis.LoopNestingDepth(4), 0);
898 EXPECT_EQ(analysis.ContainingSwitch(4), 1);
899 EXPECT_EQ(analysis.SwitchMergeBlock(4), 3);
900 EXPECT_FALSE(analysis.IsContinueBlock(4));
901 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(4));
902 EXPECT_FALSE(analysis.IsInContinueConstruct(4));
903 EXPECT_TRUE(analysis.IsMergeBlock(4));
906 EXPECT_EQ(analysis.ContainingConstruct(5), 2);
907 EXPECT_EQ(analysis.ContainingLoop(5), 2);
908 EXPECT_EQ(analysis.MergeBlock(5), 4);
909 EXPECT_EQ(analysis.NestingDepth(5), 2);
910 EXPECT_EQ(analysis.LoopMergeBlock(5), 4);
911 EXPECT_EQ(analysis.LoopNestingDepth(5), 1);
912 EXPECT_EQ(analysis.ContainingSwitch(5), 0);
913 EXPECT_EQ(analysis.SwitchMergeBlock(5), 0);
914 EXPECT_TRUE(analysis.IsContinueBlock(5));
915 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(5));
916 EXPECT_TRUE(analysis.IsInContinueConstruct(5));
917 EXPECT_FALSE(analysis.IsMergeBlock(5));
920 EXPECT_EQ(analysis.ContainingConstruct(6), 2);
921 EXPECT_EQ(analysis.ContainingLoop(6), 2);
922 EXPECT_EQ(analysis.MergeBlock(6), 4);
923 EXPECT_EQ(analysis.NestingDepth(6), 2);
924 EXPECT_EQ(analysis.LoopMergeBlock(6), 4);
925 EXPECT_EQ(analysis.LoopNestingDepth(6), 1);
926 EXPECT_EQ(analysis.ContainingSwitch(6), 0);
927 EXPECT_EQ(analysis.SwitchMergeBlock(6), 0);
928 EXPECT_FALSE(analysis.IsContinueBlock(6));
929 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(6));
930 EXPECT_FALSE(analysis.IsInContinueConstruct(6));
931 EXPECT_FALSE(analysis.IsMergeBlock(6));
967 StructuredCFGAnalysis analysis(context.get());
970 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
971 EXPECT_EQ(analysis.ContainingLoop(1), 0);
972 EXPECT_EQ(analysis.MergeBlock(1), 0);
973 EXPECT_EQ(analysis.NestingDepth(1), 0);
974 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
975 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
976 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
977 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
978 EXPECT_FALSE(analysis.IsContinueBlock(1));
979 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
980 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
981 EXPECT_FALSE(analysis.IsMergeBlock(1));
984 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
985 EXPECT_EQ(analysis.ContainingLoop(2), 0);
986 EXPECT_EQ(analysis.MergeBlock(2), 3);
987 EXPECT_EQ(analysis.NestingDepth(2), 1);
988 EXPECT_EQ(analysis.LoopMergeBlock(2), 0);
989 EXPECT_EQ(analysis.LoopNestingDepth(2), 0);
990 EXPECT_EQ(analysis.ContainingSwitch(2), 1);
991 EXPECT_EQ(analysis.SwitchMergeBlock(2), 3);
992 EXPECT_FALSE(analysis.IsContinueBlock(2));
993 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
994 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
995 EXPECT_FALSE(analysis.IsMergeBlock(2));
998 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
999 EXPECT_EQ(analysis.ContainingLoop(3), 0);
1000 EXPECT_EQ(analysis.MergeBlock(3), 0);
1001 EXPECT_EQ(analysis.NestingDepth(3), 0);
1002 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
1003 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
1004 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
1005 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
1006 EXPECT_FALSE(analysis.IsContinueBlock(3));
1007 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
1008 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
1009 EXPECT_TRUE(analysis.IsMergeBlock(3));
1012 EXPECT_EQ(analysis.ContainingConstruct(4), 1);
1013 EXPECT_EQ(analysis.ContainingLoop(4), 0);
1014 EXPECT_EQ(analysis.MergeBlock(4), 3);
1015 EXPECT_EQ(analysis.NestingDepth(4), 1);
1016 EXPECT_EQ(analysis.LoopMergeBlock(4), 0);
1017 EXPECT_EQ(analysis.LoopNestingDepth(4), 0);
1018 EXPECT_EQ(analysis.ContainingSwitch(4), 1);
1019 EXPECT_EQ(analysis.SwitchMergeBlock(4), 3);
1020 EXPECT_FALSE(analysis.IsContinueBlock(4));
1021 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(4));
1022 EXPECT_FALSE(analysis.IsInContinueConstruct(4));
1023 EXPECT_TRUE(analysis.IsMergeBlock(4));
1026 EXPECT_EQ(analysis.ContainingConstruct(5), 2);
1027 EXPECT_EQ(analysis.ContainingLoop(5), 0);
1028 EXPECT_EQ(analysis.MergeBlock(5), 4);
1029 EXPECT_EQ(analysis.NestingDepth(5), 2);
1030 EXPECT_EQ(analysis.LoopMergeBlock(5), 0);
1031 EXPECT_EQ(analysis.LoopNestingDepth(5), 0);
1032 EXPECT_EQ(analysis.ContainingSwitch(5), 1);
1033 EXPECT_EQ(analysis.SwitchMergeBlock(5), 3);
1034 EXPECT_FALSE(analysis.IsContinueBlock(5));
1035 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(5));
1036 EXPECT_FALSE(analysis.IsInContinueConstruct(5));
1037 EXPECT_FALSE(analysis.IsMergeBlock(5));
1073 StructuredCFGAnalysis analysis(context.get());
1076 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
1077 EXPECT_EQ(analysis.ContainingLoop(1), 0);
1078 EXPECT_EQ(analysis.MergeBlock(1), 0);
1079 EXPECT_EQ(analysis.NestingDepth(1), 0);
1080 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
1081 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
1082 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
1083 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
1084 EXPECT_FALSE(analysis.IsContinueBlock(1));
1085 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
1086 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
1087 EXPECT_FALSE(analysis.IsMergeBlock(1));
1090 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
1091 EXPECT_EQ(analysis.ContainingLoop(2), 0);
1092 EXPECT_EQ(analysis.MergeBlock(2), 3);
1093 EXPECT_EQ(analysis.NestingDepth(2), 1);
1094 EXPECT_EQ(analysis.LoopMergeBlock(2), 0);
1095 EXPECT_EQ(analysis.LoopNestingDepth(2), 0);
1096 EXPECT_EQ(analysis.ContainingSwitch(2), 0);
1097 EXPECT_EQ(analysis.SwitchMergeBlock(2), 0);
1098 EXPECT_FALSE(analysis.IsContinueBlock(2));
1099 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
1100 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
1101 EXPECT_FALSE(analysis.IsMergeBlock(2));
1104 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
1105 EXPECT_EQ(analysis.ContainingLoop(3), 0);
1106 EXPECT_EQ(analysis.MergeBlock(3), 0);
1107 EXPECT_EQ(analysis.NestingDepth(3), 0);
1108 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
1109 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
1110 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
1111 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
1112 EXPECT_FALSE(analysis.IsContinueBlock(3));
1113 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
1114 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
1115 EXPECT_TRUE(analysis.IsMergeBlock(3));
1118 EXPECT_EQ(analysis.ContainingConstruct(4), 1);
1119 EXPECT_EQ(analysis.ContainingLoop(4), 0);
1120 EXPECT_EQ(analysis.MergeBlock(4), 3);
1121 EXPECT_EQ(analysis.NestingDepth(4), 1);
1122 EXPECT_EQ(analysis.LoopMergeBlock(4), 0);
1123 EXPECT_EQ(analysis.LoopNestingDepth(4), 0);
1124 EXPECT_EQ(analysis.ContainingSwitch(4), 0);
1125 EXPECT_EQ(analysis.SwitchMergeBlock(4), 0);
1126 EXPECT_FALSE(analysis.IsContinueBlock(4));
1127 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(4));
1128 EXPECT_FALSE(analysis.IsInContinueConstruct(4));
1129 EXPECT_TRUE(analysis.IsMergeBlock(4));
1132 EXPECT_EQ(analysis.ContainingConstruct(5), 2);
1133 EXPECT_EQ(analysis.ContainingLoop(5), 0);
1134 EXPECT_EQ(analysis.MergeBlock(5), 4);
1135 EXPECT_EQ(analysis.NestingDepth(5), 2);
1136 EXPECT_EQ(analysis.LoopMergeBlock(5), 0);
1137 EXPECT_EQ(analysis.LoopNestingDepth(5), 0);
1138 EXPECT_EQ(analysis.ContainingSwitch(5), 2);
1139 EXPECT_EQ(analysis.SwitchMergeBlock(5), 4);
1140 EXPECT_FALSE(analysis.IsContinueBlock(5));
1141 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(5));
1142 EXPECT_FALSE(analysis.IsInContinueConstruct(5));
1143 EXPECT_FALSE(analysis.IsMergeBlock(5));
1181 StructuredCFGAnalysis analysis(context.get());
1184 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
1185 EXPECT_EQ(analysis.ContainingLoop(1), 0);
1186 EXPECT_EQ(analysis.MergeBlock(1), 0);
1187 EXPECT_EQ(analysis.NestingDepth(1), 0);
1188 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
1189 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
1190 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
1191 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
1192 EXPECT_FALSE(analysis.IsContinueBlock(1));
1193 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
1194 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
1195 EXPECT_FALSE(analysis.IsMergeBlock(1));
1198 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
1199 EXPECT_EQ(analysis.ContainingLoop(2), 1);
1200 EXPECT_EQ(analysis.MergeBlock(2), 3);
1201 EXPECT_EQ(analysis.NestingDepth(2), 1);
1202 EXPECT_EQ(analysis.LoopMergeBlock(2), 3);
1203 EXPECT_EQ(analysis.LoopNestingDepth(2), 1);
1204 EXPECT_EQ(analysis.ContainingSwitch(2), 0);
1205 EXPECT_EQ(analysis.SwitchMergeBlock(2), 0);
1206 EXPECT_FALSE(analysis.IsContinueBlock(2));
1207 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
1208 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
1209 EXPECT_FALSE(analysis.IsMergeBlock(2));
1212 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
1213 EXPECT_EQ(analysis.ContainingLoop(3), 0);
1214 EXPECT_EQ(analysis.MergeBlock(3), 0);
1215 EXPECT_EQ(analysis.NestingDepth(3), 0);
1216 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
1217 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
1218 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
1219 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
1220 EXPECT_FALSE(analysis.IsContinueBlock(3));
1221 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
1222 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
1223 EXPECT_TRUE(analysis.IsMergeBlock(3));
1226 EXPECT_EQ(analysis.ContainingConstruct(4), 1);
1227 EXPECT_EQ(analysis.ContainingLoop(4), 1);
1228 EXPECT_EQ(analysis.MergeBlock(4), 3);
1229 EXPECT_EQ(analysis.NestingDepth(4), 1);
1230 EXPECT_EQ(analysis.LoopMergeBlock(4), 3);
1231 EXPECT_EQ(analysis.LoopNestingDepth(4), 1);
1232 EXPECT_EQ(analysis.ContainingSwitch(4), 0);
1233 EXPECT_EQ(analysis.SwitchMergeBlock(4), 0);
1234 EXPECT_TRUE(analysis.IsContinueBlock(4));
1235 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(4));
1236 EXPECT_TRUE(analysis.IsInContinueConstruct(4));
1237 EXPECT_FALSE(analysis.IsMergeBlock(4));
1240 EXPECT_EQ(analysis.ContainingConstruct(5), 4);
1241 EXPECT_EQ(analysis.ContainingLoop(5), 1);
1242 EXPECT_EQ(analysis.MergeBlock(5), 6);
1243 EXPECT_EQ(analysis.NestingDepth(5), 2);
1244 EXPECT_EQ(analysis.LoopMergeBlock(5), 3);
1245 EXPECT_EQ(analysis.LoopNestingDepth(5), 1);
1246 EXPECT_EQ(analysis.ContainingSwitch(5), 0);
1247 EXPECT_EQ(analysis.SwitchMergeBlock(5), 0);
1248 EXPECT_FALSE(analysis.IsContinueBlock(5));
1249 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(5));
1250 EXPECT_TRUE(analysis.IsInContinueConstruct(5));
1251 EXPECT_FALSE(analysis.IsMergeBlock(5));
1254 EXPECT_EQ(analysis.ContainingConstruct(6), 1);
1255 EXPECT_EQ(analysis.ContainingLoop(6), 1);
1256 EXPECT_EQ(analysis.MergeBlock(6), 3);
1257 EXPECT_EQ(analysis.NestingDepth(6), 1);
1258 EXPECT_EQ(analysis.LoopMergeBlock(6), 3);
1259 EXPECT_EQ(analysis.LoopNestingDepth(6), 1);
1260 EXPECT_EQ(analysis.ContainingSwitch(6), 0);
1261 EXPECT_EQ(analysis.SwitchMergeBlock(6), 0);
1262 EXPECT_FALSE(analysis.IsContinueBlock(6));
1263 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(6));
1264 EXPECT_TRUE(analysis.IsInContinueConstruct(6));
1265 EXPECT_TRUE(analysis.IsMergeBlock(6));
1305 StructuredCFGAnalysis analysis(context.get());
1308 EXPECT_EQ(analysis.ContainingConstruct(1), 0);
1309 EXPECT_EQ(analysis.ContainingLoop(1), 0);
1310 EXPECT_EQ(analysis.MergeBlock(1), 0);
1311 EXPECT_EQ(analysis.NestingDepth(1), 0);
1312 EXPECT_EQ(analysis.LoopMergeBlock(1), 0);
1313 EXPECT_EQ(analysis.LoopNestingDepth(1), 0);
1314 EXPECT_EQ(analysis.ContainingSwitch(1), 0);
1315 EXPECT_EQ(analysis.SwitchMergeBlock(1), 0);
1316 EXPECT_FALSE(analysis.IsContinueBlock(1));
1317 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(1));
1318 EXPECT_FALSE(analysis.IsInContinueConstruct(1));
1319 EXPECT_FALSE(analysis.IsMergeBlock(1));
1322 EXPECT_EQ(analysis.ContainingConstruct(2), 1);
1323 EXPECT_EQ(analysis.ContainingLoop(2), 1);
1324 EXPECT_EQ(analysis.MergeBlock(2), 3);
1325 EXPECT_EQ(analysis.NestingDepth(2), 1);
1326 EXPECT_EQ(analysis.LoopMergeBlock(2), 3);
1327 EXPECT_EQ(analysis.LoopNestingDepth(2), 1);
1328 EXPECT_EQ(analysis.ContainingSwitch(2), 0);
1329 EXPECT_EQ(analysis.SwitchMergeBlock(2), 0);
1330 EXPECT_FALSE(analysis.IsContinueBlock(2));
1331 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(2));
1332 EXPECT_FALSE(analysis.IsInContinueConstruct(2));
1333 EXPECT_FALSE(analysis.IsMergeBlock(2));
1336 EXPECT_EQ(analysis.ContainingConstruct(3), 0);
1337 EXPECT_EQ(analysis.ContainingLoop(3), 0);
1338 EXPECT_EQ(analysis.MergeBlock(3), 0);
1339 EXPECT_EQ(analysis.NestingDepth(3), 0);
1340 EXPECT_EQ(analysis.LoopMergeBlock(3), 0);
1341 EXPECT_EQ(analysis.LoopNestingDepth(3), 0);
1342 EXPECT_EQ(analysis.ContainingSwitch(3), 0);
1343 EXPECT_EQ(analysis.SwitchMergeBlock(3), 0);
1344 EXPECT_FALSE(analysis.IsContinueBlock(3));
1345 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(3));
1346 EXPECT_FALSE(analysis.IsInContinueConstruct(3));
1347 EXPECT_TRUE(analysis.IsMergeBlock(3));
1350 EXPECT_EQ(analysis.ContainingConstruct(4), 1);
1351 EXPECT_EQ(analysis.ContainingLoop(4), 1);
1352 EXPECT_EQ(analysis.MergeBlock(4), 3);
1353 EXPECT_EQ(analysis.NestingDepth(4), 1);
1354 EXPECT_EQ(analysis.LoopMergeBlock(4), 3);
1355 EXPECT_EQ(analysis.LoopNestingDepth(4), 1);
1356 EXPECT_EQ(analysis.ContainingSwitch(4), 0);
1357 EXPECT_EQ(analysis.SwitchMergeBlock(4), 0);
1358 EXPECT_FALSE(analysis.IsContinueBlock(4));
1359 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(4));
1360 EXPECT_TRUE(analysis.IsInContinueConstruct(4));
1361 EXPECT_TRUE(analysis.IsMergeBlock(4));
1364 EXPECT_EQ(analysis.ContainingConstruct(5), 7);
1365 EXPECT_EQ(analysis.ContainingLoop(5), 7);
1366 EXPECT_EQ(analysis.MergeBlock(5), 4);
1367 EXPECT_EQ(analysis.NestingDepth(5), 2);
1368 EXPECT_EQ(analysis.LoopMergeBlock(5), 4);
1369 EXPECT_EQ(analysis.LoopNestingDepth(5), 2);
1370 EXPECT_EQ(analysis.ContainingSwitch(5), 0);
1371 EXPECT_EQ(analysis.SwitchMergeBlock(5), 0);
1372 EXPECT_TRUE(analysis.IsContinueBlock(5));
1373 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(5));
1374 EXPECT_TRUE(analysis.IsInContinueConstruct(5));
1375 EXPECT_FALSE(analysis.IsMergeBlock(5));
1378 EXPECT_EQ(analysis.ContainingConstruct(6), 7);
1379 EXPECT_EQ(analysis.ContainingLoop(6), 7);
1380 EXPECT_EQ(analysis.MergeBlock(6), 4);
1381 EXPECT_EQ(analysis.NestingDepth(6), 2);
1382 EXPECT_EQ(analysis.LoopMergeBlock(6), 4);
1383 EXPECT_EQ(analysis.LoopNestingDepth(6), 2);
1384 EXPECT_EQ(analysis.ContainingSwitch(6), 0);
1385 EXPECT_EQ(analysis.SwitchMergeBlock(6), 0);
1386 EXPECT_FALSE(analysis.IsContinueBlock(6));
1387 EXPECT_FALSE(analysis.IsInContainingLoopsContinueConstruct(6));
1388 EXPECT_TRUE(analysis.IsInContinueConstruct(6));
1389 EXPECT_FALSE(analysis.IsMergeBlock(6));
1392 EXPECT_EQ(analysis.ContainingConstruct(7), 1);
1393 EXPECT_EQ(analysis.ContainingLoop(7), 1);
1394 EXPECT_EQ(analysis.MergeBlock(7), 3);
1395 EXPECT_EQ(analysis.NestingDepth(7), 1);
1396 EXPECT_EQ(analysis.LoopMergeBlock(7), 3);
1397 EXPECT_EQ(analysis.LoopNestingDepth(7), 1);
1398 EXPECT_EQ(analysis.ContainingSwitch(7), 0);
1399 EXPECT_EQ(analysis.SwitchMergeBlock(7), 0);
1400 EXPECT_TRUE(analysis.IsContinueBlock(7));
1401 EXPECT_TRUE(analysis.IsInContainingLoopsContinueConstruct(7));
1402 EXPECT_TRUE(analysis.IsInContinueConstruct(7));
1403 EXPECT_FALSE(analysis.IsMergeBlock(7));
1444 StructuredCFGAnalysis analysis(context.get());
1446 auto c = analysis.FindFuncsCalledFromContinue();
1494 StructuredCFGAnalysis analysis(context.get());
1496 auto c = analysis.FindFuncsCalledFromContinue();
1524 StructuredCFGAnalysis analysis(context.get());
1526 EXPECT_TRUE(analysis.IsInContinueConstruct(3));