From 7de8488c3d7e9f4a5e2d05007e5ea17482a02410 Mon Sep 17 00:00:00 2001 From: Stanislav Funiak Date: Tue, 4 Jan 2022 08:12:51 +0530 Subject: [PATCH] [MLIR] Printing a null Value. This diff adds support to printing a Value when it is null. We encounter this situation when debugging the PDL bytcode execution (where a null Value is perfectly valid). Currently, the AsmPrinter crashes (with an assert in a cast) when it encounters such Value. We follow the same format used in other printed entities (e.g., null attribute). Reviewed By: mehdi_amini, bondhugula Differential Revision: https://reviews.llvm.org/D116084 --- mlir/lib/IR/AsmPrinter.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mlir/lib/IR/AsmPrinter.cpp b/mlir/lib/IR/AsmPrinter.cpp index 376e5c16fe6c..7be787f51f8f 100644 --- a/mlir/lib/IR/AsmPrinter.cpp +++ b/mlir/lib/IR/AsmPrinter.cpp @@ -935,7 +935,7 @@ SSANameState::SSANameState( void SSANameState::printValueID(Value value, bool printResultNo, raw_ostream &stream) const { if (!value) { - stream << "<>"; + stream << "<>"; return; } @@ -2826,6 +2826,11 @@ void IntegerSet::print(raw_ostream &os) const { } void Value::print(raw_ostream &os) { + if (!impl) { + os << "<>"; + return; + } + if (auto *op = getDefiningOp()) return op->print(os); // TODO: Improve BlockArgument print'ing. @@ -2834,6 +2839,11 @@ void Value::print(raw_ostream &os) { << "' at index: " << arg.getArgNumber(); } void Value::print(raw_ostream &os, AsmState &state) { + if (!impl) { + os << "<>"; + return; + } + if (auto *op = getDefiningOp()) return op->print(os, state);