| // RUN: %clang_analyze_cc1 -std=c++14 %s \ | 
 | // RUN:   -analyzer-checker=debug.DumpDominators \ | 
 | // RUN:   -analyzer-checker=debug.DumpPostDominators \ | 
 | // RUN:   -analyzer-checker=debug.DumpControlDependencies \ | 
 | // RUN:   2>&1 | FileCheck %s | 
 |  | 
 | bool coin(); | 
 |  | 
 | namespace pr42041_unreachable_cfg_successor { | 
 | enum Kind { | 
 |   A | 
 | }; | 
 |  | 
 | void f() { | 
 |   switch(Kind{}) { | 
 |   case A: | 
 |     break; | 
 |   } | 
 | } | 
 | } // end of namespace pr42041_unreachable_cfg_successor | 
 |  | 
 | //  [B3 (ENTRY)]  -> [B1] -> [B2] -> [B0 (EXIT)] | 
 |  | 
 | // CHECK:      Control dependencies (Node#,Dependency#): | 
 | // CHECK-NEXT: Immediate dominance tree (Node#,IDom#): | 
 | // CHECK-NEXT: (0,2) | 
 | // CHECK-NEXT: (1,3) | 
 | // CHECK-NEXT: (2,1) | 
 | // CHECK-NEXT: (3,3) | 
 | // CHECK-NEXT: Immediate post dominance tree (Node#,IDom#): | 
 | // CHECK-NEXT: (0,0) | 
 | // CHECK-NEXT: (1,2) | 
 | // CHECK-NEXT: (2,0) | 
 | // CHECK-NEXT: (3,1) | 
 |  | 
 | void funcWithBranch() { | 
 |   int x = 0; | 
 |   if (coin()) { | 
 |     if (coin()) { | 
 |       x = 5; | 
 |     } | 
 |     int j = 10 / x; | 
 |     (void)j; | 
 |   } | 
 | } | 
 |  | 
 | //                  1st if  2nd if | 
 | //  [B5 (ENTRY)]  -> [B4] -> [B3] -> [B2] -> [B1] -> [B0 (EXIT)] | 
 | //                    \        \              /         / | 
 | //                     \        ------------->         / | 
 | //                      ------------------------------> | 
 |  | 
 | // CHECK:      Control dependencies (Node#,Dependency#): | 
 | // CHECK-NEXT: (1,4) | 
 | // CHECK-NEXT: (2,3) | 
 | // CHECK-NEXT: (2,4) | 
 | // CHECK-NEXT: (3,4) | 
 | // CHECK-NEXT: Immediate dominance tree (Node#,IDom#): | 
 | // CHECK-NEXT: (0,4) | 
 | // CHECK-NEXT: (1,3) | 
 | // CHECK-NEXT: (2,3) | 
 | // CHECK-NEXT: (3,4) | 
 | // CHECK-NEXT: (4,5) | 
 | // CHECK-NEXT: (5,5) | 
 | // CHECK-NEXT: Immediate post dominance tree (Node#,IDom#): | 
 | // CHECK-NEXT: (0,0) | 
 | // CHECK-NEXT: (1,0) | 
 | // CHECK-NEXT: (2,1) | 
 | // CHECK-NEXT: (3,1) | 
 | // CHECK-NEXT: (4,0) | 
 | // CHECK-NEXT: (5,4) |