From 02fb9769417f972ffedefe32d7c0ae9cabd29917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrzej=20Warzy=C5=84ski?= Date: Sat, 15 Feb 2025 20:06:32 +0000 Subject: [PATCH] [mlir] Improve GreedyPatternRewriteDriver logging (#127314) Currently, when `GreedyPatternRewriteDriver` fails, the log output contains nested failure messages: ```bash } -> failure : pattern failed to match } -> failure : pattern failed to match ``` This may seem redundant, but these messages refer to different aspects of the pattern application logic. This patch clarifies the distinction by separately logging: * Success/failure for a specific pattern (e.g., "_this pattern_ failed to match on the Op currently being processed"). * Success/failure for an operation as a whole (e.g., "_all patterns_ failed to match the Op currently being processed"). Before (example with success): ```bash Processing operation : (...) { * Pattern (...) -> ()' { Trying to match "..." ** Match Failure : (...) } -> failure : pattern failed to match * Pattern (...) -> ()' { Trying to match "..." } -> success : pattern applied successfully } -> success : pattern matched ``` After (example with success): ```bash Processing operation : (...) { * Pattern (...) -> ()' { Trying to match "..." ** Match Failure : (...) } -> failure : pattern failed to match * Pattern (...) -> ()' { Trying to match "..." } -> success : pattern applied successfully } -> success : at least one pattern matched ``` This improves log clarity, making it easier to distinguish pattern-level failures from operation-level outcomes. --- mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp b/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp index 969c560c99ab..fe84c6130064 100644 --- a/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp +++ b/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp @@ -615,14 +615,14 @@ bool GreedyPatternRewriteDriver::processWorklist() { matcher.matchAndRewrite(op, rewriter, canApply, onFailure, onSuccess); if (succeeded(matchResult)) { - LLVM_DEBUG(logResultWithLine("success", "pattern matched")); + LLVM_DEBUG(logResultWithLine("success", "at least one pattern matched")); #if MLIR_ENABLE_EXPENSIVE_PATTERN_API_CHECKS expensiveChecks.notifyRewriteSuccess(); #endif // MLIR_ENABLE_EXPENSIVE_PATTERN_API_CHECKS changed = true; ++numRewrites; } else { - LLVM_DEBUG(logResultWithLine("failure", "pattern failed to match")); + LLVM_DEBUG(logResultWithLine("failure", "all patterns failed to match")); #if MLIR_ENABLE_EXPENSIVE_PATTERN_API_CHECKS expensiveChecks.notifyRewriteFailure(); #endif // MLIR_ENABLE_EXPENSIVE_PATTERN_API_CHECKS