[Mlir-commits] [mlir] [mlir] Add `Operation::dumpPrettyPrinted` (PR #120117)

weiwei chen llvmlistbot at llvm.org
Tue Dec 17 07:02:40 PST 2024


https://github.com/weiweichen updated https://github.com/llvm/llvm-project/pull/120117

>From 4cbb253c5d5dc0382d881ef211b7f8676c0393b4 Mon Sep 17 00:00:00 2001
From: Weiwei Chen <weiwei.chen at modular.com>
Date: Mon, 16 Dec 2024 12:24:01 -0500
Subject: [PATCH 1/3] [mlir] Add Operation::dumpPrettyPrinted.

Pretty print Operation that may not be verified for ease
of readabilty while debugging.
---
 mlir/include/mlir/IR/Operation.h | 3 +++
 mlir/lib/IR/AsmPrinter.cpp       | 5 +++++
 2 files changed, 8 insertions(+)

diff --git a/mlir/include/mlir/IR/Operation.h b/mlir/include/mlir/IR/Operation.h
index f0dd7c51780566..4f6bea3dcf113c 100644
--- a/mlir/include/mlir/IR/Operation.h
+++ b/mlir/include/mlir/IR/Operation.h
@@ -322,6 +322,9 @@ class alignas(8) Operation final
   void print(raw_ostream &os, AsmState &state);
   void dump();
 
+  /// Pretty print for ease of debugging readabilty with unverified IR.
+  void dumpPrettyPrinted();
+
   //===--------------------------------------------------------------------===//
   // Operands
   //===--------------------------------------------------------------------===//
diff --git a/mlir/lib/IR/AsmPrinter.cpp b/mlir/lib/IR/AsmPrinter.cpp
index 61b90bc9b0a7bb..7beb2ab1fb0444 100644
--- a/mlir/lib/IR/AsmPrinter.cpp
+++ b/mlir/lib/IR/AsmPrinter.cpp
@@ -3985,6 +3985,11 @@ void Operation::dump() {
   llvm::errs() << "\n";
 }
 
+void Operation::dumpPrettyPrinted() {
+  print(llvm::errs(), OpPrintingFlags().useLocalScope().assumeVerified());
+  llvm::errs() << "\n";
+}
+
 void Block::print(raw_ostream &os) {
   Operation *parentOp = getParentOp();
   if (!parentOp) {

>From fe13015f4e311d742bf84624d88fe0a5f7cd3763 Mon Sep 17 00:00:00 2001
From: Weiwei Chen <weiwei.chen at modular.com>
Date: Mon, 16 Dec 2024 15:52:44 -0500
Subject: [PATCH 2/3] Update API according to comment.

---
 mlir/include/mlir/IR/Operation.h |  5 +----
 mlir/lib/IR/AsmPrinter.cpp       | 12 +++++-------
 2 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/mlir/include/mlir/IR/Operation.h b/mlir/include/mlir/IR/Operation.h
index 4f6bea3dcf113c..c1ba5270308e61 100644
--- a/mlir/include/mlir/IR/Operation.h
+++ b/mlir/include/mlir/IR/Operation.h
@@ -320,10 +320,7 @@ class alignas(8) Operation final
 
   void print(raw_ostream &os, const OpPrintingFlags &flags = std::nullopt);
   void print(raw_ostream &os, AsmState &state);
-  void dump();
-
-  /// Pretty print for ease of debugging readabilty with unverified IR.
-  void dumpPrettyPrinted();
+  void dump(bool assumeVerified = false);
 
   //===--------------------------------------------------------------------===//
   // Operands
diff --git a/mlir/lib/IR/AsmPrinter.cpp b/mlir/lib/IR/AsmPrinter.cpp
index 7beb2ab1fb0444..cdf136780ecc6a 100644
--- a/mlir/lib/IR/AsmPrinter.cpp
+++ b/mlir/lib/IR/AsmPrinter.cpp
@@ -3980,13 +3980,11 @@ void Operation::print(raw_ostream &os, AsmState &state) {
   }
 }
 
-void Operation::dump() {
-  print(llvm::errs(), OpPrintingFlags().useLocalScope());
-  llvm::errs() << "\n";
-}
-
-void Operation::dumpPrettyPrinted() {
-  print(llvm::errs(), OpPrintingFlags().useLocalScope().assumeVerified());
+void Operation::dump(bool assumeVerified) {
+  OpPrintingFlags flags;
+  if (assumeVerified)
+    flags.assumeVerified();
+  print(llvm::errs(), flags.useLocalScope());
   llvm::errs() << "\n";
 }
 

>From 4504b3cb1a0fa004a6054365867d646295ff0bb9 Mon Sep 17 00:00:00 2001
From: Weiwei Chen <weiwei.chen at modular.com>
Date: Tue, 17 Dec 2024 10:01:30 -0500
Subject: [PATCH 3/3] Use dumpPretty instead because lldb doesn't understand
 default arguments.

---
 mlir/include/mlir/IR/Operation.h |  7 ++++++-
 mlir/lib/IR/AsmPrinter.cpp       | 13 ++++++++-----
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/mlir/include/mlir/IR/Operation.h b/mlir/include/mlir/IR/Operation.h
index c1ba5270308e61..95d944170732e7 100644
--- a/mlir/include/mlir/IR/Operation.h
+++ b/mlir/include/mlir/IR/Operation.h
@@ -320,7 +320,12 @@ class alignas(8) Operation final
 
   void print(raw_ostream &os, const OpPrintingFlags &flags = std::nullopt);
   void print(raw_ostream &os, AsmState &state);
-  void dump(bool assumeVerified = false);
+  void dump();
+
+  // Dump pretty printed IR. This method is helpful for better readability if
+  // the Operation is not verified because it won't disable custom printers to
+  // fall back to the generic one.
+  LLVM_DUMP_METHOD void dumpPretty();
 
   //===--------------------------------------------------------------------===//
   // Operands
diff --git a/mlir/lib/IR/AsmPrinter.cpp b/mlir/lib/IR/AsmPrinter.cpp
index cdf136780ecc6a..f32eca12f087f6 100644
--- a/mlir/lib/IR/AsmPrinter.cpp
+++ b/mlir/lib/IR/AsmPrinter.cpp
@@ -3980,14 +3980,17 @@ void Operation::print(raw_ostream &os, AsmState &state) {
   }
 }
 
-void Operation::dump(bool assumeVerified) {
-  OpPrintingFlags flags;
-  if (assumeVerified)
-    flags.assumeVerified();
-  print(llvm::errs(), flags.useLocalScope());
+void Operation::dump() {
+  print(llvm::errs(), OpPrintingFlags().useLocalScope());
   llvm::errs() << "\n";
 }
 
+void Operation::dumpPretty() {
+  print(llvm::errs(), OpPrintingFlags().useLocalScope().assumeVerified());
+  llvm::errs() << "\n";
+}
+
+
 void Block::print(raw_ostream &os) {
   Operation *parentOp = getParentOp();
   if (!parentOp) {



More information about the Mlir-commits mailing list