[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Transforms / GVN / PRE / pre-jt-add.ll
blob469b78cc4f164cac4c3355c361e0cb544ff242f6
1 ; RUN: opt < %s -gvn -enable-pre -jump-threading -S | FileCheck %s
3 @H = common global i32 0
4 @G = common global i32 0
6 define i32 @test(i1 %cond, i32 %v) nounwind {
7 ; CHECK-LABEL: @test
8 entry:
9   br i1 %cond, label %bb, label %bb1
11 bb:
12 ; CHECK: store
13 ; CHECK-NOT: br label %return
14   %add.1 = add nuw nsw i32 %v, -1
15   store i32 %add.1, i32* @G, align 4
16   br label %merge
18 bb1:
19   br label %merge
21 merge:
22   %add.2 = add i32 %v, -1
23   %cmp = icmp sgt i32 %add.2, 0
24   br i1 %cmp, label %action, label %return
26 action:
27 ; CHECK: store
28 ; CHECK-NEXT: br label %return
29   store i32 %add.2, i32* @H, align 4
30   br label %return
32 return:
33   %p = phi i32 [0, %merge], [1, %action]
34   ret i32 %p