// RUN: %clang_analyze_cc1 %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)
