[Mlir-commits] [mlir] 87c032f - [IR] Make Value::getType() work better with invalid IR.
Chris Lattner
llvmlistbot at llvm.org
Mon Dec 28 12:47:20 PST 2020
Author: Chris Lattner
Date: 2020-12-28T12:37:01-08:00
New Revision: 87c032f7b449cee97751d86739e249738029bf63
URL: https://github.com/llvm/llvm-project/commit/87c032f7b449cee97751d86739e249738029bf63
DIFF: https://github.com/llvm/llvm-project/commit/87c032f7b449cee97751d86739e249738029bf63.diff
LOG: [IR] Make Value::getType() work better with invalid IR.
The asmprinter would crash when dumping IR objects that had their
operands dropped. With this change, we now get this output, which
makes op->dump() style debugging more useful.
%5 = "firrtl.eq"(<<NULL>>, <<NULL>>) : (<<NULL TYPE>>, <<NULL TYPE>>) -> !firrtl.uint<1>
Previously the asmprinter would crash getting the types of the null operands.
Differential Revision: https://reviews.llvm.org/D93869
Added:
Modified:
mlir/lib/IR/Value.cpp
Removed:
################################################################################
diff --git a/mlir/lib/IR/Value.cpp b/mlir/lib/IR/Value.cpp
index fd7e5b5d64e5..b29641a084a0 100644
--- a/mlir/lib/IR/Value.cpp
+++ b/mlir/lib/IR/Value.cpp
@@ -32,6 +32,11 @@ Value::Value(Operation *op, unsigned resultNo) {
/// Return the type of this value.
Type Value::getType() const {
+ // Support a null Value so the asmprinter doesn't crash on invalid IR (e.g.
+ // operations that have dropAllReferences() called on them).
+ if (!*this)
+ return Type();
+
if (BlockArgument arg = dyn_cast<BlockArgument>())
return arg.getType();
More information about the Mlir-commits
mailing list