Revision tags: llvmorg-21-init |
|
#
8e702735 |
| 24-Jan-2025 |
Jeremy Morse <jeremy.morse@sony.com> |
[NFC][DebugInfo] Use iterator moveBefore at many call-sites (#123583)
As part of the "RemoveDIs" project, BasicBlock::iterator now carries a
debug-info bit that's needed when getFirstNonPHI and sim
[NFC][DebugInfo] Use iterator moveBefore at many call-sites (#123583)
As part of the "RemoveDIs" project, BasicBlock::iterator now carries a
debug-info bit that's needed when getFirstNonPHI and similar feed into
instruction insertion positions. Call-sites where that's necessary were
updated a year ago; but to ensure some type safety however, we'd like to
have all calls to moveBefore use iterators.
This patch adds a (guaranteed dereferenceable) iterator-taking
moveBefore, and changes a bunch of call-sites where it's obviously safe
to change to use it by just calling getIterator() on an instruction
pointer. A follow-up patch will contain less-obviously-safe changes.
We'll eventually deprecate and remove the instruction-pointer
insertBefore, but not before adding concise documentation of what
considerations are needed (very few).
show more ...
|
Revision tags: llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5 |
|
#
42775a44 |
| 21-Nov-2024 |
Wu Yingcong <yingcong.wu@intel.com> |
[ControlHeightReduction] Add assert to avoid underflow (#116339)
`NumCHRedBranches - 1` is used later, we should add an assertion to make
sure it will not underflow.
|
Revision tags: llvmorg-19.1.4 |
|
#
4d12a143 |
| 06-Nov-2024 |
Kazu Hirata <kazu@google.com> |
[Instrumentation] Remove unused includes (NFC) (#115117)
Identified with misc-include-cleaner.
|
Revision tags: 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 |
|
#
b7146aed |
| 03-Aug-2024 |
Kazu Hirata <kazu@google.com> |
[Transforms] Construct SmallVector with ArrayRef (NFC) (#101851)
|
Revision tags: llvmorg-19.1.0-rc1, llvmorg-20-init |
|
#
74deadf1 |
| 29-Jun-2024 |
Nikita Popov <llvm@npopov.com> |
[IRBuilder] Don't include Module.h (NFC) (#97159)
This used to be necessary to fetch the DataLayout, but isn't anymore.
|
Revision tags: llvmorg-18.1.8 |
|
#
294f3ce5 |
| 12-Jun-2024 |
Paul Kirth <paulkirth@google.com> |
Reapply "[llvm][IR] Extend BranchWeightMetadata to track provenance o… (#95281)
…f weights" #95136
Reverts #95060, and relands #86609, with the unintended code generation
changes addressed.
T
Reapply "[llvm][IR] Extend BranchWeightMetadata to track provenance o… (#95281)
…f weights" #95136
Reverts #95060, and relands #86609, with the unintended code generation
changes addressed.
This patch implements the changes to LLVM IR discussed in
https://discourse.llvm.org/t/rfc-update-branch-weights-metadata-to-allow-tracking-branch-weight-origins/75032
In this patch, we add an optional field to MD_prof meatdata nodes for
branch weights, which can be used to distinguish weights added from
llvm.expect* intrinsics from those added via other methods, e.g. from
profiles or inserted by the compiler.
One of the major motivations, is for use with MisExpect diagnostics,
which need to know if branch_weight metadata originates from an
llvm.expect intrinsic. Without that information, we end up checking
branch weights multiple times in the case if ThinLTO + SampleProfiling,
leading to some inaccuracy in how we report MisExpect related
diagnostics to users.
Since we change the format of MD_prof metadata in a fundamental way, we
need to update code handling branch weights in a number of places.
We also update the lang ref for branch weights to reflect the change.
show more ...
|
#
607afa0b |
| 11-Jun-2024 |
Paul Kirth <paulkirth@google.com> |
Revert "[llvm][IR] Extend BranchWeightMetadata to track provenance of weights" (#95060)
Reverts llvm/llvm-project#86609
This change causes compile-time regressions for stage2 builds
(https://llv
Revert "[llvm][IR] Extend BranchWeightMetadata to track provenance of weights" (#95060)
Reverts llvm/llvm-project#86609
This change causes compile-time regressions for stage2 builds
(https://llvm-compile-time-tracker.com/compare.php?from=3254f31a66263ea9647c9547f1531c3123444fcd&to=c5978f1eb5eeca8610b9dfce1fcbf1f473911cd8&stat=instructions:u).
It also introduced unintended changes to `.text` which should be
addressed before relanding.
show more ...
|
#
c5978f1e |
| 10-Jun-2024 |
Paul Kirth <paulkirth@google.com> |
[llvm][IR] Extend BranchWeightMetadata to track provenance of weights (#86609)
This patch implements the changes to LLVM IR discussed in
https://discourse.llvm.org/t/rfc-update-branch-weights-met
[llvm][IR] Extend BranchWeightMetadata to track provenance of weights (#86609)
This patch implements the changes to LLVM IR discussed in
https://discourse.llvm.org/t/rfc-update-branch-weights-metadata-to-allow-tracking-branch-weight-origins/75032
In this patch, we add an optional field to MD_prof metadata nodes for
branch weights, which can be used to distinguish weights added from
`llvm.expect*` intrinsics from those added via other methods, e.g.
from profiles or inserted by the compiler.
One of the major motivations, is for use with MisExpect diagnostics,
which need to know if branch_weight metadata originates from an
llvm.expect intrinsic. Without that information, we end up checking
branch weights multiple times in the case if ThinLTO + SampleProfiling,
leading to some inaccuracy in how we report MisExpect related
diagnostics to users.
Since we change the format of MD_prof metadata in a fundamental way, we
need to update code handling branch weights in a number of places.
We also update the lang ref for branch weights to reflect the change.
show more ...
|
Revision tags: 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 |
|
#
cb4627d1 |
| 16-Nov-2023 |
Matthias Braun <matze@braunis.de> |
Add setBranchWeigths convenience function. NFC (#72446)
Add `setBranchWeights` convenience function to ProfDataUtils.h and use
it where appropriate.
|
Revision tags: llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0 |
|
#
6942c64e |
| 11-Sep-2023 |
Jeremy Morse <jeremy.morse@sony.com> |
[NFC][RemoveDIs] Prefer iterator-insertion over instructions
Continuing the patch series to get rid of debug intrinsics [0], instruction insertion needs to be done with iterators rather than instruc
[NFC][RemoveDIs] Prefer iterator-insertion over instructions
Continuing the patch series to get rid of debug intrinsics [0], instruction insertion needs to be done with iterators rather than instruction pointers, so that we can communicate information in the iterator class. This patch adds an iterator-taking insertBefore method and converts various call sites to take iterators. These are all sites where such debug-info needs to be preserved so that a stage2 clang can be built identically; it's likely that many more will need to be changed in the future.
At this stage, this is just changing the spelling of a few operations, which will eventually become signifiant once the debug-info bearing iterator is used.
[0] https://discourse.llvm.org/t/rfc-instruction-api-changes-needed-to-eliminate-debug-intrinsics-from-ir/68939
Differential Revision: https://reviews.llvm.org/D152537
show more ...
|
Revision tags: llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3 |
|
#
51dfe3cb |
| 16-Aug-2023 |
Nikita Popov <npopov@redhat.com> |
[IR] Add PHINode::removeIncomingValueIf() (NFC)
Add an API that allows removing multiple incoming phi values based on a predicate callback, as suggested on D157621.
This makes sure that the removal
[IR] Add PHINode::removeIncomingValueIf() (NFC)
Add an API that allows removing multiple incoming phi values based on a predicate callback, as suggested on D157621.
This makes sure that the removal is linear time rather than quadratic, and avoids subtleties around iterator invalidation.
I have replaced some of the more straightforward users with the new API, though there's a couple more places that should be able to use it.
Differential Revision: https://reviews.llvm.org/D158064
show more ...
|
#
7e2f1ae7 |
| 10-Aug-2023 |
Nikita Popov <npopov@redhat.com> |
Reapply [CHR] Fix up phi nodes with unreachable predecessors (PR64594)
Relative to the previous attempt, this also adjusts RegionInfo verification to allow unreachable predecessors.
-----
If a blo
Reapply [CHR] Fix up phi nodes with unreachable predecessors (PR64594)
Relative to the previous attempt, this also adjusts RegionInfo verification to allow unreachable predecessors.
-----
If a block in the CHR region has an unreachable predecessor, then there will be no edge from that predecessor to the newly cloned block. However, a phi node entry for it will be left behind. Make sure that these incoming blocks get dropped as well.
Fixes https://github.com/llvm/llvm-project/issues/64594.
Differential Revision: https://reviews.llvm.org/D157621
show more ...
|
#
421577f5 |
| 11-Aug-2023 |
Nikita Popov <npopov@redhat.com> |
Revert "[CHR] Fix up phi nodes with unreachable predecessors (PR64594)"
This reverts commit cfc9298dc588c626a52193260da28a630e103916.
The newly added test fails under EXPENSIVE_CHECKS, revert while
Revert "[CHR] Fix up phi nodes with unreachable predecessors (PR64594)"
This reverts commit cfc9298dc588c626a52193260da28a630e103916.
The newly added test fails under EXPENSIVE_CHECKS, revert while I investigate.
show more ...
|
#
cfc9298d |
| 10-Aug-2023 |
Nikita Popov <npopov@redhat.com> |
[CHR] Fix up phi nodes with unreachable predecessors (PR64594)
If a block in the CHR region has an unreachable predecessor, then there will be no edge from that predecessor to the newly cloned block
[CHR] Fix up phi nodes with unreachable predecessors (PR64594)
If a block in the CHR region has an unreachable predecessor, then there will be no edge from that predecessor to the newly cloned block. However, a phi node entry for it will be left behind. Make sure that these incoming blocks get dropped as well.
Fixes https://github.com/llvm/llvm-project/issues/64594.
Differential Revision: https://reviews.llvm.org/D157621
show more ...
|
Revision tags: 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 |
|
#
a20f7efb |
| 15-Apr-2023 |
Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> |
Remove several no longer needed includes. NFCI
Mostly removing includes of InitializePasses.h and Pass.h in passes that no longer has support for the legacy PM.
|
Revision tags: llvmorg-16.0.1, llvmorg-16.0.0 |
|
#
398af9b4 |
| 16-Mar-2023 |
Kazu Hirata <kazu@google.com> |
[llvm] Use *{Map,Set}::contains (NFC)
|
Revision tags: llvmorg-16.0.0-rc4 |
|
#
912404db |
| 07-Mar-2023 |
Kazu Hirata <kazu@google.com> |
[ControlHeightReduction] Freeze potentially poisonous conditions
This patch freezes potentially poisonous conditions in conditional branches so that we do not "move up" conditional branches "br i1 p
[ControlHeightReduction] Freeze potentially poisonous conditions
This patch freezes potentially poisonous conditions in conditional branches so that we do not "move up" conditional branches "br i1 poison".
Differential Revision: https://reviews.llvm.org/D145008
show more ...
|
#
368c9f88 |
| 01-Mar-2023 |
Kazu Hirata <kazu@google.com> |
Revert "[ControlHeightReduction] Don't combine a "poison" branch"
This reverts commit 38a64aab4a3fbaaeb383638ff654247902796556.
llvm-clang-x86_64-expensive-checks-debian is failing:
https://lab.ll
Revert "[ControlHeightReduction] Don't combine a "poison" branch"
This reverts commit 38a64aab4a3fbaaeb383638ff654247902796556.
llvm-clang-x86_64-expensive-checks-debian is failing:
https://lab.llvm.org/buildbot/#/builders/16/builds/44249
show more ...
|
#
38a64aab |
| 28-Feb-2023 |
Kazu Hirata <kazu@google.com> |
[ControlHeightReduction] Don't combine a "poison" branch
Without this patch, the control height reduction pass would combine a "poison" branch with an earlier well-defined branch, turning the earlie
[ControlHeightReduction] Don't combine a "poison" branch
Without this patch, the control height reduction pass would combine a "poison" branch with an earlier well-defined branch, turning the earlier branch into a "poison" branch also.
This patch fixes the problem by rejecting "poison" conditional branches.
Differential Revision: https://reviews.llvm.org/D145008
show more ...
|
#
43b725f8 |
| 28-Feb-2023 |
Nikita Popov <npopov@redhat.com> |
[CHR] Do not fetch BFI without profile summary (NFCI)
Do not compute BFI if PGO is not used. This addresses the compile-time regression from https://reviews.llvm.org/D144769.
|
#
66673166 |
| 27-Feb-2023 |
Rong Xu <xur@google.com> |
[Pass][CHR] Move ControlHeightReduction to module optimization pipeline
This is a modified version of commit b374423304a8 by Arthur (https://reviews.llvm.org/D143424).
Here we invoke to the pass in
[Pass][CHR] Move ControlHeightReduction to module optimization pipeline
This is a modified version of commit b374423304a8 by Arthur (https://reviews.llvm.org/D143424).
Here we invoke to the pass independent of PGOOPT. We now check if the profile is available through the program summary. This ensures CHR is called in distributed ThinLTO BE compilation (where PGOOPT might not be created).
Differential Revision: https://reviews.llvm.org/D144769
show more ...
|
Revision tags: llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init |
|
#
e741b8c2 |
| 19-Jan-2023 |
Christian Ulmann <christian.ulmann@nextsilicon.com> |
[llvm][ir] Purge MD_prof custom accessors
This commit purges direct accesses to MD_prof metadata and replaces them with the accessors provided from the utility file wherever possible. This commit ca
[llvm][ir] Purge MD_prof custom accessors
This commit purges direct accesses to MD_prof metadata and replaces them with the accessors provided from the utility file wherever possible. This commit can be seen as the first step towards switching the branch weights to 64 bits. See post here: https://discourse.llvm.org/t/extend-md-prof-branch-weights-metadata-from-32-to-64-bits/67492
Reviewed By: davidxl, paulkirth
Differential Revision: https://reviews.llvm.org/D141393
show more ...
|
Revision tags: llvmorg-15.0.7 |
|
#
32b38d24 |
| 15-Dec-2022 |
Vasileios Porpodas <vporpodas@google.com> |
[NFC] Rename Instruction::insertAt() to Instruction::insertInto(), to be consistent with BasicBlock::insertInto()
Differential Revision: https://reviews.llvm.org/D140085
|
#
dc891846 |
| 13-Dec-2022 |
Vasileios Porpodas <vporpodas@google.com> |
[NFC] Cleanup: Replace Function::getBasicBlockList().splice() with Function::splice()
This is part of a series of patches that aim at making Function::getBasicBlockList() private.
Differential Revi
[NFC] Cleanup: Replace Function::getBasicBlockList().splice() with Function::splice()
This is part of a series of patches that aim at making Function::getBasicBlockList() private.
Differential Revision: https://reviews.llvm.org/D139984
show more ...
|
Revision tags: llvmorg-15.0.6 |
|
#
06911ba6 |
| 28-Nov-2022 |
Vasileios Porpodas <vporpodas@google.com> |
[NFC] Cleanup: Replaces BB->getInstList().insert() with I->insertAt().
This is part of a series of cleanup patches towards making BasicBlock::getInstList() private.
Differential Revision: https://r
[NFC] Cleanup: Replaces BB->getInstList().insert() with I->insertAt().
This is part of a series of cleanup patches towards making BasicBlock::getInstList() private.
Differential Revision: https://reviews.llvm.org/D138877
show more ...
|