[llvm-dev] New pass manager, documentation?

Arthur Eubanks via llvm-dev llvm-dev at lists.llvm.org
Thu Feb 25 17:41:48 PST 2021


https://reviews.llvm.org/D97515 is adding some documentation around using
the new PM, reviews for clarity/anything missing are appreciated :)

On Wed, Feb 24, 2021 at 12:08 PM Jon Chesterfield <
jonathanchesterfield at gmail.com> wrote:

> Thank you all. That is interesting in several ways - I had missed the
> subtlety that the middle end is changing / has changed to the new pass
> manager before the back end.
>
> In the immediate sense, this solves my problem because I therefore don't
> need to run the pass through the new manager after all. I can leave the
> plumbing in place so that it can be run through opt with the new pass
> manager, but don't need it to actually be run. Once the back ends can/do
> use the new manger there will hopefully be a corresponding hook I can put
> the invocation. That can be tomorrow's task however.
>
> Thank you for the suggestion of EP_OptimizerLast. It doesn't help this
> particular pass but likely will others.
>
> Re: updating docs, I found the link to the new pass manager,
> https://llvm.org/docs/WritingAnLLVMNewPMPass.html, so would have
> benefited from a warning there that this is not yet in use across back ends.
>
> Thanks!
>
> Jon
>
> On Wed, Feb 24, 2021 at 7:11 PM Arthur Eubanks <aeubanks at google.com>
> wrote:
>
>> Oh and to answer the original question, +1 to what Yuanfang said, but you
>> mentioned considering EP_ModuleOptimizerEarly, so what about keeping it in
>> the middle-end at EP_OptimizerLast (the NPM equivalent being
>> registerOptimizerLastEPCallback()) rather than moving it to the backend?
>> I'm not sure if you consider your pass to be a middle-end or a backend pass.
>>
>> On Wed, Feb 24, 2021 at 11:04 AM Arthur Eubanks <aeubanks at google.com>
>> wrote:
>>
>>> Yes we should definitely document this somewhere. Does it make sense to
>>> add onto https://llvm.org/docs/WritingAnLLVMBackend.html? Or create a
>>> new page since these hooks aren't only used by backends, but also used by
>>> Clang to add sanitizers and other Clang-specific passes?
>>>
>>> On Wed, Feb 24, 2021 at 10:48 AM via llvm-dev <llvm-dev at lists.llvm.org>
>>> wrote:
>>>
>>>> > For example, what is the rough equivalent to addPreISel() in the old
>>>> one for running target specific passes shortly before instruction selection
>>>>
>>>> Hello,
>>>>
>>>> Code generation passes including target-specific IR passes (usually
>>>> these specified in derived TargetPassConfig class) are not using the new
>>>> pass manager.  I'm working on switching the code generation to use the new
>>>> pass manager but it is not quite there yet. I guess we should document this
>>>> fact in the new pass manager documentation because I think this question
>>>> comes up once in a while.
>>>>
>>>> - Yuanfang
>>>>
>>>> ________________________________________
>>>> From: llvm-dev <llvm-dev-bounces at lists.llvm.org> on behalf of Jon
>>>> Chesterfield via llvm-dev <llvm-dev at lists.llvm.org>
>>>> Sent: Wednesday, February 24, 2021 9:31 AM
>>>> To: llvm-dev
>>>> Subject: [llvm-dev] New pass manager, documentation?
>>>>
>>>> Hi,
>>>>
>>>> I'm trying to work out how to use the new pass manager. For example,
>>>> what is the rough equivalent to addPreISel() in the old one for running
>>>> target specific passes shortly before instruction selection, or how do I
>>>> run a module pass shortly before a function pass.
>>>>
>>>> I have a module pass which works if run shortly before instruction
>>>> selection, but not if it is run via EP_ModuleOptimizerEarly. My current
>>>> plan is to make the pass significantly more complicated, so that it can
>>>> handle being run repeatedly from suboptimal points in the pipeline, but I
>>>> can keep the simple/stupid version instead if I can work out how the pass
>>>> manager works.
>>>>
>>>> Thanks,
>>>>
>>>> Jon
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> llvm-dev at lists.llvm.org
>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210225/416fc770/attachment.html>


More information about the llvm-dev mailing list