Skip to content

Commit f473d4a

Browse files
committed
[ConstraintElimination] Support BBs with single successor in CanAdd.
If BB has a single successor, conditions can be added safely.
1 parent c076fa1 commit f473d4a

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

llvm/lib/Transforms/Scalar/ConstraintElimination.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,10 @@ static bool eliminateConstraints(Function &F, DominatorTree &DT) {
419419
// Succ (e.g. the case when adding a condition from a pre-header to a loop
420420
// header).
421421
auto CanAdd = [&BB, &DT](BasicBlock *Succ) {
422+
if (BB.getSingleSuccessor()) {
423+
assert(BB.getSingleSuccessor() == Succ);
424+
return true;
425+
}
422426
return any_of(successors(&BB),
423427
[Succ](const BasicBlock *S) { return S != Succ; }) &&
424428
all_of(predecessors(Succ), [&BB, &DT, Succ](BasicBlock *Pred) {

llvm/test/Transforms/ConstraintElimination/assumes.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ define i1 @assume_does_not_dominates_successor_with_may_unwind_call_before_assum
164164
; CHECK-NEXT: br label [[EXIT]]
165165
; CHECK: exit:
166166
; CHECK-NEXT: [[C_2:%.*]] = icmp eq i16 [[A]], 0
167-
; CHECK-NEXT: ret i1 [[C_2]]
167+
; CHECK-NEXT: ret i1 true
168168
;
169169
entry:
170170
br i1 %i.0, label %exit, label %if.then
@@ -189,7 +189,7 @@ define i1 @assume_dominates_successor_with_may_unwind_call_before_assume_uncond_
189189
; CHECK-NEXT: br label [[EXIT:%.*]]
190190
; CHECK: exit:
191191
; CHECK-NEXT: [[C_2:%.*]] = icmp eq i16 [[A]], 0
192-
; CHECK-NEXT: ret i1 [[C_2]]
192+
; CHECK-NEXT: ret i1 true
193193
;
194194
entry:
195195
call void @may_unwind()

0 commit comments

Comments
 (0)