[Alignment][NFC] Instructions::getLoadStoreAlignment
[llvm-complete.git] / test / Instrumentation / SanitizerCoverage / unreachable-critedge.ll
blob99e3383db9a7f5900d717f0ca8a396df1a6175d8
1 ; RUN: opt < %s -S -sancov -sanitizer-coverage-level=3 | FileCheck %s
2 ; RUN: opt < %s -S -passes='module(sancov-module)' -sanitizer-coverage-level=3 | FileCheck %s
4 ; The critical edges to unreachable_bb should not be split.
5 define 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
21   switch i32 %c, label %unreachable_bb [i32 0, label %exit0
22   i32 1, label %exit1
23   i32 2, label %cont]
25 cont:
26   switch i32 %d, label %unreachable_bb [i32 0, label %exit2
27   i32 1, label %exit3
28   i32 2, label %exit4]
30 exit0:
31   ret i32 0
33 exit1:
34   ret i32 1
36 exit2:
37   ret i32 2
39 exit3:
40   ret i32 3
42 exit4:
43   ret i32 4
45 unreachable_bb:
46   unreachable