Call-site tree and its application in function inlining
Arthur Yang, Shih-Kun Huang, Wuu Yang · International Journal of Embedded Systems · 2024
Traditionally, function invocation is represented as the (static) call graph or the (dynamic) execution tree in compilers.We define the new call-site tree, in which two different executions of a call-site (say α that is located within a function f ) are represented by the same node if and only if the calling chains from main to f in the two different executions of α are identical.Function inlining is a very profitable optimisation that replaces a call-site with the body of the called function.Intuitively, it is preferable to inline the call-sites that are executed most often.Call-sites are suitable for function inlining because they allow to adjust the execution counts of (new and existing) call-sites without re-profiling after a call-site is inlined.We also propose analysis algorithms of the call-site tree and implement an inliner in LLVM.The experimental results on SPEC INT 2006 are reported.