aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/Transforms/JumpThreading/ddt-crash4.ll
blob: c84b5ffbc9edc34122dd0b0e45a885df013c8bb8 (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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -passes=jump-threading -verify-dom-info < %s | FileCheck %s

@global = external global i64, align 8

define void @f(i1 %arg) {
; CHECK-LABEL: @f(
; CHECK-NEXT:  bb:
; CHECK-NEXT:    br label [[BB1:%.*]]
; CHECK:       bb1:
; CHECK-NEXT:    [[TMP:%.*]] = load i64, ptr @global, align 8
; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i64 [[TMP]], 0
; CHECK-NEXT:    br i1 [[TMP2]], label [[BB27:%.*]], label [[BB3:%.*]]
; CHECK:       bb3:
; CHECK-NEXT:    [[TMP4:%.*]] = load i64, ptr @global, align 8
; CHECK-NEXT:    [[TMP5:%.*]] = icmp eq i64 [[TMP4]], 0
; CHECK-NEXT:    br i1 [[TMP5]], label [[BB23:%.*]], label [[BB23]]
; CHECK:       bb10:
; CHECK-NEXT:    [[TMP11:%.*]] = load i64, ptr @global, align 8
; CHECK-NEXT:    [[TMP12:%.*]] = icmp slt i64 [[TMP11]], 5
; CHECK-NEXT:    br i1 [[TMP12]], label [[BB14:%.*]], label [[BB17:%.*]]
; CHECK:       bb14:
; CHECK-NEXT:    br i1 [[ARG:%.*]], label [[BB15:%.*]], label [[BB10:%.*]]
; CHECK:       bb15:
; CHECK-NEXT:    unreachable
; CHECK:       bb17:
; CHECK-NEXT:    br label [[BB26:%.*]]
; CHECK:       bb18:
; CHECK-NEXT:    br i1 [[ARG]], label [[BB23]], label [[BB14]]
; CHECK:       bb21:
; CHECK-NEXT:    br label [[BB26]]
; CHECK:       bb23:
; CHECK-NEXT:    br i1 [[ARG]], label [[BB24:%.*]], label [[BB14]]
; CHECK:       bb24:
; CHECK-NEXT:    br i1 [[ARG]], label [[BB28:%.*]], label [[BB21:%.*]]
; CHECK:       bb26:
; CHECK-NEXT:    br label [[BB1]]
; CHECK:       bb27:
; CHECK-NEXT:    br label [[BB24]]
;
bb:
  br label %bb1

bb1:
  %tmp = load i64, ptr @global, align 8
  %tmp2 = icmp eq i64 %tmp, 0
  br i1 %tmp2, label %bb27, label %bb3

bb3:
  %tmp4 = load i64, ptr @global, align 8
  %tmp5 = icmp eq i64 %tmp4, 0
  br i1 %tmp5, label %bb6, label %bb7

bb6:
  br label %bb7

bb7:
  %tmp8 = phi i1 [ true, %bb3 ], [ undef, %bb6 ]
  %tmp9 = select i1 %tmp8, i64 %tmp4, i64 0
  br i1 false, label %bb10, label %bb23

bb10:
  %tmp11 = load i64, ptr @global, align 8
  %tmp12 = icmp slt i64 %tmp11, 5
  br i1 %tmp12, label %bb13, label %bb17

bb13:
  br label %bb14

bb14:
  br i1 %arg, label %bb15, label %bb16

bb15:
  unreachable

bb16:
  br label %bb10

bb17:
  br label %bb18

bb18:
  br i1 %arg, label %bb22, label %bb13

bb19:
  br i1 %arg, label %bb20, label %bb21

bb20:
  unreachable

bb21:
  br label %bb18

bb22:
  br label %bb23

bb23:
  br i1 %arg, label %bb24, label %bb13

bb24:
  br i1 %arg, label %bb26, label %bb25

bb25:
  br label %bb19

bb26:
  br label %bb1

bb27:
  br label %bb24
}