97 lines
1.4 KiB
C++
97 lines
1.4 KiB
C++
|
// 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
|