|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
| #
8477bc67 |
| 17-Jul-2022 |
Fabian Parzefall <[email protected]> |
[BOLT] Add function layout class
This patch adds a dedicated class to keep track of each function's layout. It also lays the groundwork for splitting functions into multiple fragments (as opposed to
[BOLT] Add function layout class
This patch adds a dedicated class to keep track of each function's layout. It also lays the groundwork for splitting functions into multiple fragments (as opposed to a strict hot/cold split).
Reviewed By: maksfb
Differential Revision: https://reviews.llvm.org/D129518
show more ...
|
| #
d55dfeaf |
| 14-Jul-2022 |
Fabian Parzefall <[email protected]> |
[BOLT] Replace uses of layout with basic block list
As we are moving towards support for multiple fragments, loops that iterate over all basic blocks of a function, but do not depend on the order of
[BOLT] Replace uses of layout with basic block list
As we are moving towards support for multiple fragments, loops that iterate over all basic blocks of a function, but do not depend on the order of basic blocks in the final layout, should iterate over binary functions directly, rather than the layout.
Eventually, all loops using the layout list should either iterate over the function, or be aware of multiple layouts. This patch replaces references to binary function's block layout with the binary function itself where only little code changes are necessary.
Reviewed By: maksfb
Differential Revision: https://reviews.llvm.org/D129585
show more ...
|
| #
d58b5a06 |
| 27-Jun-2022 |
Amir Ayupov <[email protected]> |
[BOLT] Restrict icp-inline to callsites
ICP peel for inline mode only makes sense for calls, not jump tables. Plus, add a check that the Target BinaryFunction is found.
Reviewed By: rafauler
Diffe
[BOLT] Restrict icp-inline to callsites
ICP peel for inline mode only makes sense for calls, not jump tables. Plus, add a check that the Target BinaryFunction is found.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D128404
show more ...
|
| #
0d477f63 |
| 27-Jun-2022 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] Add aliases for ICP flags
- `indirect-call-promotion` -> `icp` - `indirect-call-promotion-mispredict-threshold` -> `icp-mp-threshold` - `indirect-call-promotion-use-mispredicts` -> `icp-
[BOLT][NFC] Add aliases for ICP flags
- `indirect-call-promotion` -> `icp` - `indirect-call-promotion-mispredict-threshold` -> `icp-mp-threshold` - `indirect-call-promotion-use-mispredicts` -> `icp-use-mp` - `indirect-call-promotion-topn` -> `icp-topn` - `indirect-call-promotion-calls-topn` -> `icp-calls-topn` - `indirect-call-promotion-jump-tables-topn` -> `icp-jt-topn` - `icp-jump-table-targets` -> `icp-jt-targets`
This also fixes an inconsistency in ICP flag names that some start with `indirect-call-promotion` while others start with `icp`.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D128375
show more ...
|
| #
d2c87699 |
| 24-Jun-2022 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] Use range-based STL wrappers
Replace `std::` algorithms taking begin/end iterators with `llvm::` counterparts accepting ranges.
Reviewed By: rafauler
Differential Revision: https://rev
[BOLT][NFC] Use range-based STL wrappers
Replace `std::` algorithms taking begin/end iterators with `llvm::` counterparts accepting ranges.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D128154
show more ...
|
|
Revision tags: llvmorg-14.0.6 |
|
| #
8228c703 |
| 16-Jun-2022 |
Maksim Panchenko <[email protected]> |
[BOLT][NFCI] Refactor interface for adding basic blocks
Reviewed By: Amir
Differential Revision: https://reviews.llvm.org/D127935
|
|
Revision tags: llvmorg-14.0.5 |
|
| #
b92436ef |
| 05-Jun-2022 |
Fangrui Song <[email protected]> |
[bolt] Remove unneeded cl::ZeroOrMore for cl::opt options
|
| #
36c7d79d |
| 04-Jun-2022 |
Fangrui Song <[email protected]> |
Remove unneeded cl::ZeroOrMore for cl::opt options
Similar to 557efc9a8b68628c2c944678c6471dac30ed9e8e. This commit handles options where cl::ZeroOrMore is more than one line below cl::opt.
|
| #
e2142ff4 |
| 03-Jun-2022 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] Make ICP::verifyProfile static
Follow LLVM style guide suggestion to avoid function definitions in anonymous namespaces: https://llvm.org/docs/CodingStandards.html#anonymous-namespaces
[BOLT][NFC] Make ICP::verifyProfile static
Follow LLVM style guide suggestion to avoid function definitions in anonymous namespaces: https://llvm.org/docs/CodingStandards.html#anonymous-namespaces
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D124896
show more ...
|
|
Revision tags: llvmorg-14.0.4 |
|
| #
c2d40f1d |
| 11-May-2022 |
Amir Ayupov <[email protected]> |
[BOLT] Add icp-inline option
Add an option to only peel ICP targets that can be subsequently inlined. Yet there's no guarantee that they will be inlined.
The mode is independent from the heuristic
[BOLT] Add icp-inline option
Add an option to only peel ICP targets that can be subsequently inlined. Yet there's no guarantee that they will be inlined.
The mode is independent from the heuristic used to choose ICP targets: by exec count, mispredictions, or memory profile.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D124900
show more ...
|
| #
2ad1c754 |
| 04-May-2022 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] Minor cleanup in ICP getCallTargets and canPromoteCallsite
Minor refactoring. NFC.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D124898
|
| #
60957a5a |
| 04-May-2022 |
Amir Ayupov <[email protected]> |
[BOLT] Fix ICPJumpTablesTopN option use
Fix non-sensical `opts::ICPJumpTablesTopN != 0 ? opts::ICPTopN : opts::ICPTopN`. Refactor/simplify another similar assignment.
Reviewed By: rafauler
Differe
[BOLT] Fix ICPJumpTablesTopN option use
Fix non-sensical `opts::ICPJumpTablesTopN != 0 ? opts::ICPTopN : opts::ICPTopN`. Refactor/simplify another similar assignment.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D124880
show more ...
|
| #
c3d53720 |
| 04-May-2022 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] Make ICP options naming uniform
Rename `opts::IndirectCallPromotion*` to `opts::ICP*`, making option naming uniform and easier to follow.
Reviewed By: rafauler
Differential Revision: h
[BOLT][NFC] Make ICP options naming uniform
Rename `opts::IndirectCallPromotion*` to `opts::ICP*`, making option naming uniform and easier to follow.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D124879
show more ...
|
| #
d0b1c98c |
| 04-May-2022 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] ICP: simplify findTargetsIndex
Unnest lambda and use `llvm::is_contained`.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D124877
|
| #
ec02227b |
| 04-May-2022 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] Refactor ICP::findCallTargetSymbols
Reduce nesting making it easier to read.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D124876
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init |
|
| #
194b164e |
| 01-Feb-2022 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] Fix compiler warnings
Summary: - variable 'TotalSize' set but not used - variable 'TotalCallsTopN' set but not used - use of bitwise '|' with boolean operands
Reviewed By: maksfb
FBD33
[BOLT][NFC] Fix compiler warnings
Summary: - variable 'TotalSize' set but not used - variable 'TotalCallsTopN' set but not used - use of bitwise '|' with boolean operands
Reviewed By: maksfb
FBD33911129
show more ...
|
|
Revision tags: llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
| #
f8c7fb49 |
| 30-Oct-2021 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] Reduce includes with include-what-you-use
Summary: Removed redundant includes with IWYU
Test Plan: ninja bolt
Reviewers: maksfb
FBD32043568
|
| #
5a654b01 |
| 20-Jan-2022 |
Amir Ayupov <[email protected]> |
[BOLT] Make ICP target selection (more) deterministic
Summary: Break ties by selecting targets with lower addresses.
Reviewers: maksfb
FBD33677001
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1 |
|
| #
f18fcdab |
| 09-Apr-2021 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] Expand auto types pt.2
Summary: Expand autos where it may lead to differences in the BOLT binary.
Test Plan: NFC
Reviewers: maksfb
Reviewed By: maks
FBD27673231
|
| #
3b01fbeb |
| 29-Dec-2021 |
Amir Ayupov <[email protected]> |
[BOLT] Fix debug logging in IndirectCallPromotion
Summary: Access elements of a value pair in HotTargetMap debug logging/loop over HotTargetMap key-value.
(cherry picked from FBD33344656)
|
| #
f92ab6af |
| 29-Dec-2021 |
Amir Ayupov <[email protected]> |
[BOLT][NFC] Fix braces usage in Passes
Summary: Refactor bolt/*/Passes to follow the braces rule for if/else/loop from [LLVM Coding Standards](https://llvm.org/docs/CodingStandards.html).
(cherry p
[BOLT][NFC] Fix braces usage in Passes
Summary: Refactor bolt/*/Passes to follow the braces rule for if/else/loop from [LLVM Coding Standards](https://llvm.org/docs/CodingStandards.html).
(cherry picked from FBD33344642)
show more ...
|
| #
2f09f445 |
| 21-Dec-2021 |
Maksim Panchenko <[email protected]> |
[BOLT][NFC] Fix file-description comments
Summary: Fix comments at the start of source files.
(cherry picked from FBD33274597)
|
| #
40c2e0fa |
| 15-Dec-2021 |
Maksim Panchenko <[email protected]> |
[BOLT][NFC] Reformat with clang-format
Summary: Selectively apply clang-format to BOLT code base.
(cherry picked from FBD33119052)
|
| #
69706eaf |
| 09-Dec-2021 |
Maksim Panchenko <[email protected]> |
[BOLT] Refactor BinaryBasicBlock to use ADT
Summary: Refactor members of BinaryBasicBlock. Replace some std containers with ADT equivalents. The size of BinaryBasicBlock on x86-64 Linux is reduced f
[BOLT] Refactor BinaryBasicBlock to use ADT
Summary: Refactor members of BinaryBasicBlock. Replace some std containers with ADT equivalents. The size of BinaryBasicBlock on x86-64 Linux is reduced from 232 bytes to 192 bytes.
(cherry picked from FBD33081850)
show more ...
|
| #
ae585be1 |
| 12-Nov-2021 |
Rafael Auler <[email protected]> |
[BOLT] Fix Windows build
Summary: Make BOLT build in VisualStudio compiler and run without crashing on a simple test. Other tests are not running.
(cherry picked from FBD32378736)
|