1; RUN: opt < %s -S -sancov -sanitizer-coverage-level=3 -enable-new-pm=0 | FileCheck %s 2; RUN: opt < %s -S -passes='module(sancov-module)' -sanitizer-coverage-level=3 | FileCheck %s 3 4; The critical edges to unreachable_bb should not be split. 5define i32 @foo(i32 %c, i32 %d) { 6; CHECK-LABEL: @foo( 7; CHECK: switch i32 [[C:%.*]], label [[UNREACHABLE_BB:%.*]] [ 8; CHECK-NEXT: i32 0, label %exit0 9; CHECK-NEXT: i32 1, label %exit1 10; CHECK-NEXT: i32 2, label %cont 11; CHECK-NEXT: ] 12; CHECK: cont: 13; CHECK: switch i32 [[D:%.*]], label [[UNREACHABLE_BB]] [ 14; CHECK-NEXT: i32 0, label %exit2 15; CHECK-NEXT: i32 1, label %exit3 16; CHECK-NEXT: i32 2, label %exit4 17; CHECK-NEXT: ] 18; CHECK: unreachable_bb: 19; CHECK-NEXT: unreachable 20; 21 switch i32 %c, label %unreachable_bb [i32 0, label %exit0 22 i32 1, label %exit1 23 i32 2, label %cont] 24 25cont: 26 switch i32 %d, label %unreachable_bb [i32 0, label %exit2 27 i32 1, label %exit3 28 i32 2, label %exit4] 29 30exit0: 31 ret i32 0 32 33exit1: 34 ret i32 1 35 36exit2: 37 ret i32 2 38 39exit3: 40 ret i32 3 41 42exit4: 43 ret i32 4 44 45unreachable_bb: 46 unreachable 47} 48