29
29
define dso_local i32 @test1 (i1 %cond ) {
30
30
; CHECK-LABEL: define dso_local i32 @test1(
31
31
; CHECK-SAME: i1 [[COND:%.*]]) {
32
- ; CHECK-NEXT: [[FOR_PREHEADER:.*:]]
33
- ; CHECK-NEXT: br label %[[INNERLOOP_PREHEADER:.*]]
34
- ; CHECK: [[OUTERLOOP_PREHEADER:.*]]:
32
+ ; CHECK-NEXT: [[FOR_PREHEADER:.*]]:
35
33
; CHECK-NEXT: br label %[[OUTERLOOP:.*]]
36
34
; CHECK: [[OUTERLOOP]]:
37
- ; CHECK-NEXT: [[I:%.*]] = phi i64 [ [[INDVARS_IV_NEXT21_I:%.*]], %[[FOR_LATCH:.*]] ], [ 0, %[[OUTERLOOP_PREHEADER]] ]
38
- ; CHECK-NEXT: br label %[[INNERLOOP_SPLIT:.*]]
39
- ; CHECK: [[INNERLOOP_PREHEADER]]:
35
+ ; CHECK-NEXT: [[I:%.*]] = phi i64 [ 0, %[[FOR_PREHEADER]] ], [ [[INDVARS_IV_NEXT21_I:%.*]], %[[FOR_LATCH:.*]] ]
40
36
; CHECK-NEXT: br label %[[INNERLOOP:.*]]
41
37
; CHECK: [[INNERLOOP]]:
42
- ; CHECK-NEXT: [[J:%.*]] = phi i64 [ [[TMP0:%.*]], %[[IF_END_SPLIT:.*]] ], [ 0, %[[INNERLOOP_PREHEADER]] ]
43
- ; CHECK-NEXT: br label %[[OUTERLOOP_PREHEADER]]
44
- ; CHECK: [[INNERLOOP_SPLIT]]:
38
+ ; CHECK-NEXT: [[J:%.*]] = phi i64 [ 0, %[[OUTERLOOP]] ], [ [[TMP0:%.*]], %[[IF_END:.*]] ]
45
39
; CHECK-NEXT: [[ARRAYIDX6_I:%.*]] = getelementptr inbounds [4 x [9 x i32]], ptr @f, i64 0, i64 [[J]], i64 [[I]]
46
40
; CHECK-NEXT: [[I1:%.*]] = load i32, ptr [[ARRAYIDX6_I]], align 4
47
41
; CHECK-NEXT: [[TOBOOL_I:%.*]] = icmp eq i32 [[I1]], 0
@@ -50,24 +44,20 @@ define dso_local i32 @test1(i1 %cond) {
50
44
; CHECK-NEXT: store i32 3, ptr @g, align 4
51
45
; CHECK-NEXT: br label %[[LAND_END]]
52
46
; CHECK: [[LAND_END]]:
53
- ; CHECK-NEXT: br i1 [[COND]], label %[[IF_END:.* ]], label %[[IF_THEN:.*]]
47
+ ; CHECK-NEXT: br i1 [[COND]], label %[[IF_END]], label %[[IF_THEN:.*]]
54
48
; CHECK: [[IF_THEN]]:
55
49
; CHECK-NEXT: [[I2:%.*]] = load i32, ptr @g, align 4
56
50
; CHECK-NEXT: [[INC_I:%.*]] = add i32 [[I2]], 1
57
51
; CHECK-NEXT: store i32 [[INC_I]], ptr @g, align 4
58
52
; CHECK-NEXT: br label %[[IF_END]]
59
53
; CHECK: [[IF_END]]:
60
- ; CHECK-NEXT: [[J_NEXT:%.*]] = add nuw nsw i64 [[J]], 1
61
- ; CHECK-NEXT: [[EXITCOND_I:%.*]] = icmp eq i64 [[J_NEXT]], 3
62
- ; CHECK-NEXT: br label %[[FOR_LATCH]]
63
- ; CHECK: [[IF_END_SPLIT]]:
64
54
; CHECK-NEXT: [[TMP0]] = add nuw nsw i64 [[J]], 1
65
55
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i64 [[TMP0]], 3
66
- ; CHECK-NEXT: br i1 [[TMP1]], label %[[EXIT:.* ]], label %[[INNERLOOP]]
56
+ ; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_LATCH ]], label %[[INNERLOOP]]
67
57
; CHECK: [[FOR_LATCH]]:
68
58
; CHECK-NEXT: [[INDVARS_IV_NEXT21_I]] = add nsw i64 [[I]], 1
69
59
; CHECK-NEXT: [[CMP_I:%.*]] = icmp slt i64 [[I]], 2
70
- ; CHECK-NEXT: br i1 [[CMP_I]], label %[[OUTERLOOP]], label %[[IF_END_SPLIT ]]
60
+ ; CHECK-NEXT: br i1 [[CMP_I]], label %[[OUTERLOOP]], label %[[EXIT:.* ]]
71
61
; CHECK: [[EXIT]]:
72
62
; CHECK-NEXT: [[I3:%.*]] = load i32, ptr @g, align 4
73
63
; CHECK-NEXT: ret i32 [[I3]]
@@ -139,19 +129,13 @@ exit:
139
129
define dso_local i32 @test2 (i1 %cond ) {
140
130
; CHECK-LABEL: define dso_local i32 @test2(
141
131
; CHECK-SAME: i1 [[COND:%.*]]) {
142
- ; CHECK-NEXT: [[FOR_PREHEADER:.*:]]
143
- ; CHECK-NEXT: br label %[[INNERLOOP_PREHEADER:.*]]
144
- ; CHECK: [[OUTERLOOP_PREHEADER:.*]]:
132
+ ; CHECK-NEXT: [[FOR_PREHEADER:.*]]:
145
133
; CHECK-NEXT: br label %[[OUTERLOOP:.*]]
146
134
; CHECK: [[OUTERLOOP]]:
147
- ; CHECK-NEXT: [[I:%.*]] = phi i64 [ [[INDVARS_IV_NEXT21_I:%.*]], %[[FOR_LATCH:.*]] ], [ 0, %[[OUTERLOOP_PREHEADER]] ]
148
- ; CHECK-NEXT: br label %[[INNERLOOP_SPLIT:.*]]
149
- ; CHECK: [[INNERLOOP_PREHEADER]]:
135
+ ; CHECK-NEXT: [[I:%.*]] = phi i64 [ 0, %[[FOR_PREHEADER]] ], [ [[INDVARS_IV_NEXT21_I:%.*]], %[[FOR_LATCH:.*]] ]
150
136
; CHECK-NEXT: br label %[[INNERLOOP:.*]]
151
137
; CHECK: [[INNERLOOP]]:
152
- ; CHECK-NEXT: [[J:%.*]] = phi i64 [ [[TMP0:%.*]], %[[IF_END_SPLIT:.*]] ], [ 0, %[[INNERLOOP_PREHEADER]] ]
153
- ; CHECK-NEXT: br label %[[OUTERLOOP_PREHEADER]]
154
- ; CHECK: [[INNERLOOP_SPLIT]]:
138
+ ; CHECK-NEXT: [[J:%.*]] = phi i64 [ 0, %[[OUTERLOOP]] ], [ [[TMP0:%.*]], %[[IF_END:.*]] ]
155
139
; CHECK-NEXT: [[ARRAYIDX6_I:%.*]] = getelementptr inbounds [4 x [9 x i32]], ptr @f, i64 0, i64 [[J]], i64 [[I]]
156
140
; CHECK-NEXT: [[I1:%.*]] = load i32, ptr [[ARRAYIDX6_I]], align 4
157
141
; CHECK-NEXT: [[TOBOOL_I:%.*]] = icmp eq i32 [[I1]], 0
@@ -160,24 +144,20 @@ define dso_local i32 @test2(i1 %cond) {
160
144
; CHECK: [[LAND_RHS]]:
161
145
; CHECK-NEXT: br label %[[LAND_END]]
162
146
; CHECK: [[LAND_END]]:
163
- ; CHECK-NEXT: br i1 [[COND]], label %[[IF_END:.* ]], label %[[IF_THEN:.*]]
147
+ ; CHECK-NEXT: br i1 [[COND]], label %[[IF_END]], label %[[IF_THEN:.*]]
164
148
; CHECK: [[IF_THEN]]:
165
149
; CHECK-NEXT: [[I2:%.*]] = load i32, ptr @g, align 4
166
150
; CHECK-NEXT: [[INC_I:%.*]] = add i32 [[I2]], 1
167
151
; CHECK-NEXT: store i32 [[INC_I]], ptr @g, align 4
168
152
; CHECK-NEXT: br label %[[IF_END]]
169
153
; CHECK: [[IF_END]]:
170
- ; CHECK-NEXT: [[J_NEXT:%.*]] = add nuw nsw i64 [[J]], 1
171
- ; CHECK-NEXT: [[EXITCOND_I:%.*]] = icmp eq i64 [[J_NEXT]], 3
172
- ; CHECK-NEXT: br label %[[FOR_LATCH]]
173
- ; CHECK: [[IF_END_SPLIT]]:
174
154
; CHECK-NEXT: [[TMP0]] = add nuw nsw i64 [[J]], 1
175
155
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i64 [[TMP0]], 3
176
- ; CHECK-NEXT: br i1 [[TMP1]], label %[[EXIT:.* ]], label %[[INNERLOOP]]
156
+ ; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_LATCH ]], label %[[INNERLOOP]]
177
157
; CHECK: [[FOR_LATCH]]:
178
158
; CHECK-NEXT: [[INDVARS_IV_NEXT21_I]] = add nsw i64 [[I]], 1
179
159
; CHECK-NEXT: [[CMP_I:%.*]] = icmp slt i64 [[I]], 2
180
- ; CHECK-NEXT: br i1 [[CMP_I]], label %[[OUTERLOOP]], label %[[IF_END_SPLIT ]]
160
+ ; CHECK-NEXT: br i1 [[CMP_I]], label %[[OUTERLOOP]], label %[[EXIT:.* ]]
181
161
; CHECK: [[EXIT]]:
182
162
; CHECK-NEXT: [[I3:%.*]] = load i32, ptr @g, align 4
183
163
; CHECK-NEXT: ret i32 [[I3]]
0 commit comments