blob: bbf62e4f62005542ad9f13db0a4c8fd878faef8a [file] [log] [blame]
Tobias Grosserf4ee3712015-10-06 15:36:44 +00001; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
Johannes Doerfert717b8662015-09-08 21:44:27 +00002;
3; This caused an lnt crash at some point, just verify it will run through and
4; produce the PHI node in the exit we are looking for.
5;
6; CHECK-LABEL: polly.merge_new_and_old:
Tobias Grosser2d3d4ec2015-12-09 11:38:22 +00007; 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 ]
Johannes Doerfert717b8662015-09-08 21:44:27 +00008; CHECK-NEXT: br label %if.end.47
9;
10; CHECK-LABEL: if.end.47:
11; CHECK-NEXT: %eps1.addr.0 = phi double [ %eps1.addr.0.ph.merge, %polly.merge_new_and_old ]
12;
13define void @dbisect(double* %c, double* %b, double %eps1, double* %eps2) {
14entry:
15 br label %entry.split
16
17entry.split: ; preds = %entry
18 store double 0.000000e+00, double* %b, align 8
19 %arrayidx9 = getelementptr inbounds double, double* %c, i64 0
20 %0 = load double, double* %arrayidx9, align 8
21 br i1 false, label %for.body.lr.ph, label %for.end
22
23for.body.lr.ph: ; preds = %entry.split
24 br label %for.body
25
26for.body: ; preds = %for.inc, %for.body.lr.ph
27 br i1 false, label %if.then, label %if.end
28
29if.then: ; preds = %for.body
30 br label %if.end
31
32if.end: ; preds = %if.then, %for.body
33 br i1 false, label %if.then.36, label %for.inc
34
35if.then.36: ; preds = %if.end
36 br label %for.inc
37
38for.inc: ; preds = %if.then.36, %if.end
39 br i1 false, label %for.body, label %for.cond.for.end_crit_edge
40
41for.cond.for.end_crit_edge: ; preds = %for.inc
42 br label %for.end
43
44for.end: ; preds = %for.cond.for.end_crit_edge, %entry.split
45 store double undef, double* %eps2, align 8
46 %cmp45 = fcmp ugt double %eps1, 0.000000e+00
47 br i1 %cmp45, label %if.end.47, label %if.then.46
48
49if.then.46: ; preds = %for.end
50 br label %if.end.47
51
52if.end.47: ; preds = %if.then.46, %for.end
53 %eps1.addr.0 = phi double [ undef, %if.then.46 ], [ %eps1, %for.end ]
54 br i1 undef, label %if.then.55, label %for.cond.58.preheader
55
56for.cond.58.preheader: ; preds = %if.end.47
57 br i1 undef, label %for.end.68, label %for.body.61.lr.ph
58
59for.body.61.lr.ph: ; preds = %for.cond.58.preheader
60 br label %for.body.61
61
62if.then.55: ; preds = %if.end.47
63 unreachable
64
65for.body.61: ; preds = %for.body.61, %for.body.61.lr.ph
66 br i1 undef, label %for.body.61, label %for.cond.58.for.end.68_crit_edge
67
68for.cond.58.for.end.68_crit_edge: ; preds = %for.body.61
69 br label %for.end.68
70
71for.end.68: ; preds = %for.cond.58.for.end.68_crit_edge, %for.cond.58.preheader
72 br i1 undef, label %for.end.137, label %for.cond.73.preheader.lr.ph
73
74for.cond.73.preheader.lr.ph: ; preds = %for.end.68
75 br label %for.cond.73.preheader
76
77for.cond.73.preheader: ; preds = %while.end, %for.cond.73.preheader.lr.ph
78 br i1 undef, label %for.end.87.loopexit, label %for.body.76.lr.ph
79
80for.body.76.lr.ph: ; preds = %for.cond.73.preheader
81 br label %for.body.76
82
83for.body.76: ; preds = %for.inc.85, %for.body.76.lr.ph
84 br i1 undef, label %if.then.81, label %for.inc.85
85
86if.then.81: ; preds = %for.body.76
87 br label %for.end.87
88
89for.inc.85: ; preds = %for.body.76
90 br i1 undef, label %for.body.76, label %for.cond.73.for.end.87.loopexit_crit_edge
91
92for.cond.73.for.end.87.loopexit_crit_edge: ; preds = %for.inc.85
93 br label %for.end.87.loopexit
94
95for.end.87.loopexit: ; preds = %for.cond.73.for.end.87.loopexit_crit_edge, %for.cond.73.preheader
96 br label %for.end.87
97
98for.end.87: ; preds = %for.end.87.loopexit, %if.then.81
99 br i1 undef, label %if.then.92, label %if.end.95
100
101if.then.92: ; preds = %for.end.87
102 br label %if.end.95
103
104if.end.95: ; preds = %if.then.92, %for.end.87
105 br i1 undef, label %while.body.lr.ph, label %while.end
106
107while.body.lr.ph: ; preds = %if.end.95
108 br label %while.body
109
110while.body: ; preds = %if.end.128, %while.body.lr.ph
111 br i1 undef, label %if.then.109, label %if.end.128
112
113if.then.109: ; preds = %while.body
114 br i1 undef, label %if.then.112, label %if.else
115
116if.then.112: ; preds = %if.then.109
117 br label %if.end.128
118
119if.else: ; preds = %if.then.109
120 br i1 undef, label %if.then.122, label %if.end.128
121
122if.then.122: ; preds = %if.else
123 br label %if.end.128
124
125if.end.128: ; preds = %if.then.122, %if.else, %if.then.112, %while.body
126 br i1 undef, label %while.body, label %while.cond.while.end_crit_edge
127
128while.cond.while.end_crit_edge: ; preds = %if.end.128
129 br label %while.end
130
131while.end: ; preds = %while.cond.while.end_crit_edge, %if.end.95
132 br i1 undef, label %for.cond.73.preheader, label %for.cond.69.for.end.137_crit_edge
133
134for.cond.69.for.end.137_crit_edge: ; preds = %while.end
135 br label %for.end.137
136
137for.end.137: ; preds = %for.cond.69.for.end.137_crit_edge, %for.end.68
138 ret void
139}