Skip to content

Commit 7fec41b

Browse files
andrey-golubevnikita-kud
authored andcommitted
[mlir] Expose output strategies of TimingManager (llvm#166548)
After the original API change to DefaultTimingManager::setOutput() (see 362aa43), users are forced to provide their own implementation of OutputStrategy. However, default MLIR implementations are usually sufficient. Expose Text and Json strategies via factory-like method to avoid the problem in downstream projects.
1 parent 68190c6 commit 7fec41b

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

mlir/include/mlir/Support/Timing.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,11 @@ void registerDefaultTimingManagerCLOptions();
473473
/// 'registerDefaultTimingManagerOptions' to a `DefaultTimingManager`.
474474
void applyDefaultTimingManagerCLOptions(DefaultTimingManager &tm);
475475

476+
/// Create an output strategy for the specified format, to be passed to
477+
/// DefaultTimingManager::setOutput().
478+
std::unique_ptr<OutputStrategy>
479+
createOutputStrategy(DefaultTimingManager::OutputFormat fmt, raw_ostream &os);
480+
476481
} // namespace mlir
477482

478483
#endif // MLIR_SUPPORT_TIMING_H

mlir/lib/Support/Timing.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -621,11 +621,17 @@ void mlir::applyDefaultTimingManagerCLOptions(DefaultTimingManager &tm) {
621621
return;
622622
tm.setEnabled(options->timing);
623623
tm.setDisplayMode(options->displayMode);
624+
tm.setOutput(createOutputStrategy(options->outputFormat, llvm::errs()));
625+
}
624626

625-
std::unique_ptr<OutputStrategy> printer;
626-
if (options->outputFormat == OutputFormat::Text)
627-
printer = std::make_unique<OutputTextStrategy>(llvm::errs());
628-
else if (options->outputFormat == OutputFormat::Json)
629-
printer = std::make_unique<OutputJsonStrategy>(llvm::errs());
630-
tm.setOutput(std::move(printer));
627+
std::unique_ptr<OutputStrategy>
628+
mlir::createOutputStrategy(DefaultTimingManager::OutputFormat fmt,
629+
raw_ostream &os) {
630+
switch (fmt) {
631+
case OutputFormat::Text:
632+
return std::make_unique<OutputTextStrategy>(os);
633+
case OutputFormat::Json:
634+
return std::make_unique<OutputJsonStrategy>(os);
635+
}
636+
llvm_unreachable("Invalid output format");
631637
}

0 commit comments

Comments
 (0)