[PATCH] D86988: [Inliner] Run always-inliner in inliner-wrapper

Arthur Eubanks via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 15 12:32:00 PDT 2020


aeubanks added a comment.

In D86988#2273210 <https://reviews.llvm.org/D86988#2273210>, @davidxl wrote:

> What is the compile time implication?

AlwaysInlinerPass looks at every function in the module and skips any without the alwaysinline function attribute, so I imagine it shouldn't be too bad in the typical case of no always_inline functions.
+nikic, is there any way to set off a job at http://llvm-compile-time-tracker.com/ with this patched in?

> The key issue here is handling of recursive calls. With this change, it is also possible to suppress more always_inline which can happen without this change. For instance in your example, if 'a' is also marked with always_inline, then not allowing b to be inlined into 'a' will enable 'a' to be inlined into its other callers. With this change, it is suppressed.

As long as the always_inline call graph is a DAG this should work, otherwise always_inline can't always be respected no matter what order things are inlined, right? Taking care of the DAG always_inline call graph case seems fairly important.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D86988



More information about the llvm-commits mailing list