[mlir-translate] Teach these tools about --allow-unregistered-dialect

Some translations do work with unregistered dialects, this allows one
to write testcases against them.  It works the same way as it does for
mlir-opt.

Differential Revision: https://reviews.llvm.org/D118872
This commit is contained in:
Chris Lattner 2022-02-02 21:40:41 -08:00
parent 44601f4956
commit 968280bc40
2 changed files with 19 additions and 0 deletions

View file

@ -140,6 +140,11 @@ LogicalResult mlir::mlirTranslateMain(int argc, char **argv,
"o", llvm::cl::desc("Output filename"), llvm::cl::value_desc("filename"),
llvm::cl::init("-"));
static llvm::cl::opt<bool> allowUnregisteredDialects(
"allow-unregistered-dialect",
llvm::cl::desc("Allow operation with no registered dialects"),
llvm::cl::init(false));
static llvm::cl::opt<bool> splitInputFile(
"split-input-file",
llvm::cl::desc("Split the input file into pieces and "
@ -179,6 +184,7 @@ LogicalResult mlir::mlirTranslateMain(int argc, char **argv,
auto processBuffer = [&](std::unique_ptr<llvm::MemoryBuffer> ownedBuffer,
raw_ostream &os) {
MLIRContext context;
context.allowUnregisteredDialects(allowUnregisteredDialects);
context.printOpOnDiagnostic(!verifyDiagnostics);
llvm::SourceMgr sourceMgr;
sourceMgr.AddNewSourceBuffer(std::move(ownedBuffer), SMLoc());

View file

@ -0,0 +1,13 @@
// RUN: not mlir-translate %s --allow-unregistered-dialect --mlir-to-llvmir -verify-diagnostics 2>&1 | FileCheck --check-prefix=UNREGOK %s
// RUN: not mlir-translate %s --mlir-to-llvmir -verify-diagnostics 2>&1 | FileCheck --check-prefix=REGONLY %s
// If the parser allows unregistered operations, then the translation fails,
// otherwise the parse fails.
// UNREGOK: cannot be converted to LLVM IR
// REGONLY: operation being parsed with an unregistered dialect
func @trivial() {
"simple.terminator"() : () -> ()
}