[PATCH] D93838: [SCCP] Add Function Specialization pass
Jon Chesterfield via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu May 20 05:41:56 PDT 2021
JonChesterfield added a comment.
In D93838#2770233 <https://reviews.llvm.org/D93838#2770233>, @davidxl wrote:
> My question is other than MCF, do we have other real world app that can benefit from this optimization (that can not be done by inliner)?
An alternative perspective. An inliner does two things. It elides call setup/return code, and it specialises the function on the call site. These can be, and probably should be, separable concerns.
Today we inline very aggressively, which is suboptimal for platforms with code size (or cache) restrictions, but does give the call site specialisation effect. So this patch, today, needs a large enough function to avoid being specialised by the inliner to see a benefit. Examples will be things like qsort or large switch statements on a parameter.
With a specialisation pass in tree we can start backing off the inliner. Calling conventions do have overhead, but I suspect the majority of the performance win of inline is from the specialisation. If that intuition is sound, then this plus a less aggressive inliner will beat the status quo through better icache utilisation. Performance tests of Os may validate that expectation
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D93838/new/
https://reviews.llvm.org/D93838
More information about the llvm-commits
mailing list