[all-commits] [llvm/llvm-project] b46cc3: [BOLT] Skip data-hole filling unless data reorderi...

Rafael Auler via All-commits all-commits at lists.llvm.org
Fri Aug 7 16:57:51 PDT 2026


  Branch: refs/heads/users/rafaelauler/datareord
  Home:   https://github.com/llvm/llvm-project
  Commit: b46cc33b0944820294f37aaa2e5eb549acc7505a
      https://github.com/llvm/llvm-project/commit/b46cc33b0944820294f37aaa2e5eb549acc7505a
  Author: Rafael Auler <rafaelauler at meta.com>
  Date:   2026-08-07 (Fri, 07 Aug 2026)

  Changed paths:
    M bolt/include/bolt/Utils/CommandLineOpts.h
    M bolt/lib/Core/BinaryContext.cpp
    M bolt/lib/Passes/ReorderData.cpp
    M bolt/lib/Utils/CommandLineOpts.cpp

  Log Message:
  -----------
  [BOLT] Skip data-hole filling unless data reordering is enabled

BinaryContext::postProcessSymbolTable unconditionally called
fixBinaryDataHoles(), which walks every allocatable section and, for
each gap in its address space, either grows a zero-sized data symbol
or creates a synthetic "HOLEat" BinaryData (plus an MCSymbol and
GlobalSymbols/BinaryDataMap entries).  This machinery was introduced
(0e4d86bf, 2017) for one purpose: to give static data reordering
(-reorder-data) a movable object covering every byte of a section. It
has no other consumer.

On a large binary, these synthetic objects are live from
buildFunctionsCFG through the end of the run and, at the RSS peak
(during debug info rewriting), fixBinaryDataHoles accounted for 1669
MB (2.5%) of peak RSS -- memory spent entirely for a feature that is
off by default.

Gate fixBinaryDataHoles() (and the zero-sized-symbol validation loop
that presumes it ran) on a non-empty opts::ReorderData, keeping
generateSymbolHashes() unconditional.



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