@@ -316,6 +316,56 @@ exit:
316
316
ret i1 %cmp
317
317
}
318
318
319
+ define i1 @known_non_equal_phis_max_recursion_limit (i1 %cond , i32 %switch.cond ) {
320
+ ; CHECK-LABEL: @known_non_equal_phis_max_recursion_limit(
321
+ ; CHECK-NEXT: entry:
322
+ ; CHECK-NEXT: br label [[BB0:%.*]]
323
+ ; CHECK: bb0:
324
+ ; CHECK-NEXT: [[PHIA_0:%.*]] = phi i32 [ [[PHIA_1:%.*]], [[BB1:%.*]] ], [ 0, [[ENTRY:%.*]] ]
325
+ ; CHECK-NEXT: [[PHIB_0:%.*]] = phi i32 [ [[PHIB_1:%.*]], [[BB1]] ], [ 0, [[ENTRY]] ]
326
+ ; CHECK-NEXT: br i1 [[COND:%.*]], label [[SWITCH_BLOCK:%.*]], label [[EXIT:%.*]]
327
+ ; CHECK: switch.block:
328
+ ; CHECK-NEXT: switch i32 [[SWITCH_COND:%.*]], label [[BB1]] [
329
+ ; CHECK-NEXT: i32 0, label [[EPILOGUE:%.*]]
330
+ ; CHECK-NEXT: i32 1, label [[EPILOGUE]]
331
+ ; CHECK-NEXT: ]
332
+ ; CHECK: bb1:
333
+ ; CHECK-NEXT: [[PHIA_1]] = phi i32 [ [[PHIA_0]], [[SWITCH_BLOCK]] ], [ 0, [[EPILOGUE]] ]
334
+ ; CHECK-NEXT: [[PHIB_1]] = phi i32 [ [[PHIB_0]], [[SWITCH_BLOCK]] ], [ 0, [[EPILOGUE]] ]
335
+ ; CHECK-NEXT: br label [[BB0]]
336
+ ; CHECK: epilogue:
337
+ ; CHECK-NEXT: br label [[BB1]]
338
+ ; CHECK: exit:
339
+ ; CHECK-NEXT: [[RET:%.*]] = icmp eq i32 [[PHIA_0]], [[PHIB_0]]
340
+ ; CHECK-NEXT: ret i1 [[RET]]
341
+ ;
342
+ entry:
343
+ br label %bb0
344
+
345
+ bb0:
346
+ %phiA.0 = phi i32 [ %phiA.1 , %bb1 ], [ 0 , %entry ]
347
+ %phiB.0 = phi i32 [ %phiB.1 , %bb1 ], [ 0 , %entry ]
348
+ br i1 %cond , label %switch.block , label %exit
349
+
350
+ switch .block:
351
+ switch i32 %switch.cond , label %bb1 [
352
+ i32 0 , label %epilogue
353
+ i32 1 , label %epilogue
354
+ ]
355
+
356
+ bb1:
357
+ %phiA.1 = phi i32 [ %phiA.0 , %switch.block ], [ 0 , %epilogue ]
358
+ %phiB.1 = phi i32 [ %phiB.0 , %switch.block ], [ 0 , %epilogue ]
359
+ br label %bb0
360
+
361
+ epilogue:
362
+ br label %bb1
363
+
364
+ exit:
365
+ %ret = icmp eq i32 %phiA.0 , %phiB.0
366
+ ret i1 %ret
367
+ }
368
+
319
369
define i1 @known_non_equal_phis_fail (i8 %p , ptr %pq , i8 %n , i8 %r ) {
320
370
; CHECK-LABEL: @known_non_equal_phis_fail(
321
371
; CHECK-NEXT: entry:
0 commit comments