xref: /llvm-project/llvm/test/Transforms/JumpThreading/ddt-crash4.ll (revision ead9ad2960ab72bf6142d8aeb164a097a7e407db)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=jump-threading -verify-dom-info < %s | FileCheck %s
3
4@global = external global i64, align 8
5
6define void @f(i1 %arg) {
7; CHECK-LABEL: @f(
8; CHECK-NEXT:  bb:
9; CHECK-NEXT:    br label [[BB1:%.*]]
10; CHECK:       bb1:
11; CHECK-NEXT:    [[TMP:%.*]] = load i64, ptr @global, align 8
12; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i64 [[TMP]], 0
13; CHECK-NEXT:    br i1 [[TMP2]], label [[BB27:%.*]], label [[BB3:%.*]]
14; CHECK:       bb3:
15; CHECK-NEXT:    [[TMP4:%.*]] = load i64, ptr @global, align 8
16; CHECK-NEXT:    [[TMP5:%.*]] = icmp eq i64 [[TMP4]], 0
17; CHECK-NEXT:    br i1 [[TMP5]], label [[BB23:%.*]], label [[BB23]]
18; CHECK:       bb10:
19; CHECK-NEXT:    [[TMP11:%.*]] = load i64, ptr @global, align 8
20; CHECK-NEXT:    [[TMP12:%.*]] = icmp slt i64 [[TMP11]], 5
21; CHECK-NEXT:    br i1 [[TMP12]], label [[BB14:%.*]], label [[BB17:%.*]]
22; CHECK:       bb14:
23; CHECK-NEXT:    br i1 [[ARG:%.*]], label [[BB15:%.*]], label [[BB10:%.*]]
24; CHECK:       bb15:
25; CHECK-NEXT:    unreachable
26; CHECK:       bb17:
27; CHECK-NEXT:    br label [[BB26:%.*]]
28; CHECK:       bb18:
29; CHECK-NEXT:    br i1 [[ARG]], label [[BB23]], label [[BB14]]
30; CHECK:       bb21:
31; CHECK-NEXT:    br label [[BB26]]
32; CHECK:       bb23:
33; CHECK-NEXT:    br i1 [[ARG]], label [[BB24:%.*]], label [[BB14]]
34; CHECK:       bb24:
35; CHECK-NEXT:    br i1 [[ARG]], label [[BB28:%.*]], label [[BB21:%.*]]
36; CHECK:       bb26:
37; CHECK-NEXT:    br label [[BB1]]
38; CHECK:       bb27:
39; CHECK-NEXT:    br label [[BB24]]
40;
41bb:
42  br label %bb1
43
44bb1:
45  %tmp = load i64, ptr @global, align 8
46  %tmp2 = icmp eq i64 %tmp, 0
47  br i1 %tmp2, label %bb27, label %bb3
48
49bb3:
50  %tmp4 = load i64, ptr @global, align 8
51  %tmp5 = icmp eq i64 %tmp4, 0
52  br i1 %tmp5, label %bb6, label %bb7
53
54bb6:
55  br label %bb7
56
57bb7:
58  %tmp8 = phi i1 [ true, %bb3 ], [ undef, %bb6 ]
59  %tmp9 = select i1 %tmp8, i64 %tmp4, i64 0
60  br i1 false, label %bb10, label %bb23
61
62bb10:
63  %tmp11 = load i64, ptr @global, align 8
64  %tmp12 = icmp slt i64 %tmp11, 5
65  br i1 %tmp12, label %bb13, label %bb17
66
67bb13:
68  br label %bb14
69
70bb14:
71  br i1 %arg, label %bb15, label %bb16
72
73bb15:
74  unreachable
75
76bb16:
77  br label %bb10
78
79bb17:
80  br label %bb18
81
82bb18:
83  br i1 %arg, label %bb22, label %bb13
84
85bb19:
86  br i1 %arg, label %bb20, label %bb21
87
88bb20:
89  unreachable
90
91bb21:
92  br label %bb18
93
94bb22:
95  br label %bb23
96
97bb23:
98  br i1 %arg, label %bb24, label %bb13
99
100bb24:
101  br i1 %arg, label %bb26, label %bb25
102
103bb25:
104  br label %bb19
105
106bb26:
107  br label %bb1
108
109bb27:
110  br label %bb24
111}
112