[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Transforms / MergeFunc / phi-check-blocks.ll
blob76f4491c29b7eb67f09f08f0d0f988e1fc87a5b4
1 ; RUN: opt -S -mergefunc < %s | FileCheck %s
3 ; Ensure that we do not merge functions that are identical with the
4 ; exception of the order of the incoming blocks to a phi.
6 ; CHECK-LABEL: define linkonce_odr hidden i1 @first(i2 %0)
7 define linkonce_odr hidden i1 @first(i2 %0) {
8 entry:
9 ; CHECK: switch i2
10   switch i2 %0, label %default [
11     i2 0, label %L1
12     i2 1, label %L2
13     i2 -2, label %L3
14   ]
15 default:
16   unreachable
17 L1:
18   br label %done
19 L2:
20   br label %done
21 L3:
22   br label %done
23 done:
24   %result = phi i1 [ true, %L1 ], [ false, %L2 ], [ false, %L3 ]
25 ; CHECK: ret i1
26   ret i1 %result
29 ; CHECK-LABEL: define linkonce_odr hidden i1 @second(i2 %0)
30 define linkonce_odr hidden i1 @second(i2 %0) {
31 entry:
32 ; CHECK: switch i2
33   switch i2 %0, label %default [
34     i2 0, label %L1
35     i2 1, label %L2
36     i2 -2, label %L3
37   ]
38 default:
39   unreachable
40 L1:
41   br label %done
42 L2:
43   br label %done
44 L3:
45   br label %done
46 done:
47   %result = phi i1 [ true, %L3 ], [ false, %L2 ], [ false, %L1 ]
48 ; CHECK: ret i1
49   ret i1 %result