diff --git a/mlir/include/mlir/IR/Builders.h b/mlir/include/mlir/IR/Builders.h --- a/mlir/include/mlir/IR/Builders.h +++ b/mlir/include/mlir/IR/Builders.h @@ -10,6 +10,7 @@ #define MLIR_IR_BUILDERS_H #include "mlir/IR/OpDefinition.h" +#include "llvm/Support/Compiler.h" namespace mlir { @@ -392,10 +393,14 @@ template OpTy create(Location location, Args &&...args) { OperationState state(location, OpTy::getOperationName()); - if (!state.name.getAbstractOperation()) - llvm::report_fatal_error("Building op `" + - state.name.getStringRef().str() + - "` but it isn't registered in this MLIRContext"); + if (LLVM_UNLIKELY(!state.name.getAbstractOperation())) + llvm::report_fatal_error( + "Building op `" + state.name.getStringRef().str() + + "` but it isn't registered in this MLIRContext: the dialect may not " + "be loaded or this operation isn't registered by the dialect. See " + "also " + "https://mlir.llvm.org/getting_started/Faq/" + "#registered-loaded-dependent-whats-up-with-dialects-management"); OpTy::build(*this, state, std::forward(args)...); auto *op = createOperation(state); auto result = dyn_cast(op); @@ -413,9 +418,13 @@ // insert it yet. OperationState state(location, OpTy::getOperationName()); if (!state.name.getAbstractOperation()) - llvm::report_fatal_error("Building op `" + - state.name.getStringRef().str() + - "` but it isn't registered in this MLIRContext"); + llvm::report_fatal_error( + "Building op `" + state.name.getStringRef().str() + + "` but it isn't registered in this MLIRContext: the dialect may not " + "be loaded or this operation isn't registered by the dialect. See " + "also " + "https://mlir.llvm.org/getting_started/Faq/" + "#registered-loaded-dependent-whats-up-with-dialects-management"); OpTy::build(*this, state, std::forward(args)...); Operation *op = Operation::create(state);