|
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, llvmorg-14.0.6 |
|
| #
2962f9df |
| 21-Jun-2022 |
John Regehr <[email protected]> |
stop llvm-reduce from introducing undefs
Differential Revision: https://reviews.llvm.org/D128317
|
|
Revision tags: llvmorg-14.0.5, llvmorg-14.0.4 |
|
| #
bb8e0232 |
| 24-May-2022 |
Markus Lavin <[email protected]> |
llvm-reduce: improve basic-blocks removal pass
When the single branch target of a block has been removed try updating it to target a block that is kept (by scanning forward in the sequence) instead
llvm-reduce: improve basic-blocks removal pass
When the single branch target of a block has been removed try updating it to target a block that is kept (by scanning forward in the sequence) instead of replacing the branch with a return instruction. Doing so reduces the risk of breaking loop structures meaning that when the loop is 'interesting' these reductions should have more blocks eliminated.
Differential Revision: https://reviews.llvm.org/D125766
show more ...
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2 |
|
| #
f7db8b7a |
| 20-Apr-2022 |
Matt Arsenault <[email protected]> |
llvm-reduce: Fix variable name typo
|
| #
6f3f19a3 |
| 13-Apr-2022 |
Matt Arsenault <[email protected]> |
llvm-reduce: Fix some copy-pasted comment errors
|
|
Revision tags: llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2 |
|
| #
a5bbc6ef |
| 23-Feb-2022 |
Bill Wendling <[email protected]> |
[NFC] Remove unnecessary "#include"s from header files
|
|
Revision tags: llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
| #
4081df43 |
| 13-Nov-2021 |
Florian Hahn <[email protected]> |
[llvm-reduce] Remove unnecessary loop.
After cd8aa234fdd2, there's no need to collect a vector of basic blocks to keep first. Remove the first loop.
|
| #
6f288bd7 |
| 12-Nov-2021 |
Arthur Eubanks <[email protected]> |
[llvm-reduce] Count chunks by running a preliminary reduction
Having a separate counting method runs the risk of a mismatch between the actual reduction method and the counting method.
Instead, cre
[llvm-reduce] Count chunks by running a preliminary reduction
Having a separate counting method runs the risk of a mismatch between the actual reduction method and the counting method.
Instead, create an Oracle that always returns true for shouldKeep(), run the reduction, and count how many times shouldKeep() was called. The module should not be modified if shouldKeep() always returns true.
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D113537
show more ...
|
| #
cd8aa234 |
| 10-Nov-2021 |
Florian Hahn <[email protected]> |
[llvm-reduce] Use DenseSet instead of std::set (NFC).
When reducing functions with very large basic blocks (~ almost 1 million BBs), the majority of time is spent maintaining the order in the std::s
[llvm-reduce] Use DenseSet instead of std::set (NFC).
When reducing functions with very large basic blocks (~ almost 1 million BBs), the majority of time is spent maintaining the order in the std::set for the basic blocks to keep.
In those cases, DenseSet<> is much more efficient. Use it instead.
show more ...
|
| #
16c3db8d |
| 09-Nov-2021 |
Dwight Guth <[email protected]> |
[llvm-reduce] Fix invalid reduction in basic-blocks delta pass
Previously, if the basic-blocks delta pass tried to remove a basic block that was the last basic block in a function that did not have
[llvm-reduce] Fix invalid reduction in basic-blocks delta pass
Previously, if the basic-blocks delta pass tried to remove a basic block that was the last basic block in a function that did not have external or weak linkage, the resulting IR would become invalid. Since removing the last basic block in a function is effectively identical to removing the function body itself, we check explicitly for this case and if we detect it, we run the same logic as in ReduceFunctionBodies.cpp
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D113486
show more ...
|
| #
2f161736 |
| 29-Oct-2021 |
Dwight Guth <[email protected]> |
[llvm-reduce] optimize extractFromModule functions
The extractBasicBlocksFromModule, extractInstrFromModule, and other similar functions previously performed very poorly when the number of such elem
[llvm-reduce] optimize extractFromModule functions
The extractBasicBlocksFromModule, extractInstrFromModule, and other similar functions previously performed very poorly when the number of such elements in the program to reduce was very high. Previously, we were creating the set which caches elements to keep by looping through all elements in the module and adding them to the set. However, since std::set is an ordered set, this introduces a massive amount of rebalancing if the order of elements in the program and the order of their pointers in memory are not the same.
The solution is straightforward: first put all the elements to be kept in a vector, then use the constructor for std::set which takes a pair of iterators over a collection. This constructor is optimized to avoid doing unnecessary work when initializing large sets.
Also in this change, we pass BBsToKeep set to functions replaceBranchTerminator and removeUninterestingBBsFromSwitch as a const reference rather than passing it by value. This ought to prevent the need to copy the collection each time these functions are called, which is expensive if the collection is large.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D112757
show more ...
|
| #
77bc3ba3 |
| 05-Oct-2021 |
Arthur Eubanks <[email protected]> |
[NFC][llvm-reduce] Cleanup types
Use Module& wherever possible. Since every reduction immediately turns Chunks into an Oracle, directly pass Oracle instead.
Reviewed By: hans
Differential Revision
[NFC][llvm-reduce] Cleanup types
Use Module& wherever possible. Since every reduction immediately turns Chunks into an Oracle, directly pass Oracle instead.
Reviewed By: hans
Differential Revision: https://reviews.llvm.org/D111122
show more ...
|
|
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, llvmorg-12.0.0, llvmorg-12.0.0-rc5 |
|
| #
56fa1b4f |
| 02-Apr-2021 |
Samuel <[email protected]> |
[llvm-reduce] Add header guards and fix clang-tidy warnings
Add header guards and fix other clang-tidy warnings in .h files. Also align misaligned header docs
Reviewed By: aeubanks
Differential Re
[llvm-reduce] Add header guards and fix clang-tidy warnings
Add header guards and fix other clang-tidy warnings in .h files. Also align misaligned header docs
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D99634
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
| #
a5bb2475 |
| 31-Aug-2020 |
Florian Hahn <[email protected]> |
[llvm-reduce] Create returns with undef values for non-void functions.
Currently replaceBranchTerminator/removeUninterestingBBsFromSwitch always creates `ret void` instructions if no successor is in
[llvm-reduce] Create returns with undef values for non-void functions.
Currently replaceBranchTerminator/removeUninterestingBBsFromSwitch always creates `ret void` instructions if no successor is in the chunk.
This results in invalid IR for functions with non-void return types, which makes those reductions unfeasible. Instead, create `ret ty undef` for functions with non-void return types.
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D86849
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1 |
|
| #
af1dd0b1 |
| 25-Jul-2020 |
Roman Lebedev <[email protected]> |
[Reduce] Basic block reduction: do properly handle invoke insts (PR46818)
Terminator may have returned value, so we need to replace uses, and in general handle invoke as a branch inst.
I'm not sure
[Reduce] Basic block reduction: do properly handle invoke insts (PR46818)
Terminator may have returned value, so we need to replace uses, and in general handle invoke as a branch inst.
I'm not sure this is the best handling, but IMO poorly reduced input is much better than crashing reduction tool. A (previously-crashing!) test added.
Fixes https://bugs.llvm.org/show_bug.cgi?id=46818
show more ...
|
|
Revision tags: llvmorg-12-init |
|
| #
a39c7ab9 |
| 08-Jul-2020 |
Roman Lebedev <[email protected]> |
[NFCI][llvm-reduce] Cleanup Delta passes to use Oracle abstraction
Summary: I think, this results in much more understandable/readable flow. At least the original logic was perhaps the most hard thi
[NFCI][llvm-reduce] Cleanup Delta passes to use Oracle abstraction
Summary: I think, this results in much more understandable/readable flow. At least the original logic was perhaps the most hard thing for me to grasp when taking an initial look on the delta passes.
Reviewers: nickdesaulniers, dblaikie, diegotf, george.burgess.iv
Reviewed By: nickdesaulniers
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D83287
show more ...
|
|
Revision tags: llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1, llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1 |
|
| #
1796aad5 |
| 19-Sep-2019 |
David Blaikie <[email protected]> |
llvm-reduce: Follow-up to 372280, now with more-better msan fixing
llvm-svn: 372349
|
| #
fa7f168a |
| 19-Sep-2019 |
David Blaikie <[email protected]> |
llvm-reduce: Avoid use-after-free when removing a branch instruction
Found my msan buildbot & pointed out by Nico Weber - thanks Nico!
llvm-svn: 372280
|
| #
69a92352 |
| 18-Sep-2019 |
David Blaikie <[email protected]> |
llvm-reduce: Remove inaccurate doxy comment about a return that isn't returned
Addressing post-commit code review feedback from Dávid Bolvanský - thanks!
llvm-svn: 372271
|
| #
c4da7eec |
| 18-Sep-2019 |
David Blaikie <[email protected]> |
llvm-reduce: Fix inconsistencies between int/unsigned usage (standardize on int)
llvm-svn: 372270
|
| #
070598bb |
| 18-Sep-2019 |
David Blaikie <[email protected]> |
llvm-reduce: Add pass to reduce basic blocks
Patch by Diego Treviño!
Differential Revision: https://reviews.llvm.org/D66320
llvm-svn: 372264
|