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