aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/Transforms/JumpThreading/aa-crash-phi-no-args.ll
blob: ba3fca8a50e9db72294152c7bd7e9a7d7c42cfbb (plain)
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
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -passes=jump-threading -aa-pipeline basic-aa < %s | FileCheck %s

define void @foo(ptr %arg1, ptr %arg2) {
; CHECK-LABEL: @foo(
; CHECK-NEXT:  bb:
; CHECK-NEXT:    br label [[BB1:%.*]]
; CHECK:       bb1:
; CHECK-NEXT:    [[TMP:%.*]] = phi i1 [ false, [[BB24:%.*]] ], [ true, [[BB:%.*]] ]
; CHECK-NEXT:    br i1 [[TMP]], label [[BB8:%.*]], label [[BB24]]
; CHECK:       bb8:
; CHECK-NEXT:    ret void
; CHECK:       bb24:
; CHECK-NEXT:    br label [[BB1]]
;
bb:
  br label %bb1

bb1:
  %tmp = phi i1 [ 0, %bb24 ], [ 1, %bb ]
  br i1 %tmp, label %bb9, label %bb24


bb9:
  br i1 %tmp, label %bb8, label %bb20

bb8:
  ret void

bb13:
  br label %bb14

bb14:
  %tmp15 = phi ptr [ %tmp21, %bb20 ], [ %arg2, %bb13 ]
  %tmp16 = phi ptr [ %tmp22, %bb20 ], [ %arg1, %bb13 ]
  store atomic i32 0, ptr %tmp15 unordered, align 4
  %tmp17 = load atomic ptr, ptr %tmp16 unordered, align 8
  %tmp18 = icmp eq ptr %tmp17, null
  br i1 %tmp18, label %bb25, label %bb19

bb19:
  ret void

bb20:
  %tmp21 = phi ptr [ %arg2, %bb9 ]
  %tmp22 = phi ptr [ %arg1, %bb9 ]
  br label %bb14

bb24:
  br label %bb1

bb25:
  ret void
}