News: 0001601612

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

Google Looks To Upstream Its Propeller Tool To LLVM For More Performance

([LLVM] 6 Hours Ago LLVM Propeller Tool)


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 [1]speeding up the performance of large binaries/applications . They have even [2]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 [3]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.



[1] https://www.phoronix.com/news/Google-Propeller-Some-Upstream

[2] https://www.phoronix.com/news/AutoFDO-Propeller-Kernel

[3] https://discourse.llvm.org/t/rfc-upstreaming-propeller-profile-conversion-tool/89173



Your csh still thinks true is false. Write to your vendor today and tell
them that next year Configure ought to "rm /bin/csh" unless they fix their
blasted shell. :-) -- Larry Wall in Configure from the perl distribution