[PATCH] D102136: [NewPM] Add C bindings for new pass manager

Mats Larsen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 11 05:44:12 PDT 2021


supergrecko added a comment.

In D102136#2749370 <https://reviews.llvm.org/D102136#2749370>, @aeubanks wrote:

> In D102136#2749071 <https://reviews.llvm.org/D102136#2749071>, @supergrecko wrote:
>
>> In D102136#2748572 <https://reviews.llvm.org/D102136#2748572>, @aeubanks wrote:
>>
>>> The weird quirk of disposing the PassBuilder when it's passed to `LLVMRunPassBuilder` and the awkward naming of `LLVMRunPassBuilder` are easily resolved if we combine the two, since PassBuilder will be internal to that one function, and `LLVMRunPasses` seems nice
>>
>> LLVMRunPasses would be nice and descriptive for its task. I'm not too sure I understood what you mean by "the quirk of disposing the PassBuilder (...)"; would it be preferable to have the client dispose it themselves? If the PassBuilder is re-usable after a run it would probably not make sense to get rid of it, but you know more about that than I do. Let me know what you think is the correct decision here.
>
> It's weird that clients only sometimes manually dispose of the PassBuilder. For example, if a language with destructors were to wrap LLVMPassBuilderRef, there'd be weird logic in the destructor on when to call LLVMDisposePassBuilder. I'm not worried about supporting reusing a PassBuilder.
> IMO we should only have the creation/setup of options (in this case PTO, maybe some other things like DebugLogging and TargetMachine), then pass those options and the pass pipeline string and the module to a LLVMRunPasses. This simplifies everything and we don't have to worry about any LLVMPassBuilderRefs since we won't be exposing it.

Aha, gotcha. I'll make it so the PassBuilder is kept private to LLVMRunPasses, removing LLVMPassBuilderRef and friends. That should result in an API looking like this:

  LLVMErrorRef LLVMRunPasses(LLVMTargetMachineRef TM,
                             LLVMPipelineTuningOptionsRef PTO, LLVMModuleRef M,
                             LLVMBool Debug, LLVMBool VerifyEach,
                             const char *Passes);


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D102136/new/

https://reviews.llvm.org/D102136



More information about the llvm-commits mailing list