xref: /llvm-project/llvm/test/Transforms/JumpThreading/aa-crash-phi-no-args.ll (revision b6909fe9ca1789db98c3481977468d33e9886182)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=jump-threading -aa-pipeline basic-aa < %s | FileCheck %s
3
4define void @foo(ptr %arg1, ptr %arg2) {
5; CHECK-LABEL: @foo(
6; CHECK-NEXT:  bb:
7; CHECK-NEXT:    br label [[BB1:%.*]]
8; CHECK:       bb1:
9; CHECK-NEXT:    [[TMP:%.*]] = phi i1 [ false, [[BB24:%.*]] ], [ true, [[BB:%.*]] ]
10; CHECK-NEXT:    br i1 [[TMP]], label [[BB8:%.*]], label [[BB24]]
11; CHECK:       bb8:
12; CHECK-NEXT:    ret void
13; CHECK:       bb24:
14; CHECK-NEXT:    br label [[BB1]]
15;
16bb:
17  br label %bb1
18
19bb1:
20  %tmp = phi i1 [ 0, %bb24 ], [ 1, %bb ]
21  br i1 %tmp, label %bb9, label %bb24
22
23
24bb9:
25  br i1 %tmp, label %bb8, label %bb20
26
27bb8:
28  ret void
29
30bb13:
31  br label %bb14
32
33bb14:
34  %tmp15 = phi ptr [ %tmp21, %bb20 ], [ %arg2, %bb13 ]
35  %tmp16 = phi ptr [ %tmp22, %bb20 ], [ %arg1, %bb13 ]
36  store atomic i32 0, ptr %tmp15 unordered, align 4
37  %tmp17 = load atomic ptr, ptr %tmp16 unordered, align 8
38  %tmp18 = icmp eq ptr %tmp17, null
39  br i1 %tmp18, label %bb25, label %bb19
40
41bb19:
42  ret void
43
44bb20:
45  %tmp21 = phi ptr [ %arg2, %bb9 ]
46  %tmp22 = phi ptr [ %arg1, %bb9 ]
47  br label %bb14
48
49bb24:
50  br label %bb1
51
52bb25:
53  ret void
54}
55