[all-commits] [llvm/llvm-project] 717cc0: InlineFunction: Split inlining into predicate and ...

Matt Arsenault via All-commits all-commits at lists.llvm.org
Thu Apr 3 00:25:06 PDT 2025


  Branch: refs/heads/users/arsenm/inline-function/split-legality-predicate-and-impl
  Home:   https://github.com/llvm/llvm-project
  Commit: 717cc01812cf7ec67226a1d28552eb272bde042c
      https://github.com/llvm/llvm-project/commit/717cc01812cf7ec67226a1d28552eb272bde042c
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2025-04-03 (Thu, 03 Apr 2025)

  Changed paths:
    M llvm/include/llvm/Analysis/InlineCost.h
    M llvm/include/llvm/Transforms/Utils/Cloning.h
    M llvm/lib/Transforms/Utils/InlineFunction.cpp

  Log Message:
  -----------
  InlineFunction: Split inlining into predicate and apply functions

This is to support a new inline function reduction in llvm-reduce,
which should pre-filter callsites that are not eligible for inlining.

This code was mostly structured as a match and apply, with a few
exceptions. The ugliest piece is for propagating and verifying compatible
getGC and personalities. Also collection of EHPad and the convergence token
to use are now cached in InlineFunctionInfo.

I was initially confused by the split between the checks performed here
and isInlineViable, so better document how this system is supposed to work.
It turns out this split does make sense, in that isInlineViable checks
if it's possible based on the callee content and the ultimate inline
depended on the callsite context. I think more renames of these functions
would help, and isInlineViable should probably move out of InlineCost to be
with these transfoms.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list