xref: /llvm-project/llvm/test/Transforms/GVN/PRE/pre-jt-add.ll (revision 23abf931386002fb9d2c11d026846475c224c641)
1; RUN: opt < %s -passes=gvn,jump-threading -enable-pre -S | FileCheck %s
2
3@H = common global i32 0
4@G = common global i32 0
5
6define i32 @test(i1 %cond, i32 %v) nounwind {
7; CHECK-LABEL: @test
8entry:
9  br i1 %cond, label %bb, label %bb1
10
11bb:
12; CHECK: store
13; CHECK-NOT: br label %return
14  %add.1 = add nuw nsw i32 %v, -1
15  store i32 %add.1, ptr @G, align 4
16  br label %merge
17
18bb1:
19  br label %merge
20
21merge:
22  %add.2 = add i32 %v, -1
23  %cmp = icmp sgt i32 %add.2, 0
24  br i1 %cmp, label %action, label %return
25
26action:
27; CHECK: store
28; CHECK-NEXT: br label %return
29  store i32 %add.2, ptr @H, align 4
30  br label %return
31
32return:
33  %p = phi i32 [0, %merge], [1, %action]
34  ret i32 %p
35}
36
37