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