Clang Project

clang_source_code/test/Analysis/cfg-indirect-goto-determinism.cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s
2
3void *target;
4int indirectBlockSuccessorDeterminism() {
5    (void)&&L1;
6    (void)&&L2;
7    (void)&&L3;
8    (void)&&L4;
9    (void)&&L5;
10    (void)&&L6;
11    (void)&&L7;
12    (void)&&L8;
13    (void)&&L9;
14    (void)&&L10;
15    (void)&&L11;
16    (void)&&L12;
17    (void)&&L13;
18    (void)&&L14;
19    (void)&&L15;
20    (void)&&L16;
21    (void)&&L17;
22    (void)&&L18;
23    (void)&&L19;
24    (void)&&L20;
25    (void)&&L21;
26    (void)&&L22;
27    (void)&&L23;
28    (void)&&L24;
29    (void)&&L25;
30    (void)&&L26;
31    (void)&&L27;
32    (void)&&L28;
33    (void)&&L29;
34    (void)&&L30;
35    (void)&&L31;
36    (void)&&L32;
37    (void)&&L33;
38    (void)&&L34;
39    (void)&&L35;
40    (void)&&L36;
41    (void)&&L37;
42    (void)&&L38;
43    (void)&&L39;
44    (void)&&L40;
45
46    goto *target;
47  L1:
48  L2:
49  L3:
50  L4:
51  L5:
52  L6:
53  L7:
54  L8:
55  L9:
56  L10:
57  L11:
58  L12:
59  L13:
60  L14:
61  L15:
62  L16:
63  L17:
64  L18:
65  L19:
66  L20:
67  L21:
68  L22:
69  L23:
70  L24:
71  L25:
72  L26:
73  L27:
74  L28:
75  L29:
76  L30:
77  L31:
78  L32:
79  L33:
80  L34:
81  L35:
82  L36:
83  L37:
84  L38:
85  L39:
86  L40:
87    return 0;
88}
89
90// CHECK-LABEL:  [B41 (INDIRECT GOTO DISPATCH)]
91// CHECK-NEXT:   Preds (1): B42
92// CHECK-NEXT:  Succs (40): B1 B2 B3 B4 B5 B6 B7 B8
93// CHECK-NEXT:       B9 B10 B11 B12 B13 B14 B15 B16 B17 B18
94// CHECK-NEXT:       B19 B20 B21 B22 B23 B24 B25 B26 B27 B28
95// CHECK-NEXT:       B29 B30 B31 B32 B33 B34 B35 B36 B37 B38
96// CHECK-NEXT:       B39 B40
97