1 // RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s 2 3 void *target; indirectBlockSuccessorDeterminism()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