Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / Instrumentation / SanitizerCoverage / unreachable-critedge.ll
blobe229a9de2a381cee5d82d5bd8e6da91e9bf93306
1 ; RUN: opt < %s -S -passes='module(sancov-module)' -sanitizer-coverage-level=3 | FileCheck %s
3 ; The critical edges to unreachable_bb should not be split.
4 define i32 @foo(i32 %c, i32 %d) {
5 ; CHECK-LABEL: @foo(
6 ; CHECK:         switch i32 [[C:%.*]], label [[UNREACHABLE_BB:%.*]] [
7 ; CHECK-NEXT:    i32 0, label %exit0
8 ; CHECK-NEXT:    i32 1, label %exit1
9 ; CHECK-NEXT:    i32 2, label %cont
10 ; CHECK-NEXT:    ]
11 ; CHECK:       cont:
12 ; CHECK:         switch i32 [[D:%.*]], label [[UNREACHABLE_BB]] [
13 ; CHECK-NEXT:    i32 0, label %exit2
14 ; CHECK-NEXT:    i32 1, label %exit3
15 ; CHECK-NEXT:    i32 2, label %exit4
16 ; CHECK-NEXT:    ]
17 ; CHECK:       unreachable_bb:
18 ; CHECK-NEXT:    unreachable
20   switch i32 %c, label %unreachable_bb [i32 0, label %exit0
21   i32 1, label %exit1
22   i32 2, label %cont]
24 cont:
25   switch i32 %d, label %unreachable_bb [i32 0, label %exit2
26   i32 1, label %exit3
27   i32 2, label %exit4]
29 exit0:
30   ret i32 0
32 exit1:
33   ret i32 1
35 exit2:
36   ret i32 2
38 exit3:
39   ret i32 3
41 exit4:
42   ret i32 4
44 unreachable_bb:
45   unreachable