[all-commits] [llvm/llvm-project] c6ee71: [BOLT][AArch64] Relax calls and branches with frag...

Alexandros Lamprineas via All-commits all-commits at lists.llvm.org
Thu Sep 24 05:42:33 PDT 2026


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c6ee71d5e8a5d53a24539dcd2a098e02e4e38a05
      https://github.com/llvm/llvm-project/commit/c6ee71d5e8a5d53a24539dcd2a098e02e4e38a05
  Author: Alexandros Lamprineas <alexandros.lamprineas at arm.com>
  Date:   2026-09-24 (Thu, 24 Sep 2026)

  Changed paths:
    M bolt/include/bolt/Core/BinaryContext.h
    M bolt/include/bolt/Core/BinaryFunction.h
    M bolt/include/bolt/Passes/LongJmp.h
    M bolt/lib/Core/BinaryContext.cpp
    M bolt/lib/Passes/LongJmp.cpp
    M bolt/lib/Rewrite/RewriteInstance.cpp
    A bolt/test/AArch64/relax-branches-with-thunk-chain.s
    A bolt/test/AArch64/relax-call-long-thunk-reuse.s
    A bolt/test/AArch64/relax-call-short-thunk-reuse.s
    A bolt/test/AArch64/relax-calls.s
    A bolt/test/AArch64/relax-cross-fragment-calls.s
    R bolt/test/AArch64/relax-exp.s

  Log Message:
  -----------
  [BOLT][AArch64] Relax calls and branches with fragment clusters (#215825)

Build relaxation clusters from emitted function fragments instead
of whole functions, so split hot/cold code is modeled in the order
it will be emitted. Use those clusters to place short and long call
thunks, and to build forward/backward thunk chains for in-layout
inter-cluster branches.

Rely on relaxLocalBranches() to lower short local branches to local
stubs first, then relax the remaining direct 28-bit edges. Warn and
leave out-of-layout unconditional branches unrelaxed; route
out-of-layout calls through long thunks.

This lets the experimental AArch64 relaxation path handle large
split binaries where direct call/branch relocations can cross the
+/-128 MiB range after BOLT changes the layout. By default, it
does not assume PLT entries are near emitted code.

Tested with stage2-clang-bolt and Chromium using Speedometer
profile data, with lite mode disabled and no assumptions about
PLT proximity.

Assisted-by: Codex



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list