Skip to content

Commit 20294bf

Browse files
[mlir][Transform] NFC - Add more advanced debug spew to help hunt down potential misuses
Differential Revision: https://reviews.llvm.org/D146509
1 parent 282cae0 commit 20294bf

File tree

1 file changed

+44
-5
lines changed

1 file changed

+44
-5
lines changed

mlir/lib/Dialect/Transform/IR/TransformInterfaces.cpp

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
#include "llvm/Support/ErrorHandling.h"
1818

1919
#define DEBUG_TYPE "transform-dialect"
20+
#define DEBUG_TYPE_FULL "transform-dialect-full"
2021
#define DEBUG_PRINT_AFTER_ALL "transform-dialect-print-top-level-after-all"
2122
#define DBGS() (llvm::dbgs() << "[" DEBUG_TYPE "] ")
23+
#define LDBG(X) LLVM_DEBUG(DBGS() << (X))
2224

2325
using namespace mlir;
2426

@@ -396,7 +398,17 @@ void transform::TransformState::recordOpHandleInvalidationOne(
396398
if (invalidatedHandles.count(otherHandle))
397399
return;
398400

401+
LDBG("--recordOpHandleInvalidationOne\n");
402+
LLVM_DEBUG(llvm::interleaveComma(potentialAncestors,
403+
DBGS() << "--ancestors: ",
404+
[](Operation *op) { llvm::dbgs() << *op; });
405+
llvm::dbgs() << "\n");
399406
for (Operation *ancestor : potentialAncestors) {
407+
LLVM_DEBUG(DBGS() << "----handle one ancestor: " << *ancestor << "\n");
408+
LLVM_DEBUG(DBGS() << "----of payload with name: "
409+
<< payloadOp->getName().getIdentifier() << "\n");
410+
DEBUG_WITH_TYPE(DEBUG_TYPE_FULL,
411+
{ (DBGS() << "----of payload: " << *payloadOp << "\n"); });
400412
if (!ancestor->isAncestor(payloadOp))
401413
continue;
402414

@@ -562,18 +574,23 @@ void transform::TransformState::recordValueHandleInvalidation(
562574

563575
LogicalResult transform::TransformState::checkAndRecordHandleInvalidation(
564576
TransformOpInterface transform) {
577+
LDBG("--Start checkAndRecordHandleInvalidation\n");
565578
auto memoryEffectsIface =
566579
cast<MemoryEffectOpInterface>(transform.getOperation());
567580
SmallVector<MemoryEffects::EffectInstance> effects;
568581
memoryEffectsIface.getEffectsOnResource(
569582
transform::TransformMappingResource::get(), effects);
570583

571584
for (OpOperand &target : transform->getOpOperands()) {
585+
LLVM_DEBUG(DBGS() << "----iterate on handle: " << target.get() << "\n");
572586
// If the operand uses an invalidated handle, report it.
573587
auto it = invalidatedHandles.find(target.get());
574588
if (!transform.allowsRepeatedHandleOperands() &&
575-
it != invalidatedHandles.end())
589+
it != invalidatedHandles.end()) {
590+
LLVM_DEBUG(
591+
DBGS() << "--End checkAndRecordHandleInvalidation -> FAILURE\n");
576592
return it->getSecond()(transform->getLoc()), failure();
593+
}
577594

578595
// Invalidate handles pointing to the operations nested in the operation
579596
// associated with the handle consumed by this operation.
@@ -582,17 +599,25 @@ LogicalResult transform::TransformState::checkAndRecordHandleInvalidation(
582599
effect.getValue() == target.get();
583600
};
584601
if (llvm::any_of(effects, consumesTarget)) {
602+
LLVM_DEBUG(DBGS() << "----found consume effect -> SKIP\n");
585603
if (target.get().getType().isa<TransformHandleTypeInterface>()) {
604+
LDBG("----recordOpHandleInvalidation\n");
586605
ArrayRef<Operation *> payloadOps = getPayloadOps(target.get());
587606
recordOpHandleInvalidation(target, payloadOps);
588607
} else if (target.get()
589608
.getType()
590609
.isa<TransformValueHandleTypeInterface>()) {
610+
LDBG("----recordValueHandleInvalidation\n");
591611
recordValueHandleInvalidation(target);
612+
} else {
613+
LDBG("----not a TransformHandle -> SKIP AND DROP ON THE FLOOR\n");
592614
}
615+
} else {
616+
LLVM_DEBUG(DBGS() << "----no consume effect -> SKIP\n");
593617
}
594618
}
595619

620+
LDBG("--End checkAndRecordHandleInvalidation -> SUCCESS\n");
596621
return success();
597622
}
598623

@@ -621,7 +646,7 @@ checkRepeatedConsumptionInOperand(ArrayRef<T> payload,
621646

622647
DiagnosedSilenceableFailure
623648
transform::TransformState::applyTransform(TransformOpInterface transform) {
624-
LLVM_DEBUG(DBGS() << "applying: " << transform << "\n");
649+
LLVM_DEBUG(DBGS() << "\n"; DBGS() << "applying: " << transform << "\n");
625650
auto printOnFailureRAII = llvm::make_scope_exit([this] {
626651
(void)this;
627652
DEBUG_WITH_TYPE(DEBUG_PRINT_AFTER_ALL, {
@@ -631,28 +656,42 @@ transform::TransformState::applyTransform(TransformOpInterface transform) {
631656
});
632657
});
633658
if (options.getExpensiveChecksEnabled()) {
659+
LDBG("ExpensiveChecksEnabled\n");
634660
if (failed(checkAndRecordHandleInvalidation(transform)))
635661
return DiagnosedSilenceableFailure::definiteFailure();
636662

637663
for (OpOperand &operand : transform->getOpOperands()) {
638-
if (!isHandleConsumed(operand.get(), transform))
664+
LLVM_DEBUG(DBGS() << "iterate on handle: " << operand.get() << "\n");
665+
if (!isHandleConsumed(operand.get(), transform)) {
666+
LDBG("--handle not consumed -> SKIP\n");
639667
continue;
668+
}
669+
LDBG("--handle is consumed\n");
640670

641671
Type operandType = operand.get().getType();
642672
if (operandType.isa<TransformHandleTypeInterface>()) {
673+
LLVM_DEBUG(
674+
DBGS() << "--checkRepeatedConsumptionInOperand for Operation*\n");
643675
DiagnosedSilenceableFailure check =
644676
checkRepeatedConsumptionInOperand<Operation *>(
645677
getPayloadOps(operand.get()), transform,
646678
operand.getOperandNumber());
647-
if (!check.succeeded())
679+
if (!check.succeeded()) {
680+
LDBG("----FAILED\n");
648681
return check;
682+
}
649683
} else if (operandType.isa<TransformValueHandleTypeInterface>()) {
684+
LDBG("--checkRepeatedConsumptionInOperand For Value\n");
650685
DiagnosedSilenceableFailure check =
651686
checkRepeatedConsumptionInOperand<Value>(
652687
getPayloadValues(operand.get()), transform,
653688
operand.getOperandNumber());
654-
if (!check.succeeded())
689+
if (!check.succeeded()) {
690+
LDBG("----FAILED\n");
655691
return check;
692+
}
693+
} else {
694+
LDBG("--not a TransformHandle -> SKIP AND DROP ON THE FLOOR\n");
656695
}
657696
}
658697
}

0 commit comments

Comments
 (0)