[llvm] 6214496 - [ConstraintElim] Add debug output for failed preconditions
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 4 05:29:19 PST 2024
Author: Nikita Popov
Date: 2024-01-04T14:29:07+01:00
New Revision: 62144969bc03490908d46675f3d6645cbe248d25
URL: https://github.com/llvm/llvm-project/commit/62144969bc03490908d46675f3d6645cbe248d25
DIFF: https://github.com/llvm/llvm-project/commit/62144969bc03490908d46675f3d6645cbe248d25.diff
LOG: [ConstraintElim] Add debug output for failed preconditions
Print debug output if a constraint does not get added due to a
failed precondition.
Added:
Modified:
llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
index 5e57aa78175164..9a814ba9fd7380 100644
--- a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+++ b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
@@ -1642,15 +1642,14 @@ static bool eliminateConstraints(Function &F, DominatorTree &DT, LoopInfo &LI,
DFSInStack);
}
- LLVM_DEBUG(dbgs() << "Processing ");
-
// For a block, check if any CmpInsts become known based on the current set
// of constraints.
if (CB.isCheck()) {
Instruction *Inst = CB.getInstructionToSimplify();
if (!Inst)
continue;
- LLVM_DEBUG(dbgs() << "condition to simplify: " << *Inst << "\n");
+ LLVM_DEBUG(dbgs() << "Processing condition to simplify: " << *Inst
+ << "\n");
if (auto *II = dyn_cast<WithOverflowInst>(Inst)) {
Changed |= tryToSimplifyOverflowMath(II, Info, ToRemove);
} else if (auto *Cmp = dyn_cast<ICmpInst>(Inst)) {
@@ -1669,7 +1668,7 @@ static bool eliminateConstraints(Function &F, DominatorTree &DT, LoopInfo &LI,
}
auto AddFact = [&](CmpInst::Predicate Pred, Value *A, Value *B) {
- LLVM_DEBUG(dbgs() << "fact to add to the system: ";
+ LLVM_DEBUG(dbgs() << "Processing fact to add to the system: ";
dumpUnpackedICmp(dbgs(), Pred, A, B); dbgs() << "\n");
if (Info.getCS(CmpInst::isSigned(Pred)).size() > MaxRows) {
LLVM_DEBUG(
@@ -1718,8 +1717,17 @@ static bool eliminateConstraints(Function &F, DominatorTree &DT, LoopInfo &LI,
A = CB.Cond.Op0;
B = CB.Cond.Op1;
if (CB.DoesHold.Pred != CmpInst::BAD_ICMP_PREDICATE &&
- !Info.doesHold(CB.DoesHold.Pred, CB.DoesHold.Op0, CB.DoesHold.Op1))
+ !Info.doesHold(CB.DoesHold.Pred, CB.DoesHold.Op0, CB.DoesHold.Op1)) {
+ LLVM_DEBUG({
+ dbgs() << "Not adding fact ";
+ dumpUnpackedICmp(dbgs(), Pred, A, B);
+ dbgs() << " because precondition ";
+ dumpUnpackedICmp(dbgs(), CB.DoesHold.Pred, CB.DoesHold.Op0,
+ CB.DoesHold.Op1);
+ dbgs() << " does not hold.\n";
+ });
continue;
+ }
} else {
bool Matched = match(CB.Inst, m_Intrinsic<Intrinsic::assume>(
m_ICmp(Pred, m_Value(A), m_Value(B))));
More information about the llvm-commits
mailing list