[PATCH] D138602: [WIP] Alwaysinliner time explosion with new pass manager

Davide Italiano via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 23 14:35:43 PST 2022


davide added a comment.

Hi @aeubanks -- admittedly I haven't touched the inliner in a very long time so I might be wrong here, but my understanding is that alwaysinline trumps the cost multiplier (that's why the previous patch is not enough).

To answer your question: most of this code is something that clients don't control (e.g. sometimes it's library code). 
It took me a long time to even understand why the inliner went bananas. The old pass manager didn't really have this behavior, so clients internally upgrading the compilers get caught by surprise. To the best of my understanding, Rust and others hit this behavior too.

I concur with you that we should try respecting `always_inline` -- although in this case it seems to hit a pathological behavior.
If we don't want to take this patch "as-is", maybe a good tradeoff is that of having a `cl:opt`? WDYT?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D138602



More information about the llvm-commits mailing list