[llvm] [BOLT][AArch64] Use minimal code alignment for cold functions (PR #172598)
Maksim Panchenko via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 16 22:11:24 PST 2025
https://github.com/maksfb updated https://github.com/llvm/llvm-project/pull/172598
>From 3c15943ec0247564f7fc82a430bfa1113d68527c Mon Sep 17 00:00:00 2001
From: Maksim Panchenko <maks at fb.com>
Date: Tue, 16 Dec 2025 21:51:33 -0800
Subject: [PATCH] [BOLT][AArch64] Use minimal code alignment for cold functions
On AArch64, a larger cold code size can result in more veneers,
increasing potential overhead for hot code. This change minimizes cold
code size when the `--use-compact-aligner` option (default) is enabled.
---
bolt/lib/Passes/Aligner.cpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/bolt/lib/Passes/Aligner.cpp b/bolt/lib/Passes/Aligner.cpp
index 5d21bdb3f154a..c631120e9de09 100644
--- a/bolt/lib/Passes/Aligner.cpp
+++ b/bolt/lib/Passes/Aligner.cpp
@@ -77,6 +77,13 @@ static void alignCompact(BinaryFunction &Function,
size_t HotSize = 0;
size_t ColdSize = 0;
+ // On AArch64, larger cold code size may lead to more veneers and higher
+ // potential overhead for hot code. Minimize the cold code size.
+ if (!Function.hasProfile() && BC.isAArch64()) {
+ Function.setAlignment(Function.getMinAlignment());
+ return;
+ }
+
for (const BinaryBasicBlock &BB : Function)
if (BB.isSplit())
ColdSize += BC.computeCodeSize(BB.begin(), BB.end(), Emitter);
More information about the llvm-commits
mailing list