[swift-dev] External pass pipeline YAML format

Vasileios Kalintiris vkal at uber.com
Thu Jun 29 05:41:20 CDT 2017


> I suspect that we don't use the pass pipeline python scripts in our
buildbots anymore and the relevant bits, ie. the code in
SILPassPipelinePlan::getPassPipelineFromFile and/or the python scripts,
have not been kept up-to-date.

It seems that the following format works for the time being:

[
  [ "Pipeline1", [ "PassName1" ],
    [ "Pipeline2", [ "PassName2" ],
      [ "Pipeline3", [ "PassName3" ],
        [ ...
        ]
      ]
    ]
  ]
]

However, it works only when LLVM's assertions are disabled. I'll try to
come-up with a patch that will accept a saner format with multiple passes
per pipeline entry. Against which branch should I perform a pull request?

- Vasileios



On Wed, Jun 28, 2017 at 7:15 PM, Vasileios Kalintiris <vkal at uber.com> wrote:

> > Have you seen `utils/pass-pipeline/scripts/pipelines_build_script.py`,
> it looks like it might give some hints?
>
> I've tried generating a pass pipeline with utils/pass-pipeline/scripts/pipelines_generator.py
> and use it with the -external-pass-pipeline-filename. However, AFAICT the
> generated pipeline is not in the correct format that the compiler expects:
>
> [
>     [
>         "HighLevel",
>         "run_n_times",
>         2,
>         "SimplifyCFG",
>         ...
>         "GlobalARCOpts"
>     ],
>     [
>         "EarlyLoopOpt",
>         "run_n_times",
>         1,
>         "LowerAggregateInstrs",
>         ...
>         "SwiftArrayOpts"
>     ],
>     ...
> ]
>
> Each generated pass pipeline contains the "run_n_times"|"run_to_fixed_point"
> field, followed by the number of iterations, which is not what the compiler
> expects.
>
> I had no luck even when I tried to re-format the file containing the
> pipelines to something that I believe the compiler would expect based on
> the source code of SILPassPipelinePlan::getPassPipelineFromFile():
>
> [
>     [
>         "HihLevel",
>         "SimplifyCFG",
>         ...
>         "GlobalARCOpts"
>     ],
>     ...
> ]
>
> or even:
>
> [
>     [
>        "HighLevel",
>        [ "SimplifyCFG" ],
>        ...
>        [ "GlobalARCOpts" ]
>     ],
>     ...
> ]
>
> I suspect that we don't use the pass pipeline python scripts in our
> buildbots anymore and the relevant bits, ie. the code in
> SILPassPipelinePlan::getPassPipelineFromFile and/or the python scripts,
> have not been kept up-to-date.
>
>
> On Wed, Jun 28, 2017 at 6:18 PM, Daniel Dunbar <daniel_dunbar at apple.com>
> wrote:
>
>> Have you seen `utils/pass-pipeline/scripts/pipelines_build_script.py`,
>> it looks like it might give some hints?
>> --
>> $ sgit grep external-pass-pipeline-filename
>> include/swift/Option/FrontendOptions.td:def
>> external_pass_pipeline_filename : Separate<["-"],
>> "external-pass-pipeline-filename">,
>> utils/pass-pipeline/scripts/pipelines_build_script.py:
>> '-external-pass-pipeline-filename\;-Xfrontend\;%s' % data_file]
>> --
>>
>>  - Daniel
>>
>> > On Jun 28, 2017, at 5:27 AM, Vasileios Kalintiris via swift-dev <
>> swift-dev at swift.org> wrote:
>> >
>> > Hi all,
>> >
>> > Please, let me know if I should post this to another list.
>> >
>> > I'm trying to figure out what is the expected YAML format of the
>> -external-pass-pipeline-filename option.
>> >
>> > Dumping the pass pipeline under -O and feeding it back to the compiler
>> with this option doesn't work (from swift-3.1-branch).
>> >
>> > I thought to ask here because I'm not entirely sure that the relevant
>> YAML parsing code from SILPassPipelinePlan::getPassPipelineFromFile()
>> accepts valid YAML input.
>> >
>> > Thanks,
>> > Vasileios
>> > _______________________________________________
>> > swift-dev mailing list
>> > swift-dev at swift.org
>> > https://lists.swift.org/mailman/listinfo/swift-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20170629/61245990/attachment.html>


More information about the swift-dev mailing list