Call-site tree and its application in function inlining

Arthur Ning Chih Yang, Shih Kun Huang, Wuu Yang*

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

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.

Original languageEnglish
Pages (from-to)1-12
Number of pages12
JournalInternational Journal of Embedded Systems
Volume17
Issue number5
DOIs
StatePublished - 2024

Keywords

  • call graph
  • call-site trees
  • compiler
  • execution tree
  • inlining
  • LLVM
  • optimisation
  • programming language
  • transformation

Fingerprint

Dive into the research topics of 'Call-site tree and its application in function inlining'. Together they form a unique fingerprint.

Cite this