From 968280bc401292f1070f41eb1e03e94c331923f9 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 2 Feb 2022 21:40:41 -0800 Subject: [PATCH] [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 --- mlir/lib/Translation/Translation.cpp | 6 ++++++ mlir/test/mlir-translate/unregistered-dialects.mlir | 13 +++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 mlir/test/mlir-translate/unregistered-dialects.mlir diff --git a/mlir/lib/Translation/Translation.cpp b/mlir/lib/Translation/Translation.cpp index 5a8812ab49b2..6da62f68f55a 100644 --- a/mlir/lib/Translation/Translation.cpp +++ b/mlir/lib/Translation/Translation.cpp @@ -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 allowUnregisteredDialects( + "allow-unregistered-dialect", + llvm::cl::desc("Allow operation with no registered dialects"), + llvm::cl::init(false)); + static llvm::cl::opt 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 ownedBuffer, raw_ostream &os) { MLIRContext context; + context.allowUnregisteredDialects(allowUnregisteredDialects); context.printOpOnDiagnostic(!verifyDiagnostics); llvm::SourceMgr sourceMgr; sourceMgr.AddNewSourceBuffer(std::move(ownedBuffer), SMLoc()); diff --git a/mlir/test/mlir-translate/unregistered-dialects.mlir b/mlir/test/mlir-translate/unregistered-dialects.mlir new file mode 100644 index 000000000000..0a7330b11c02 --- /dev/null +++ b/mlir/test/mlir-translate/unregistered-dialects.mlir @@ -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"() : () -> () +}