This involves porting BPFAbstractMemberAccess and BPFPreserveDIType to
NPM, then adding them BPFTargetMachine::registerPassBuilderCallbacks
(the NPM equivalent of adjustPassManager()).
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
I am not familiar with this pass, but every bit of the porting and the callbacks looks on-par to me.
@aeubanks I assume this is related to new pass manager and is not on by default? What is the option I could turn npm on and give a try? Looks like Hexagon is another backend which has implemented npm support. We may plan to implement new (early or module) passes so we need to modify both adjustPassManager and registerPassBuilderCallbacks. Understanding how it really functions will help our future work. The code looks correct, esp. when comparing to what Hexagon has done, but I would like to experiment a little bit before accepting the patch. Thanks!
I think I got how to enable npm in opt. It is -passes option in opt -passes='default<O2>' %s. It looks good. Will stamp it.
I have another patch I plan to land https://reviews.llvm.org/D85570 which inserts a pass for EP_ModuleOptimizerEarly. Does it correspond to NPM registerPipelineStartEPCallback() callback function?
BTW, can you share what is the plan for NPM? Any expected time to turn it on as the default?
I think this thread can give some answers: http://lists.llvm.org/pipermail/llvm-dev/2020-July/143666.html
The target deadline is the end of this year, with a coming checkpoint in a couple of weeks to evaluate the status.
Yup that's it.
I have another patch I plan to land https://reviews.llvm.org/D85570 which inserts a pass for EP_ModuleOptimizerEarly. Does it correspond to NPM registerPipelineStartEPCallback() callback function?
Yes, just like was done here.