Revision tags: llvmorg-15.0.3 |
|
#
2592ccde |
| 18-Oct-2022 |
Arthur Eubanks <aeubanks@google.com> |
[llvm-reduce] Unify pass logging
We randomly use outs() or errs(), which makes test logs confusing. We also randomly add/don't add a line afterward.
Reviewed By: arsenm
Differential Revision: http
[llvm-reduce] Unify pass logging
We randomly use outs() or errs(), which makes test logs confusing. We also randomly add/don't add a line afterward.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D136130
show more ...
|
Revision tags: working, llvmorg-15.0.2 |
|
#
53aad7a6 |
| 21-Sep-2022 |
Florian Hahn <flo@fhahn.com> |
[llvm-reduce] Update NoChunks initializer to be in line with AllChunks.
Without this patch, the assertion triggers below on the test case, because we are using different oracles for the verification
[llvm-reduce] Update NoChunks initializer to be in line with AllChunks.
Without this patch, the assertion triggers below on the test case, because we are using different oracles for the verification.
Assertion failed: (Targets == NoChunksCounter.count() && "number of chunks changes when reducing"), function runDeltaPass, file Delta.cpp, line 272.
show more ...
|
Revision tags: llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3 |
|
#
309d4538 |
| 15-Aug-2022 |
Arthur Eubanks <aeubanks@google.com> |
[llvm-reduce] Move most debugging output behind --verbose
This should cut down on the visual noise when reducing. Still keep output when we run a pass or when we successfully reduce.
Notably, this
[llvm-reduce] Move most debugging output behind --verbose
This should cut down on the visual noise when reducing. Still keep output when we run a pass or when we successfully reduce.
Notably, this also suppresses redirecting the test output to stdout/stderr.
Reviewed By: regehr
Differential Revision: https://reviews.llvm.org/D131922
show more ...
|
#
195087d8 |
| 09-Aug-2022 |
Arthur Eubanks <aeubanks@google.com> |
[llvm-reduce] Try harder to not create invalid aliases
This was done by adding --abort-on-invalid-reduction to remove-function-bodies-used-in-globals.ll and fixing the fallout.
Aliases must have a
[llvm-reduce] Try harder to not create invalid aliases
This was done by adding --abort-on-invalid-reduction to remove-function-bodies-used-in-globals.ll and fixing the fallout.
Aliases must have a GlobalValue or ConstantExpr aliasee and the aliasee must be a definition if it's a GlobalValue. Don't RAUW functions with null if there's an alias pointing to it, and similarly don't delete the body of a function. Don't delete the entire body of a function when reducing blocks, preserve at least one block.
Also make debugging these sorts of things easier by dumping the module when --abort-on-invalid-reduction triggers.
Reviewed By: regehr
Differential Revision: https://reviews.llvm.org/D131505
show more ...
|
Revision tags: llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
#
6b3956e1 |
| 30-Jun-2022 |
Matthew Voss <matthew.voss@sony.com> |
[llvm-reduce] Add support for LTO bitcode files
Adds support for reading and writing LTO bitcode files.
- Emit a summary if the original bitcode file had a summary - Use split LTO units if the
[llvm-reduce] Add support for LTO bitcode files
Adds support for reading and writing LTO bitcode files.
- Emit a summary if the original bitcode file had a summary - Use split LTO units if the original bitcode file used them.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D127168
show more ...
|
Revision tags: llvmorg-14.0.6, llvmorg-14.0.5 |
|
#
42c7f494 |
| 03-Jun-2022 |
Clemens Wasser <clemens.wasser@gmail.com> |
[tools] Forward declare classes & remove includes
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D120208
|
Revision tags: llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2 |
|
#
7c2db666 |
| 19-Apr-2022 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
llvm-reduce: Support multiple MachineFunctions
The current testcase I'm trying to reduce only reproduces with IPRA enabled and requires handling multiple functions.
The only real difference vs. the
llvm-reduce: Support multiple MachineFunctions
The current testcase I'm trying to reduce only reproduces with IPRA enabled and requires handling multiple functions.
The only real difference vs. the IR is the extra indirect to look for the underlying MachineFunction, so treat the ReduceWorkItem as the module instead of the function.
The ugliest piece of this is really the ugliness of MachineModuleInfo. It not only tracks actual module state, but has a number of transient fields used for isel and/or the asm printer. These shouldn't do any harm for the use here, though they should be separated out.
show more ...
|
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, llvmorg-14.0.0-rc1 |
|
#
0d36d84d |
| 02-Feb-2022 |
Markus Lavin <markus.lavin@ericsson.com> |
[llvm-reduce] Display all relevant options in -help
Previously the options category given to cl::HideUnrelatedOptions was local to llvm-reduce.cpp and as a result only options declared in that file
[llvm-reduce] Display all relevant options in -help
Previously the options category given to cl::HideUnrelatedOptions was local to llvm-reduce.cpp and as a result only options declared in that file were visible in the -help options listing. This was a bit unfortunate since there were several useful options declared in other files. This patch addresses that.
Differential Revision: https://reviews.llvm.org/D118682
show more ...
|
Revision tags: llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
#
7cbb6e9a |
| 13-Nov-2021 |
Arthur Eubanks <aeubanks@google.com> |
[llvm-reduce] Assert that the number of chunks does not change with reductions
Followup to D113537.
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D113816
|
#
fb46e64a |
| 24-Nov-2021 |
Florian Hahn <flo@fhahn.com> |
Revert "[ThreadPool] Do not return shared futures."
This reverts commit a5fff58781f30ff3fd7a3f56948552cf7b8842bb.
The offending commit broke building with LLVM_ENABLE_THREADS=OFF.
|
#
8ef460fc |
| 24-Nov-2021 |
Florian Hahn <flo@fhahn.com> |
[llvm-reduce] Add parallel chunk processing.
This patch adds parallel processing of chunks. When reducing very large inputs, e.g. functions with 500k basic blocks, processing chunks in parallel can
[llvm-reduce] Add parallel chunk processing.
This patch adds parallel processing of chunks. When reducing very large inputs, e.g. functions with 500k basic blocks, processing chunks in parallel can significantly speed up the reduction.
To allow modifying clones of the original module in parallel, each clone needs their own LLVMContext object. To achieve this, each job parses the input module with their own LLVMContext. In case a job successfully reduced the input, it serializes the result module as bitcode into a result array.
To ensure parallel reduction produces the same results as serial reduction, only the first successfully reduced result is used, and results of other successful jobs are dropped. Processing resumes after the chunk that was successfully reduced.
The number of threads to use can be configured using the -j option. It defaults to 1, which means serial processing.
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D113857
show more ...
|
#
be56ece9 |
| 16-Nov-2021 |
Florian Hahn <flo@fhahn.com> |
[llvm-reduce] Move code to check chunk to function, to enable reuse (NFC).
This patch moves the logic to clone and check a new chunk into a new function, to allow re-use in a follow-up patch that im
[llvm-reduce] Move code to check chunk to function, to enable reuse (NFC).
This patch moves the logic to clone and check a new chunk into a new function, to allow re-use in a follow-up patch that implements parallel reductions.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D113856
show more ...
|
#
28d95a26 |
| 16-Nov-2021 |
Florian Hahn <flo@fhahn.com> |
[llvm-reduce] Allow writing temporary files as bitcode.
Textual LLVM IR files are much bigger and take longer to write to disk. To avoid the extra cost incurred by serializing to text, this patch ad
[llvm-reduce] Allow writing temporary files as bitcode.
Textual LLVM IR files are much bigger and take longer to write to disk. To avoid the extra cost incurred by serializing to text, this patch adds an option to save temporary files as bitcode instead.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D113858
show more ...
|
#
6f288bd7 |
| 12-Nov-2021 |
Arthur Eubanks <aeubanks@google.com> |
[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 ...
|
#
fbfd327f |
| 09-Nov-2021 |
Dwight Guth <dwight.guth@runtimeverification.com> |
[llvm-reduce] Add flag to start at finer granularity
Sometimes if llvm-reduce is interrupted in the middle of a delta pass on a large file, it can take quite some time for the tool to start actually
[llvm-reduce] Add flag to start at finer granularity
Sometimes if llvm-reduce is interrupted in the middle of a delta pass on a large file, it can take quite some time for the tool to start actually doing new work if it is restarted again on the partially-reduced file. A lot of time ends up being spent testing large chunks when these large chunks are very unlikely to actually pass the interestingness test. In cases like this, the tool will complete faster if the starting granularity is reduced to a finer amount. Thus, we introduce a command line flag that automatically divides the chunks into smaller subsets a fixed, user-specified number of times prior to beginning the core loop.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D112651
show more ...
|
#
fd41738e |
| 02-Nov-2021 |
Markus Lavin <markus.lavin@ericsson.com> |
Recommit "[llvm-reduce] Add MIR support"
(Second try. Need to link against CodeGen and MC libs.)
The llvm-reduce tool has been extended to operate on MIR (import, clone and export). Current limitat
Recommit "[llvm-reduce] Add MIR support"
(Second try. Need to link against CodeGen and MC libs.)
The llvm-reduce tool has been extended to operate on MIR (import, clone and export). Current limitation is that only a single machine function is supported. A single reducer pass that operates on machine instructions (while on SSA-form) has been added. Additional MIR specific reducer passes can be added later as needed.
Differential Revision: https://reviews.llvm.org/D110527
show more ...
|
#
aee7f338 |
| 02-Nov-2021 |
Markus Lavin <markus.lavin@ericsson.com> |
Revert "[llvm-reduce] Add MIR support"
This reverts commit bc2773cb1bdfacfda773eb492e7b0cc65a78cda6.
Broke the clang-ppc64le-linux-multistage build. Reverting while I investigate.
|
#
bc2773cb |
| 02-Nov-2021 |
Markus Lavin <markus.lavin@ericsson.com> |
[llvm-reduce] Add MIR support
The llvm-reduce tool has been extended to operate on MIR (import, clone and export). Current limitation is that only a single machine function is supported. A single re
[llvm-reduce] Add MIR support
The llvm-reduce tool has been extended to operate on MIR (import, clone and export). Current limitation is that only a single machine function is supported. A single reducer pass that operates on machine instructions (while on SSA-form) has been added. Additional MIR specific reducer passes can be added later as needed.
Differential Revision: https://reviews.llvm.org/D110527
show more ...
|
#
77bc3ba3 |
| 05-Oct-2021 |
Arthur Eubanks <aeubanks@google.com> |
[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 |
|
#
511f2cec |
| 30-Apr-2021 |
Arthur Eubanks <aeubanks@google.com> |
[llvm-reduce] Don't unset dso_local on implicitly dso_local GVs
This introduces a flag that aborts if we ever reduce to IR that fails the verifier.
Reviewed By: swamulism, arichardson
Differential
[llvm-reduce] Don't unset dso_local on implicitly dso_local GVs
This introduces a flag that aborts if we ever reduce to IR that fails the verifier.
Reviewed By: swamulism, arichardson
Differential Revision: https://reviews.llvm.org/D101279
show more ...
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5 |
|
#
56fa1b4f |
| 02-Apr-2021 |
Samuel <swamulism@gmail.com> |
[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 |
|
#
ba7c79cb |
| 28-Aug-2020 |
Florian Hahn <flo@fhahn.com> |
[llvm-reduce] Skip chunks that lead to broken modules.
Some reduction passes may create invalid IR. I am not aware of any use case where we would like to proceed reducing invalid IR. Various utils u
[llvm-reduce] Skip chunks that lead to broken modules.
Some reduction passes may create invalid IR. I am not aware of any use case where we would like to proceed reducing invalid IR. Various utils used here, including CloneModule, assume the module to clone is valid and crash otherwise.
Ideally, no reduction pass would create invalid IR, but some currently do. ReduceInstructions can be fixed relatively easily (D86210), but others are harder. For example, ReduceBasicBlocks may remove result in invalid PHI nodes.
For now, skip the chunks. If we get to the point where all reduction passes result in valid IR, we may want to turn this into an assertion.
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D86212
show more ...
|
#
7fef40d8 |
| 22-Aug-2020 |
Tyker <tyker1@outlook.com> |
[llvm-reduce] make llvm-reduce save the best reduction it has when it crashes
This helps with both debugging llvm-reduce and sometimes getting usefull result even if llvm-reduce crashes
Reviewed By
[llvm-reduce] make llvm-reduce save the best reduction it has when it crashes
This helps with both debugging llvm-reduce and sometimes getting usefull result even if llvm-reduce crashes
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D85996
show more ...
|
Revision tags: llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1 |
|
#
469cb724 |
| 23-Jul-2020 |
Roman Lebedev <lebedev.ri@gmail.com> |
[Reduce] Rewrite runDeltaPass() workloop: do reduce a single and/or last target
Summary: If there was a single target to begin with, because a single target can only occupy a single chunk, we couldn
[Reduce] Rewrite runDeltaPass() workloop: do reduce a single and/or last target
Summary: If there was a single target to begin with, because a single target can only occupy a single chunk, we couldn't increase granularity. and would immediately give up.
Likewise, if we had multiple targets, if by the end we'd end up with a single target, we wouldn't finish reducing it, it would always end up being "interesting"
Reviewers: dblaikie, nickdesaulniers, diegotf
Reviewed By: dblaikie
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D84318
show more ...
|
Revision tags: llvmorg-12-init, 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 |
|
#
adcd0268 |
| 28-Jan-2020 |
Benjamin Kramer <benny.kra@googlemail.com> |
Make llvm::StringRef to std::string conversions explicit.
This is how it should've been and brings it more in line with std::string_view. There should be no functional change here.
This is mostly m
Make llvm::StringRef to std::string conversions explicit.
This is how it should've been and brings it more in line with std::string_view. There should be no functional change here.
This is mostly mechanical from a custom clang-tidy check, with a lot of manual fixups. It uncovers a lot of minor inefficiencies.
This doesn't actually modify StringRef yet, I'll do that in a follow-up.
show more ...
|