[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
This commit is contained in:
Stanislav Funiak 2022-01-04 08:12:51 +05:30 committed by Uday Bondhugula
parent de6c82d6fd
commit 7de8488c3d
1 changed files with 11 additions and 1 deletions

View File

@ -935,7 +935,7 @@ SSANameState::SSANameState(
void SSANameState::printValueID(Value value, bool printResultNo,
raw_ostream &stream) const {
if (!value) {
stream << "<<NULL>>";
stream << "<<NULL VALUE>>";
return;
}
@ -2826,6 +2826,11 @@ void IntegerSet::print(raw_ostream &os) const {
}
void Value::print(raw_ostream &os) {
if (!impl) {
os << "<<NULL VALUE>>";
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 << "<<NULL VALUE>>";
return;
}
if (auto *op = getDefiningOp())
return op->print(os, state);