River Riddle
076a7350e2
Add an instrumentation for conditionally printing the IR before and after pass execution. This instrumentation can be added directly to the PassManager via 'enableIRPrinting'. mlir-opt exposes access to this instrumentation via the following flags:
...
* print-ir-before=(comma-separated-pass-list)
- Print the IR before each of the passes provided within the pass list.
* print-ir-before-all
- Print the IR before every pass in the pipeline.
* print-ir-after=(comma-separated-pass-list)
- Print the IR after each of the passes provided within the pass list.
* print-ir-after-all
- Print the IR after every pass in the pipeline.
* print-ir-module-scope
- Always print the Module IR, even for non module passes.
PiperOrigin-RevId: 238523649
2019-03-29 17:19:57 -07:00
River Riddle
091ff3dc3f
Add support for registering pass pipelines to the PassRegistry. This is done by providing a static registration facility PassPipelineRegistration that works similarly to PassRegistration except for it also takes a function that will add necessary passes to a provided PassManager.
...
void pipelineBuilder(PassManager &pm) {
pm.addPass(new MyPass());
pm.addPass(new MyOtherPass());
}
static PassPipelineRegistration Unused("unused", "Unused pass", pipelineBuilder);
This is also useful for registering specializations of existing passes:
Pass *createFooPass10() { return new FooPass(10); }
static PassPipelineRegistration Unused("unused", "Unused pass", createFooPass10);
PiperOrigin-RevId: 235996282
2019-03-29 16:48:29 -07:00
River Riddle
3e656599f1
Define a PassID class to use when defining a pass. This allows for the type used for the ID field to be self documenting. It also allows for the compiler to know the set alignment of the ID object, which is useful for storing pointer identifiers within llvm data structures.
...
PiperOrigin-RevId: 235107957
2019-03-29 16:37:12 -07:00
River Riddle
48ccae2476
NFC: Refactor the files related to passes.
...
* PassRegistry is split into its own source file.
* Pass related files are moved to a new library 'Pass'.
PiperOrigin-RevId: 234705771
2019-03-29 16:32:56 -07:00