Google’s Propeller is a profile-guided, reflinking optimizer for large codebases. Propeller is built atop LLVM and can allow for whole-program optimizations. Google compiler engineers are now hoping to bring the Propeller tool into the upstream LLVM codebase.
Google’s Propeller has been in the works for several years for speeding up the performance of large binaries/applications. They have even used AutoFDO and Propeller on Linux kernel builds for 5~10% performance improvements.
Jin Huang of Google’s compiler team posted a proposal to the LLVM Discourse with hopes of working to get the Propeller tool upstreamed into the LLVM source tree. From that public proposal:
“We propose upstreaming the Propeller profile conversion tool (provisionally named llvm-propeller) into llvm/tools. Propeller is a post-link optimization (PLO) framework that improves application performance via precise function and basic block layout. While the Clang (-fbasic-block-sections) and LLD (-lto-basic-block-sections) components are already upstream, the critical tool for generating the Propeller profile remains external (google/llvm-propeller).
Integrating this tool will provide LLVM users with a complete, dependency-free, out-of-the-box solution for PLO. By leveraging a relinking-based approach, Propeller offers a scalable option designed for distributed and incremental build environments, serving as an alternative to binary-rewriting frameworks like BOLT.
…
Currently, using Propeller requires a disjointed workflow involving an external repository (google/llvm-propeller). Moving the tool to llvm/tools allows it to be distributed alongside standard tools like llvm-profgen in Profile Guided Optimizations (PGO) infra, drastically simplifying the user experience.”
Here’s to hoping this pans out in 2026 with having the Propeller tool in the upstream LLVM codebase for simplifying the experience for more easily leveraging this profile-guided, reflinking optimizer.
