PofoliaShared via Pofolia

Proceedings of the ACM on Programming Languages· 2026Q1

A New Approach to Optimal Function Inlining for Code Size Minimization via E-graphs

Amir Kafshdar Goharshady, Chun Kit Lam, Andreas Pavlogiannis, Ahmed Khaled Zaher

Short summary

A new algorithm based on e-graphs reduces code size by 4.66% compared to LLVM, achieving results competitive with state-of-the-art auto-tuning methods while being 20x faster.

AI-generated from the title and abstract; the full text is not read.

Key points

  • Optimal function inlining for code size minimization is NP-hard.
  • A new algorithm uses e-graphs to reduce code size by 4.66% compared to LLVM.
  • The e-graph approach is 20x faster than state-of-the-art auto-tuning methods.
  • Combining e-graphs with auto-tuning further reduces code size to 93.94% of LLVM's output.

AI-generated from the title and abstract; the full text is not read.

Abstract

Minimizing code size is a central problem in compiler optimization, especially in the context of embedded systems and mobile applications. One of the classical optimizations that has recently been adopted to reduce the output code size is function inlining, i.e. repeatedly replacing a function call site by the body of the called function. At first glance, the fact that inlining can help reduce code size is counter-intuitive. However, it enables two types of subsequent optimizations which can affect the code size significantly: (i) the intra-procedural optimizations performed within each function, which make use of the additional context provided by inlining, and (ii) the elimination of dead functions. Many existing heuristics, such as those used by LLVM, focus on a local size analysis based on a few call sites. Thus, they miss the global opportunities to remove dead functions. On the other hand, the current state-of-the-art approach of auto-tuning by Theodoridis et al. [ASPLOS 2022] focuses on global code size but inspects each call site independently in order to avoid a combinatorial explosion. However, inlining decisions are not independent in practice. It is possible that two inlining choices each increase code size on their own, but applying both of them together reduces the size. In this work, we show that the problem of optimal inlining for code size minimization is NP-hard. We then present a completely different approach to this problem. Our algorithm is based on equality graphs (e-graphs), which are a standard tool in automated theorem proving and have recently been adopted by the compiler optimization community as a key ingredient in equality saturation. We show that optimal function inlining can be reduced to e-graph extraction. Although e-graph extraction is also NP-hard, there are efficient solvers that can handle sparse instances of this problem [OOPSLA 2024]. We build upon these solvers and add further inlining-specific heuristics to design an algorithm for code size reduction. Finally, we present experimental results on the standard SPEC benchmarks. Compared with LLVM, our approach reduces the code size to 95.34%. This is competitive with the state-of-the-art auto-tuning method of [ASPLOS 2022], which achieves 95.24%. In terms of running time, our approach is 20x faster than auto-tuning. More importantly, due to the two methods having orthogonal strengths, applying both of them leads to a further significant improvement, reducing the code size to 93.94% of LLVM's output.

The authors' abstract, as published at the source. Proceedings of the ACM on Programming Languages, 2026 · DOI ↗

TakeawaysPremium
Ask the paperFree account

Continue with a free account

Ask the paper: 3 free questions a day about this paper; save it, get its citation, new summaries every day for your field. Takeaways are Premium.

Continue free on the web

Sign in with Google or Apple; no card needed. You come back to this paper.

On your phone:

Field: Hardware and Architecture

Hardware and ArchitectureComputer Science