Open Access Article

Title: Call-site tree and its application in function inlining

Authors: Arthur Ning-Chih Yang; Shih-Kun Huang; Wuu Yang

Addresses: Department of Computer Science, National Yang-Ming Chiao-Tung University, Hsinchu, Taiwan ' Department of Computer Science, National Yang-Ming Chiao-Tung University, Hsinchu, Taiwan ' Department of Computer Science, National Yang-Ming Chiao-Tung University, Hsinchu, Taiwan

Abstract: 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.

Keywords: inlining; call graph; call-site trees; compiler; execution tree; optimisation; transformation; programming language; LLVM.

DOI: 10.1504/IJES.2024.140220

International Journal of Embedded Systems, 2024 Vol.17 No.5, pp.1 - 12

Received: 04 Jul 2023
Accepted: 16 Feb 2024

Published online: 30 Jul 2024 *