9 #ifndef MLIR_PASS_PASSMANAGER_H 10 #define MLIR_PASS_PASSMANAGER_H 13 #include "llvm/ADT/Optional.h" 14 #include "llvm/ADT/SmallVector.h" 15 #include "llvm/ADT/iterator.h" 24 class AnalysisManager;
30 class PassInstrumentation;
31 class PassInstrumentor;
34 struct OpPassManagerImpl;
53 llvm::pointee_iterator<std::vector<std::unique_ptr<Pass>>::iterator>;
66 return nest(OpT::getOperationName());
71 void addPass(std::unique_ptr<Pass> pass);
75 template <
typename OpT>
void addNestedPass(std::unique_ptr<Pass> pass) {
76 nest<OpT>().addPass(std::move(pass));
95 void printAsTextualPipeline(raw_ostream &os);
104 std::unique_ptr<detail::OpPassManagerImpl> impl;
139 void disableMultithreading(
bool disable =
true);
144 void enableCrashReproducerGeneration(StringRef outputFile);
151 void addInstrumentation(std::unique_ptr<PassInstrumentation> pi);
171 bool printAfterOnlyOnChange =
false);
178 virtual void printBeforeIfEnabled(
Pass *pass,
Operation *operation,
185 virtual void printAfterIfEnabled(
Pass *pass,
Operation *operation,
197 bool printModuleScope;
201 bool printAfterOnlyOnChange;
206 void enableIRPrinting(std::unique_ptr<IRPrinterConfig> config);
219 void enableIRPrinting(
220 std::function<
bool(
Pass *,
Operation *)> shouldPrintBeforePass,
221 std::function<
bool(
Pass *,
Operation *)> shouldPrintAfterPass,
222 bool printModuleScope,
bool printAfterOnlyOnChange, raw_ostream &out);
232 void enableTiming(
PassDisplayMode displayMode = PassDisplayMode::Pipeline);
237 enableStatistics(
PassDisplayMode displayMode = PassDisplayMode::Pipeline);
241 void dumpStatistics();
250 std::unique_ptr<PassInstrumentor> instrumentor;
266 #endif // MLIR_PASS_PASSMANAGER_H OpPassManager & nest()
Definition: PassManager.h:65
Definition: InferTypeOpInterface.cpp:20
Definition: PassRegistry.cpp:413
Definition: Operation.h:27
The main pass manager and pipeline builder.
Definition: PassManager.h:128
Definition: AnalysisManager.h:217
Definition: QuantTypes.h:36
iterator_range< pass_iterator > getPasses()
Definition: PassManager.h:56
PassDisplayMode
Definition: PassManager.h:116
void addNestedPass(std::unique_ptr< Pass > pass)
Definition: PassManager.h:75
Definition: LogicalResult.h:18
llvm::pointee_iterator< std::vector< std::unique_ptr< Pass > >::iterator > pass_iterator
Iterator over the passes in this pass manager.
Definition: PassManager.h:53
bool shouldPrintAfterOnlyOnChange() const
Definition: PassManager.h:193
void registerPassManagerCLOptions()
Definition: PassManagerOptions.cpp:147
Definition: MLIRContext.h:34
A configuration struct provided to the IR printer instrumentation.
Definition: PassManager.h:157
void applyPassManagerCLOptions(PassManager &pm)
Definition: PassManagerOptions.cpp:153
Definition: OperationSupport.h:203
bool shouldPrintAtModuleScope() const
Returns true if the IR should always be printed at the top-level scope.
Definition: PassManager.h:189
Definition: PassManager.h:44