1; REQUIRES: asserts
2; RUN: opt -jump-threading -aa-pipeline basic-aa -S -disable-output %s
3; RUN: opt -passes=jump-threading -aa-pipeline basic-aa -S -disable-output %s
4
5define void @foo(i8** %arg1, i32* %arg2) {
6bb:
7  br label %bb1
8
9bb1:
10  %tmp = phi i1 [ 0, %bb24 ], [ 1, %bb ]
11  br i1 %tmp, label %bb9, label %bb24
12
13
14bb9:
15  br i1 %tmp, label %bb8, label %bb20
16
17bb8:
18  ret void
19
20bb13:
21  br label %bb14
22
23bb14:
24  %tmp15 = phi i32* [ %tmp21, %bb20 ], [ %arg2, %bb13 ]
25  %tmp16 = phi i8** [ %tmp22, %bb20 ], [ %arg1, %bb13 ]
26  store atomic i32 0, i32* %tmp15 unordered, align 4
27  %tmp17 = load atomic i8*, i8** %tmp16 unordered, align 8
28  %tmp18 = icmp eq i8* %tmp17, null
29  br i1 %tmp18, label %bb25, label %bb19
30
31bb19:
32  ret void
33
34bb20:
35  %tmp21 = phi i32* [ %arg2, %bb9 ]
36  %tmp22 = phi i8** [ %arg1, %bb9 ]
37  br label %bb14
38
39bb24:
40  br label %bb1
41
42bb25:
43  ret void
44}
45