Skip to content

Commit cfa5ecd

Browse files
authored
ValueTracking/test: cover recur limit in non-equal PHIs (#113205)
Add a test covering the recursion limit of isNonEqualPHIs.
1 parent 5d39e0c commit cfa5ecd

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

llvm/test/Analysis/ValueTracking/known-non-equal.ll

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,56 @@ exit:
316316
ret i1 %cmp
317317
}
318318

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+
319369
define i1 @known_non_equal_phis_fail(i8 %p, ptr %pq, i8 %n, i8 %r) {
320370
; CHECK-LABEL: @known_non_equal_phis_fail(
321371
; CHECK-NEXT: entry:

0 commit comments

Comments
 (0)