Arthur Eubanks via llvm-dev
2021-Feb-24 19:11 UTC
[llvm-dev] New pass manager, documentation?
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/20210224/7e58e53b/attachment.html>
Jon Chesterfield via llvm-dev
2021-Feb-24 20:08 UTC
[llvm-dev] New pass manager, documentation?
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/20210224/e1c5c51e/attachment.html>