Enable the MLIR debug actions CL options in the compiler driver. (#18928)
Signed-off-by: Stella Laurenzo <stellaraccident@gmail.com>
diff --git a/compiler/src/iree/compiler/API/Internal/BUILD.bazel b/compiler/src/iree/compiler/API/Internal/BUILD.bazel
index c8ac455..2413bed 100644
--- a/compiler/src/iree/compiler/API/Internal/BUILD.bazel
+++ b/compiler/src/iree/compiler/API/Internal/BUILD.bazel
@@ -38,6 +38,7 @@
"@llvm-project//mlir:BuiltinToLLVMIRTranslation",
"@llvm-project//mlir:BytecodeWriter",
"@llvm-project//mlir:CAPIIR",
+ "@llvm-project//mlir:Debug",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Parser",
"@llvm-project//mlir:Support",
diff --git a/compiler/src/iree/compiler/API/Internal/CMakeLists.txt b/compiler/src/iree/compiler/API/Internal/CMakeLists.txt
index 61631e1..191ea93 100644
--- a/compiler/src/iree/compiler/API/Internal/CMakeLists.txt
+++ b/compiler/src/iree/compiler/API/Internal/CMakeLists.txt
@@ -23,6 +23,7 @@
MLIRBuiltinToLLVMIRTranslation
MLIRBytecodeWriter
MLIRCAPIIR
+ MLIRDebug
MLIRIR
MLIRParser
MLIRSupport
diff --git a/compiler/src/iree/compiler/API/Internal/CompilerDriver.cpp b/compiler/src/iree/compiler/API/Internal/CompilerDriver.cpp
index 488555a..7f83a5e 100644
--- a/compiler/src/iree/compiler/API/Internal/CompilerDriver.cpp
+++ b/compiler/src/iree/compiler/API/Internal/CompilerDriver.cpp
@@ -67,6 +67,7 @@
#include "mlir/Bytecode/BytecodeWriter.h"
#include "mlir/CAPI/IR.h"
#include "mlir/CAPI/Wrap.h"
+#include "mlir/Debug/CLOptionsSetup.h"
#include "mlir/IR/AsmState.h"
#include "mlir/IR/Diagnostics.h"
#include "mlir/IR/Dialect.h"
@@ -274,6 +275,7 @@
// Register pass manager command-line options like -mlir-print-ir-*.
mlir::registerPassManagerCLOptions();
mlir::registerDefaultTimingManagerCLOptions();
+ mlir::tracing::DebugConfig::registerCLOptions();
// Bind session options to the command line environment.
clPluginManagerOptions = &PluginManagerOptions::FromFlags::get();
@@ -366,6 +368,11 @@
// All user access to the context is done via this reference.
MLIRContext &context;
OptionsBinder binder;
+
+ // Debug configuration.
+ mlir::tracing::DebugConfig debugConfig;
+ std::optional<mlir::tracing::InstallDebugHandler> debugHandlerInstall;
+
// PluginManagerOptions must initialize first because the session depends on
// it.
PluginManagerOptions pluginManagerOptions;
@@ -402,6 +409,7 @@
// Bootstrap session options from the cl environment, if enabled.
if (globalInit.usesCommandLine) {
+ debugConfig = mlir::tracing::DebugConfig::createFromCLOptions();
pluginManagerOptions = *globalInit.clPluginManagerOptions;
bindingOptions = *globalInit.clBindingOptions;
inputOptions = *globalInit.clInputOptions;
@@ -417,6 +425,9 @@
#endif
}
+ // Enable debug integration.
+ debugHandlerInstall.emplace(context, debugConfig);
+
// Register each options struct with the binder so we can manipulate
// mnemonically via the API.
bindingOptions.bindOptions(binder);