xref: /llvm-project/llvm/test/Transforms/LCSSA/pr44320.ll (revision 7e5e4d66b361ea498a465270649178a0289db1ac)
1; RUN: opt -passes="verify<scalar-evolution>,lcssa,verify<scalar-evolution>" -verify-scev-strict -S -disable-output %s
2
3; The first SCEV verification is required because it queries SCEV and populates
4; SCEV caches. Second SCEV verification checks if the caches are in valid state.
5
6; Check that the second SCEV verification doesn't fail.
7define void @test(ptr %arg, ptr %arg1, i1 %arg2, i1 %arg3) {
8bb:
9  br label %bb6
10
11bb5:
12  br label %bb6
13
14bb6:
15  br label %bb7
16
17bb7:
18  %tmp = load i32, ptr %arg
19  %tmp8 = load i32, ptr %arg1
20  %tmp9 = add i32 %tmp8, %tmp
21  %tmp10 = icmp sgt i32 %tmp9, %tmp
22  br i1 %tmp10, label %bb11, label %bb17
23
24bb11:
25  br i1 %arg3, label %bb12, label %bb14
26
27bb12:
28  br label %bb13
29
30bb13:
31  br label %bb17
32
33bb14:
34  br label %bb15
35
36bb15:
37  %tmp16 = add nsw i32 %tmp, 1
38  ret void
39
40bb17:
41  %tmp18 = phi i32 [ 0, %bb7 ], [ %tmp8, %bb13 ]
42  br i1 %arg2, label %bb24, label %bb19
43
44bb19:
45  br label %bb20
46
47bb20:
48  %tmp21 = phi i32 [ %tmp22, %bb20 ], [ 0, %bb19 ]
49  %tmp22 = add nuw nsw i32 %tmp21, 1
50  %tmp23 = icmp slt i32 %tmp22, %tmp18
51  br i1 %tmp23, label %bb20, label %bb5
52
53bb24:
54  ret void
55}
56