mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-02 23:27:16 +00:00
[ConstraintElimination] Support BBs with single successor in CanAdd.
If BB has a single successor, conditions can be added safely.
This commit is contained in:
parent
c076fa1c44
commit
f473d4aa80
@ -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) {
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user