[all-commits] [llvm/llvm-project] 587d26: [BOLT] Towards FunctionLayout const-correctness

Fabian Parzefall via All-commits all-commits at lists.llvm.org
Wed Aug 24 10:19:50 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 587d2653420d75ef10f30bd612d86f1e08fe9ea7
      https://github.com/llvm/llvm-project/commit/587d2653420d75ef10f30bd612d86f1e08fe9ea7
  Author: Fabian Parzefall <parzefall at fb.com>
  Date:   2022-08-24 (Wed, 24 Aug 2022)

  Changed paths:
    M bolt/include/bolt/Core/BinaryBasicBlock.h
    M bolt/include/bolt/Core/BinaryFunction.h
    M bolt/include/bolt/Core/DynoStats.h
    M bolt/include/bolt/Passes/ReorderAlgorithm.h
    M bolt/lib/Core/BinaryBasicBlock.cpp
    M bolt/lib/Core/BinaryFunction.cpp
    M bolt/lib/Core/DynoStats.cpp
    M bolt/lib/Passes/AsmDump.cpp
    M bolt/lib/Passes/BinaryPasses.cpp
    M bolt/lib/Passes/CacheMetrics.cpp
    M bolt/lib/Passes/ExtTSPReorderAlgorithm.cpp
    M bolt/lib/Passes/IdenticalCodeFolding.cpp
    M bolt/lib/Passes/ReorderAlgorithm.cpp
    M bolt/lib/Passes/StokeInfo.cpp
    M bolt/lib/Profile/DataAggregator.cpp
    M bolt/lib/Profile/DataReader.cpp
    M bolt/lib/Rewrite/BoltDiff.cpp

  Log Message:
  -----------
  [BOLT] Towards FunctionLayout const-correctness

A const-qualified reference to function layout allows accessing
non-const qualified basic blocks on a const-qualified function. This
patch adds or removes const-qualifiers where necessary to indicate where
basic blocks are used in a non-const manner.

Reviewed By: rafauler

Differential Revision: https://reviews.llvm.org/D132049


  Commit: 101344af1af82d1633c773b718788eaa813d7f79
      https://github.com/llvm/llvm-project/commit/101344af1af82d1633c773b718788eaa813d7f79
  Author: Fabian Parzefall <parzefall at fb.com>
  Date:   2022-08-24 (Wed, 24 Aug 2022)

  Changed paths:
    M bolt/include/bolt/Core/BinaryEmitter.h
    M bolt/include/bolt/Core/FunctionLayout.h
    M bolt/lib/Core/BinaryContext.cpp
    M bolt/lib/Core/BinaryEmitter.cpp
    M bolt/lib/Core/BinaryFunction.cpp
    M bolt/lib/Core/Exceptions.cpp
    M bolt/lib/Core/FunctionLayout.cpp
    M bolt/lib/Passes/BinaryPasses.cpp
    M bolt/lib/Rewrite/RewriteInstance.cpp

  Log Message:
  -----------
  [BOLT] Allocate FunctionFragment on heap

This changes `FunctionFragment` from being used as a temporary proxy
object to access basic block ranges to a heap-allocated object that can
store fragment-specific information.

Reviewed By: rafauler

Differential Revision: https://reviews.llvm.org/D132050


  Commit: 7e254818e49454a53bd00e3737007025b62d0f79
      https://github.com/llvm/llvm-project/commit/7e254818e49454a53bd00e3737007025b62d0f79
  Author: Fabian Parzefall <parzefall at fb.com>
  Date:   2022-08-24 (Wed, 24 Aug 2022)

  Changed paths:
    M bolt/include/bolt/Core/BinaryFunction.h
    M bolt/include/bolt/Core/FunctionLayout.h
    M bolt/lib/Core/BinaryFunction.cpp
    M bolt/lib/Core/FunctionLayout.cpp
    M bolt/lib/Profile/BoltAddressTranslation.cpp
    M bolt/lib/Rewrite/RewriteInstance.cpp

  Log Message:
  -----------
  [BOLT] Track fragment info for all split fragments

To generate all symbols correctly, it is necessary to record the address
of each fragment. This patch moves the address info for the main and
cold fragments from BinaryFunction to FunctionFragment, where this data
is recorded for all fragments.

Reviewed By: rafauler

Differential Revision: https://reviews.llvm.org/D132051


Compare: https://github.com/llvm/llvm-project/compare/13cb085ca1df...7e254818e494


More information about the All-commits mailing list