56 lines · plain
1; RUN: opt -passes="verify<scalar-evolution>,lcssa,verify<scalar-evolution>" -verify-scev-strict -S -disable-output %s2 3; The first SCEV verification is required because it queries SCEV and populates4; 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 %bb610 11bb5:12 br label %bb613 14bb6:15 br label %bb716 17bb7:18 %tmp = load i32, ptr %arg19 %tmp8 = load i32, ptr %arg120 %tmp9 = add i32 %tmp8, %tmp21 %tmp10 = icmp sgt i32 %tmp9, %tmp22 br i1 %tmp10, label %bb11, label %bb1723 24bb11:25 br i1 %arg3, label %bb12, label %bb1426 27bb12:28 br label %bb1329 30bb13:31 br label %bb1732 33bb14:34 br label %bb1535 36bb15:37 %tmp16 = add nsw i32 %tmp, 138 ret void39 40bb17:41 %tmp18 = phi i32 [ 0, %bb7 ], [ %tmp8, %bb13 ]42 br i1 %arg2, label %bb24, label %bb1943 44bb19:45 br label %bb2046 47bb20:48 %tmp21 = phi i32 [ %tmp22, %bb20 ], [ 0, %bb19 ]49 %tmp22 = add nuw nsw i32 %tmp21, 150 %tmp23 = icmp slt i32 %tmp22, %tmp1851 br i1 %tmp23, label %bb20, label %bb552 53bb24:54 ret void55}56