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

Arthur Eubanks via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 8 14:37:36 PST 2022


aeubanks added a comment.

ah I think I've found the issue

to accommodate another weird recursion + alwaysinline case, we added https://reviews.llvm.org/D86988 (later modified by https://reviews.llvm.org/D91567). that ended up running a round of alwaysinline before the normal inliner pass. with this case of mutually recursive alwaysinline functions, one round of inlining seems ok, but two rounds blows up. `-mandatory-inlining-first=0` makes compile times reasonable in your reduced test case by disabling that feature

I never liked D86988 <https://reviews.llvm.org/D86988>, but it works around other abuses of alwaysinline

the alternative to D86988 <https://reviews.llvm.org/D86988> I considered at the time, which would probably resolve this case, was to visit alwaysinline calls before normal calls, rather than running two rounds of inlining


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