summaryrefslogtreecommitdiffstats
path: root/polly/test/Isl/CodeGen/phi_in_exit_early_lnt_failure_5.ll
blob: bbf62e4f62005542ad9f13db0a4c8fd878faef8a (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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
;
; This caused an lnt crash at some point, just verify it will run through and
; produce the PHI node in the exit we are looking for.
;
; CHECK-LABEL: polly.merge_new_and_old:
; CHECK-NEXT:    %eps1.addr.0.ph.merge = phi double [ %eps1.addr.0.ph.final_reload, %polly.exiting ], [ %eps1.addr.0.ph, %if.end.47.region_exiting ]
; CHECK-NEXT:      br label %if.end.47
;
; CHECK-LABEL: if.end.47:
; CHECK-NEXT:        %eps1.addr.0 = phi double [ %eps1.addr.0.ph.merge, %polly.merge_new_and_old ]
;
define void @dbisect(double* %c, double* %b, double %eps1, double* %eps2) {
entry:
  br label %entry.split

entry.split:                                      ; preds = %entry
  store double 0.000000e+00, double* %b, align 8
  %arrayidx9 = getelementptr inbounds double, double* %c, i64 0
  %0 = load double, double* %arrayidx9, align 8
  br i1 false, label %for.body.lr.ph, label %for.end

for.body.lr.ph:                                   ; preds = %entry.split
  br label %for.body

for.body:                                         ; preds = %for.inc, %for.body.lr.ph
  br i1 false, label %if.then, label %if.end

if.then:                                          ; preds = %for.body
  br label %if.end

if.end:                                           ; preds = %if.then, %for.body
  br i1 false, label %if.then.36, label %for.inc

if.then.36:                                       ; preds = %if.end
  br label %for.inc

for.inc:                                          ; preds = %if.then.36, %if.end
  br i1 false, label %for.body, label %for.cond.for.end_crit_edge

for.cond.for.end_crit_edge:                       ; preds = %for.inc
  br label %for.end

for.end:                                          ; preds = %for.cond.for.end_crit_edge, %entry.split
  store double undef, double* %eps2, align 8
  %cmp45 = fcmp ugt double %eps1, 0.000000e+00
  br i1 %cmp45, label %if.end.47, label %if.then.46

if.then.46:                                       ; preds = %for.end
  br label %if.end.47

if.end.47:                                        ; preds = %if.then.46, %for.end
  %eps1.addr.0 = phi double [ undef, %if.then.46 ], [ %eps1, %for.end ]
  br i1 undef, label %if.then.55, label %for.cond.58.preheader

for.cond.58.preheader:                            ; preds = %if.end.47
  br i1 undef, label %for.end.68, label %for.body.61.lr.ph

for.body.61.lr.ph:                                ; preds = %for.cond.58.preheader
  br label %for.body.61

if.then.55:                                       ; preds = %if.end.47
  unreachable

for.body.61:                                      ; preds = %for.body.61, %for.body.61.lr.ph
  br i1 undef, label %for.body.61, label %for.cond.58.for.end.68_crit_edge

for.cond.58.for.end.68_crit_edge:                 ; preds = %for.body.61
  br label %for.end.68

for.end.68:                                       ; preds = %for.cond.58.for.end.68_crit_edge, %for.cond.58.preheader
  br i1 undef, label %for.end.137, label %for.cond.73.preheader.lr.ph

for.cond.73.preheader.lr.ph:                      ; preds = %for.end.68
  br label %for.cond.73.preheader

for.cond.73.preheader:                            ; preds = %while.end, %for.cond.73.preheader.lr.ph
  br i1 undef, label %for.end.87.loopexit, label %for.body.76.lr.ph

for.body.76.lr.ph:                                ; preds = %for.cond.73.preheader
  br label %for.body.76

for.body.76:                                      ; preds = %for.inc.85, %for.body.76.lr.ph
  br i1 undef, label %if.then.81, label %for.inc.85

if.then.81:                                       ; preds = %for.body.76
  br label %for.end.87

for.inc.85:                                       ; preds = %for.body.76
  br i1 undef, label %for.body.76, label %for.cond.73.for.end.87.loopexit_crit_edge

for.cond.73.for.end.87.loopexit_crit_edge:        ; preds = %for.inc.85
  br label %for.end.87.loopexit

for.end.87.loopexit:                              ; preds = %for.cond.73.for.end.87.loopexit_crit_edge, %for.cond.73.preheader
  br label %for.end.87

for.end.87:                                       ; preds = %for.end.87.loopexit, %if.then.81
  br i1 undef, label %if.then.92, label %if.end.95

if.then.92:                                       ; preds = %for.end.87
  br label %if.end.95

if.end.95:                                        ; preds = %if.then.92, %for.end.87
  br i1 undef, label %while.body.lr.ph, label %while.end

while.body.lr.ph:                                 ; preds = %if.end.95
  br label %while.body

while.body:                                       ; preds = %if.end.128, %while.body.lr.ph
  br i1 undef, label %if.then.109, label %if.end.128

if.then.109:                                      ; preds = %while.body
  br i1 undef, label %if.then.112, label %if.else

if.then.112:                                      ; preds = %if.then.109
  br label %if.end.128

if.else:                                          ; preds = %if.then.109
  br i1 undef, label %if.then.122, label %if.end.128

if.then.122:                                      ; preds = %if.else
  br label %if.end.128

if.end.128:                                       ; preds = %if.then.122, %if.else, %if.then.112, %while.body
  br i1 undef, label %while.body, label %while.cond.while.end_crit_edge

while.cond.while.end_crit_edge:                   ; preds = %if.end.128
  br label %while.end

while.end:                                        ; preds = %while.cond.while.end_crit_edge, %if.end.95
  br i1 undef, label %for.cond.73.preheader, label %for.cond.69.for.end.137_crit_edge

for.cond.69.for.end.137_crit_edge:                ; preds = %while.end
  br label %for.end.137

for.end.137:                                      ; preds = %for.cond.69.for.end.137_crit_edge, %for.end.68
  ret void
}
OpenPOWER on IntegriCloud