Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / SimplifyCFG / switch-to-br.ll
blobfb3f6989a924d5465ba178cbbf4524d8216d4f2c
1 ; RUN: opt %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s
3 declare i32 @f(i32)
5 define i32 @basic(i32 %x) {
6 ; CHECK-LABEL: @basic
7 ; CHECK-LABEL: entry:
8 ; CHECK-NEXT:  call i32 @f(i32 0)
9 ; CHECK-NEXT:  ret i32 %0
11 entry:
12   switch i32 %x, label %default [
13     i32 5, label %default
14     i32 6, label %default
15     i32 7, label %default
16   ]
17 default:
18   %0 = call i32 @f(i32 0)
19   ret i32 %0
23 define i32 @constant() {
24 ; CHECK-LABEL: @constant
25 ; CHECK-LABEL: entry:
26 ; CHECK-NEXT:  call i32 @f(i32 1)
27 ; CHECK-NEXT:  ret i32 %0
29 entry:
30   switch i32 42, label %default [
31     i32 41, label %default
32     i32 42, label %a
33     i32 43, label %b
34   ]
35 default:
36   %0 = call i32 @f(i32 0)
37   ret i32 %0
39   %1 = call i32 @f(i32 1)
40   ret i32 %1
42   %2 = call i32 @f(i32 2)
43   ret i32 %2
47 define i32 @unreachable(i32 %x) {
48 ; CHECK-LABEL: @unreachable
49 ; CHECK-LABEL: entry:
50 ; CHECK-NEXT:  call i32 @f(i32 0)
51 ; CHECK-NEXT:  ret i32 %0
53 entry:
54   switch i32 %x, label %unreachable [
55     i32 5, label %a
56     i32 6, label %a
57     i32 7, label %a
58   ]
59 unreachable:
60   unreachable
62   %0 = call i32 @f(i32 0)
63   ret i32 %0