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