[llvm-dev] [RFC] Expanding the scope of ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER

Philip Reames via llvm-dev llvm-dev at lists.llvm.org
Sat Dec 5 13:36:32 PST 2020


Mehdi is completely correct.  I'd assumed I knew what the flag being 
discussed from context did and I was wrong.  Mehdi, thank you for 
pointing this out.

Philip

On 12/4/20 4:09 PM, Mehdi AMINI wrote:
>
>
> On Fri, Dec 4, 2020 at 3:28 PM Philip Reames via llvm-dev 
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
>     You are proposing to move code for the new pass manager into
>     conditional compilation.  I am strongly opposed.
>
> I suspect there is a misunderstanding: the proposal is not to leave 
> *out* the new PM with this flag, it is to allow the CMake flag to 
> operate in more places:
>
> https://github.com/llvm/llvm-project/blob/master/llvm/CMakeLists.txt#L706-L707
> set(ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER FALSE CACHE BOOL
>   "Enable the experimental new pass manager by default.")
>
> This allows to build clang/LLVM with the new pass manager enabled by 
> default. Despite the description it only affects the clang driver 
> enabling the new PM.
>
> The intent as I understand it is to extend the applicability of this 
> flag, so that it applies to LTO and opt and ...  ; that way any 
> buildbot with this flag turned on would check *more* of LLVM with the 
> new PM.
>
> As I understand it, this is only intended to help drive the migration 
> further by validating the use of the new PM in more places in LLVM 
> right now.
>
> -- 
> Mehdi
>
>
>     As for the overall status of the NPM, I find the continued delay
>     in switching to be extremely problematic for the health of project
>     long term. I understand the "X doesn't work yet" problem, but a) X
>     is fairly small, and b) the folks involved in maintaining X need
>     to pay the cost of supporting the old pass manager.  I do want to
>     be careful and state explicitly that I'm expressing opinion here,
>     not making an actual proposal.  I may get around to the later
>     eventually, but this is not it.
>
>     (two minor response inline)
>
>     Philip
>
>     On 12/4/20 3:19 PM, Arthur Eubanks wrote:
>>     Implementing this proposal does not in any way stop the flip of
>>     the flag, they are completely unrelated. This increases the scope
>>     of the new pass manager since much of lld's use of LTO is
>>     currently unconditionally using the legacy PM and flipping the
>>     flag wouldn't change that.
>     "the default" for me only means opt and clang.  It doesn't mean
>     llc, or any other tool which happens to use the old pm.  If we
>     need clang to select the old pass manager at the command line when
>     invoking LTO, that doesn't really bug me.
>>
>>     There are some things that the new pass manager doesn't currently
>>     support. For example, all of AMDGPU would be broken with the
>>     switch to the new pass manager since currently AMDGPU's passes
>>     aren't injected into the pipeline. I'm working on the (few)
>>     remaining issues and do plan to flip the switch soon.
>     I find this hard to believe.  Are you possibly talking about
>     llc/codegen?  If so, that's well out of scope for what I'm talking
>     about.  If not, can you point to a bug so I can see an example?
>>
>>     Also as mentioned in previous discussions, lots of people use the
>>     default, which currently is the legacy PM.
>>
>>     On Fri, Dec 4, 2020 at 2:18 PM Philip Reames
>>     <listmail at philipreames.com <mailto:listmail at philipreames.com>> wrote:
>>
>>         I strongly disagree with this proposal. As in, please do not
>>         land patches which implement this proposal.  If anything, we
>>         should remove the build time config flag entirely.
>>
>>         The new manager is mature and has been in wide use for a long
>>         time now.  Moving it to a conditional compilation item is a
>>         major regression in implied maturity and completely
>>         unwarranted.  If anything, we should just flip the dang flag
>>         and make people using the old pass manager support it.  (Most
>>         downstream groups I know of are running NPM.)
>>
>>         Philip
>>
>>         On 12/1/20 12:34 PM, Arthur Eubanks via llvm-dev wrote:
>>>         The ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER CMake flag
>>>         currently only affects Clang. It should probably also change
>>>         all other uses of pass managers where possible.
>>>
>>>         There are a couple of uses inside LLD for LTO which already
>>>         have new/legacy PM flags and should probably look at
>>>         ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER to determine the
>>>         default. Some
>>>         <https://github.com/llvm/llvm-project/blob/1314a4938fba865412598b7227cb4657d59cd8bc/lld/wasm/Driver.cpp#L382>
>>>         examples
>>>         <https://github.com/llvm/llvm-project/blob/1314a4938fba865412598b7227cb4657d59cd8bc/llvm/include/llvm/LTO/Config.h#L53>.
>>>
>>>         Also at some point in the future when check-llvm has been
>>>         fixed to work with opt's -enable-new-pm flag by default,
>>>         that should also be dependent upon
>>>         ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER.
>>>
>>>         Any objections?
>>>
>>>         _______________________________________________
>>>         LLVM Developers mailing list
>>>         llvm-dev at lists.llvm.org  <mailto:llvm-dev at lists.llvm.org>
>>>         https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>     _______________________________________________
>     LLVM Developers mailing list
>     llvm-dev at lists.llvm.org <mailto: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/20201205/9b4a23bb/attachment.html>


More information about the llvm-dev mailing list