[llvm] f473d4a - [ConstraintElimination] Support BBs with single successor in CanAdd.
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 16 07:14:14 PDT 2022
Author: Florian Hahn
Date: 2022-03-16T14:13:52Z
New Revision: f473d4aa80ce72b372ed2ad760db8e8925e44ecb
URL: https://github.com/llvm/llvm-project/commit/f473d4aa80ce72b372ed2ad760db8e8925e44ecb
DIFF: https://github.com/llvm/llvm-project/commit/f473d4aa80ce72b372ed2ad760db8e8925e44ecb.diff
LOG: [ConstraintElimination] Support BBs with single successor in CanAdd.
If BB has a single successor, conditions can be added safely.
Added:
Modified:
llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
llvm/test/Transforms/ConstraintElimination/assumes.ll
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
index f7556bbe0ad93..733b83465a922 100644
--- a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+++ b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
@@ -419,6 +419,10 @@ static bool eliminateConstraints(Function &F, DominatorTree &DT) {
// Succ (e.g. the case when adding a condition from a pre-header to a loop
// header).
auto CanAdd = [&BB, &DT](BasicBlock *Succ) {
+ if (BB.getSingleSuccessor()) {
+ assert(BB.getSingleSuccessor() == Succ);
+ return true;
+ }
return any_of(successors(&BB),
[Succ](const BasicBlock *S) { return S != Succ; }) &&
all_of(predecessors(Succ), [&BB, &DT, Succ](BasicBlock *Pred) {
diff --git a/llvm/test/Transforms/ConstraintElimination/assumes.ll b/llvm/test/Transforms/ConstraintElimination/assumes.ll
index c27835a7a36db..b7e1d2491c404 100644
--- a/llvm/test/Transforms/ConstraintElimination/assumes.ll
+++ b/llvm/test/Transforms/ConstraintElimination/assumes.ll
@@ -164,7 +164,7 @@ define i1 @assume_does_not_dominates_successor_with_may_unwind_call_before_assum
; CHECK-NEXT: br label [[EXIT]]
; CHECK: exit:
; CHECK-NEXT: [[C_2:%.*]] = icmp eq i16 [[A]], 0
-; CHECK-NEXT: ret i1 [[C_2]]
+; CHECK-NEXT: ret i1 true
;
entry:
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_
; CHECK-NEXT: br label [[EXIT:%.*]]
; CHECK: exit:
; CHECK-NEXT: [[C_2:%.*]] = icmp eq i16 [[A]], 0
-; CHECK-NEXT: ret i1 [[C_2]]
+; CHECK-NEXT: ret i1 true
;
entry:
call void @may_unwind()
More information about the llvm-commits
mailing list