Pass Pipeline
is a python library for generating pipeline json
descriptors for Swift. The goal is to enable a user to generate various
pass pipelines without needing to recompile the compiler. The main
targets for this work are:
- Correctness issues exposed by adding and removing parts of pass pipelines.
- Exploration of various pipelines from a performance perspective.
This is necessary since currently we do not have the infrastructure to always be able to use sil-opt and friends to generate IR from a .sil file. This is a shortcut around such issues.
The general format is as follows:
[
:
\[ : "PASS\_MANAGER\_ID", "run\_n\_times"|"run\_to\_fixed\_point", count, "PASS1", "PASS2", ... ### \],
]
Where "id" is printed out when we process the action, "action" can be one of "run_n_times", "run_to_fixed_point" and "passes" is a list of passes to run. The names to use are the stringified versions of pass kinds.
There are two parts to this library. In src
, we have the library
building blocks. This is where we define the passes and the general
pipeline infrastructure. In scripts
, is where we implement various
pipeline generators using code from src
.