1 ; RUN: opt -passes="verify<scalar-evolution>,lcssa,verify<scalar-evolution>" -verify-scev-strict -S -disable-output %s
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.
6 ; Check that the second SCEV verification doesn't fail.
7 define void @test(ptr %arg, ptr %arg1, i1 %arg2, i1 %arg3) {
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
25 br i1 %arg3, label %bb12, label %bb14
37 %tmp16 = add nsw i32 %tmp, 1
41 %tmp18 = phi i32 [ 0, %bb7 ], [ %tmp8, %bb13 ]
42 br i1 %arg2, label %bb24, label %bb19
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