Revision tags: llvmorg-21-init |
|
#
6292a808 |
| 24-Jan-2025 |
Jeremy Morse <jeremy.morse@sony.com> |
[NFC][DebugInfo] Use iterator-flavour getFirstNonPHI at many call-sites (#123737)
As part of the "RemoveDIs" project, BasicBlock::iterator now carries a
debug-info bit that's needed when getFirstNo
[NFC][DebugInfo] Use iterator-flavour getFirstNonPHI at many call-sites (#123737)
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 getFirstNonPHI use the iterator-returning version.
This patch changes a bunch of call-sites calling getFirstNonPHI to use
getFirstNonPHIIt, which returns an iterator. All these call sites are
where it's obviously safe to fetch the iterator then dereference it. A
follow-up patch will contain less-obviously-safe changes.
We'll eventually deprecate and remove the instruction-pointer
getFirstNonPHI, but not before adding concise documentation of what
considerations are needed (very few).
---------
Co-authored-by: Stephen Tozer <Melamoto@gmail.com>
show more ...
|
Revision tags: llvmorg-19.1.7 |
|
#
f6c76d51 |
| 09-Jan-2025 |
Akshat Oke <Akshat.Oke@amd.com> |
[PM] Remove is_analysis label for LoopSimplify (#121433)
This reverts part of the changes in #118779
|
Revision tags: llvmorg-19.1.6 |
|
#
49abcd20 |
| 06-Dec-2024 |
Akshat Oke <Akshat.Oke@amd.com> |
[CodeGen][PM] Initialize analyses with isAnalysis=true (#118779)
Analyses should be marked as analyses.
Otherwise they are prone to get ignored by the legacy analysis cache mechanism and get sche
[CodeGen][PM] Initialize analyses with isAnalysis=true (#118779)
Analyses should be marked as analyses.
Otherwise they are prone to get ignored by the legacy analysis cache mechanism and get scheduled redundantly.
show more ...
|
Revision tags: llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2 |
|
#
9f6f6afa |
| 01-Oct-2024 |
Ramkumar Ramachandra <ramkumar.ramachandra@codasip.com> |
LoopSimplify: strip dependency on DA (NFC) (#107379)
Since no passes compute DependenceAnalysis via the PassManager, there is
no value in preserving it here. Hence, strip the unnecessary dependency
LoopSimplify: strip dependency on DA (NFC) (#107379)
Since no passes compute DependenceAnalysis via the PassManager, there is
no value in preserving it here. Hence, strip the unnecessary dependency
on DependenceAnalysis.
show more ...
|
Revision tags: llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2 |
|
#
e525f916 |
| 04-Aug-2024 |
Kazu Hirata <kazu@google.com> |
[llvm] Use llvm::is_contained (NFC) (#101855)
|
#
60054dcd |
| 02-Aug-2024 |
Shengchen Kan <shengchen.kan@intel.com> |
[NFC] Lowercase the first letter of functions defined in SimplifyCFG.cpp
|
Revision tags: llvmorg-19.1.0-rc1, llvmorg-20-init |
|
#
4b28b3fa |
| 02-Jul-2024 |
Kazu Hirata <kazu@google.com> |
[Transforms] Use range-based for loops (NFC) (#97195)
|
#
2d209d96 |
| 27-Jun-2024 |
Nikita Popov <npopov@redhat.com> |
[IR] Add getDataLayout() helpers to BasicBlock and Instruction (#96902)
This is a helper to avoid writing `getModule()->getDataLayout()`. I
regularly try to use this method only to remember it does
[IR] Add getDataLayout() helpers to BasicBlock and Instruction (#96902)
This is a helper to avoid writing `getModule()->getDataLayout()`. I
regularly try to use this method only to remember it doesn't exist...
`getModule()->getDataLayout()` is also a common (the most common?)
reason why code has to include the Module.h header.
show more ...
|
Revision tags: 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 |
|
#
6b62a913 |
| 04-Mar-2024 |
Jeremy Morse <jeremy.morse@sony.com> |
[RemoveDIs] Reapply 3fda50d3915, insert instructions using iterators
I'd reverted this in 6c7805d5d1 after a bad stage. Original commit messsage follows:
[NFC][RemoveDIs] Bulk update utilities to i
[RemoveDIs] Reapply 3fda50d3915, insert instructions using iterators
I'd reverted this in 6c7805d5d1 after a bad stage. Original commit messsage follows:
[NFC][RemoveDIs] Bulk update utilities to insert with iterators
As part of the RemoveDIs project we need LLVM to insert instructions using iterators wherever possible, so that the iterators can carry a bit of debug-info. This commit implements some of that by updating the contents of llvm/lib/Transforms/Utils to always use iterator-versions of instruction constructors.
There are two general flavours of update: * Almost all call-sites just call getIterator on an instruction * Several make use of an existing iterator (scenarios where the code is actually significant for debug-info) The underlying logic is that any call to getFirstInsertionPt or similar APIs that identify the start of a block need to have that iterator passed directly to the insertion function, without being converted to a bare Instruction pointer along the way.
I've also switched DemotePHIToStack to take an optional iterator: it needs to take an iterator, and having a no-insert-location behaviour appears to be important. The constructors for ICmpInst and FCmpInst have been updated too. They're the only instructions that take block _references_ rather than pointers for certain calls, and a future patch is going to make use of default-null block insertion locations.
All of this should be NFC.
show more ...
|
#
6c7805d5 |
| 29-Feb-2024 |
Jeremy Morse <jeremy.morse@sony.com> |
Revert "[NFC][RemoveDIs] Bulk update utilities to insert with iterators"
This reverts commit 3fda50d3915b2163a54a37b602be7783a89dd808.
Apparently I've missed a hunk while staging this; will back ou
Revert "[NFC][RemoveDIs] Bulk update utilities to insert with iterators"
This reverts commit 3fda50d3915b2163a54a37b602be7783a89dd808.
Apparently I've missed a hunk while staging this; will back out for now.
Picked up here: https://lab.llvm.org/buildbot/#/builders/139/builds/60429/steps/6/logs/stdio
show more ...
|
#
3fda50d3 |
| 29-Feb-2024 |
Jeremy Morse <jeremy.morse@sony.com> |
[NFC][RemoveDIs] Bulk update utilities to insert with iterators
As part of the RemoveDIs project we need LLVM to insert instructions using iterators wherever possible, so that the iterators can carr
[NFC][RemoveDIs] Bulk update utilities to insert with iterators
As part of the RemoveDIs project we need LLVM to insert instructions using iterators wherever possible, so that the iterators can carry a bit of debug-info. This commit implements some of that by updating the contents of llvm/lib/Transforms/Utils to always use iterator-versions of instruction constructors.
There are two general flavours of update: * Almost all call-sites just call getIterator on an instruction * Several make use of an existing iterator (scenarios where the code is actually significant for debug-info) The underlying logic is that any call to getFirstInsertionPt or similar APIs that identify the start of a block need to have that iterator passed directly to the insertion function, without being converted to a bare Instruction pointer along the way.
I've also switched DemotePHIToStack to take an optional iterator: it needs to take an iterator, and having a no-insert-location behaviour appears to be important. The constructors for ICmpInst and FCmpInst have been updated too. They're the only instructions that take block _references_ rather than pointers for certain calls, and a future patch is going to make use of default-null block insertion locations.
All of this should be NFC.
show more ...
|
Revision tags: 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 |
|
#
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 ...
|
Revision tags: llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6 |
|
#
143ed21b |
| 05-Jun-2023 |
Nikita Popov <npopov@redhat.com> |
Revert "[LCSSA] Remove unused ScalarEvolution argument (NFC)"
This reverts commit 5362a0d859d8e96b3f7c0437b7866e17a818a4f7.
In preparation for reverting a dependent revision.
|
Revision tags: llvmorg-16.0.5 |
|
#
b56fb227 |
| 18-May-2023 |
Kazu Hirata <kazu@google.com> |
[Utils] Use LLVMContext::MD_loop (NFC)
|
Revision tags: llvmorg-16.0.4 |
|
#
00ff746f |
| 04-May-2023 |
Nikita Popov <npopov@redhat.com> |
[LoopSimplify] Reduce amount of redundant SCEV invalidation (NFCI)
We are simplifying the loop and all its children. Each time, we invalidate the top-most loop. The top-most loop is going to be the
[LoopSimplify] Reduce amount of redundant SCEV invalidation (NFCI)
We are simplifying the loop and all its children. Each time, we invalidate the top-most loop. The top-most loop is going to be the same every time. The cost of SCEV invalidation is largely independent from how data about the loop is actually cached, so we should avoid redundant invalidations.
show more ...
|
Revision tags: llvmorg-16.0.3 |
|
#
5362a0d8 |
| 02-May-2023 |
Nikita Popov <npopov@redhat.com> |
[LCSSA] Remove unused ScalarEvolution argument (NFC)
After D149435, LCSSA formation no longer needs access to ScalarEvolution, so remove the argument from the utilities.
|
Revision tags: 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 |
|
#
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 |
|
#
af4e856f |
| 23-Nov-2022 |
Vasileios Porpodas <vporpodas@google.com> |
[NFC] Replaced BB->getInstList().{erase(),pop_front(),pop_back()} with eraseFromParent().
Differential Revision: https://reviews.llvm.org/D138617
|
Revision tags: llvmorg-15.0.5, llvmorg-15.0.4 |
|
#
9d5adc7e |
| 25-Oct-2022 |
Yaxun (Sam) Liu <yaxun.liu@amd.com> |
Revert "reland e5581df60a35 [SimplifyCFG] accumulate bonus insts cost"
This reverts commit bd7949bcd86633bd4203b2ba6f891aea00fce4d1.
Revert this patch since reviwers have different opinions regardi
Revert "reland e5581df60a35 [SimplifyCFG] accumulate bonus insts cost"
This reverts commit bd7949bcd86633bd4203b2ba6f891aea00fce4d1.
Revert this patch since reviwers have different opinions regarding the approach in post-commit review.
Will open RFC for further discussion.
Differential Revision: https://reviews.llvm.org/D132408
show more ...
|
Revision tags: llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1 |
|
#
bd7949bc |
| 17-Sep-2022 |
Yaxun (Sam) Liu <yaxun.liu@amd.com> |
reland e5581df60a35 [SimplifyCFG] accumulate bonus insts cost
Fixed compile time increase due to always constructing LocalCostTracker. Now only construct LocalCostTracker when needed.
|
#
16cf666b |
| 14-Oct-2022 |
Florian Hahn <flo@fhahn.com> |
[Loop] Move block and loop dispo invalidation to makeLoopInvariant.
makeLoopInvariant may recursively move its operands to make them invariant, before moving the passed in instruction. Those recursi
[Loop] Move block and loop dispo invalidation to makeLoopInvariant.
makeLoopInvariant may recursively move its operands to make them invariant, before moving the passed in instruction. Those recursively moved instructions are currently missed when invalidating block and loop dispositions.
To address this, move the invalidation code to Loop::makeLoopInvariant.
Fixes #58314.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D135909
show more ...
|
#
19ad1cd5 |
| 07-Oct-2022 |
Florian Hahn <flo@fhahn.com> |
Recommit "[SCEV] Support clearing Block/LoopDispositions for a single value."
This reverts commit 92f698f01fa0bb8967233a6391ada2d51849fa68.
The updated version of the patch includes handling for no
Recommit "[SCEV] Support clearing Block/LoopDispositions for a single value."
This reverts commit 92f698f01fa0bb8967233a6391ada2d51849fa68.
The updated version of the patch includes handling for non-SCEVable types. A test case has been added in ec86e9a99bca802.
show more ...
|
#
92f698f0 |
| 07-Oct-2022 |
Florian Hahn <flo@fhahn.com> |
Revert "[SCEV] Support clearing Block/LoopDispositions for a single value."
This reverts commit 9e931439ddb9b6b8f655940b9d8ed6db50c2a7e2.
This commit causes a crash when TSan, e.g. with https://lab
Revert "[SCEV] Support clearing Block/LoopDispositions for a single value."
This reverts commit 9e931439ddb9b6b8f655940b9d8ed6db50c2a7e2.
This commit causes a crash when TSan, e.g. with https://lab.llvm.org/buildbot/#/builders/70/builds/28309/steps/10/logs/stdio
Reverting while I extract a reproducer and submit a fix.
show more ...
|
#
9e931439 |
| 07-Oct-2022 |
Florian Hahn <flo@fhahn.com> |
[SCEV] Support clearing Block/LoopDispositions for a single value.
Extend forgetBlockAndLoopDisposition to allow clearing information for a single value. This can be useful when only a single value
[SCEV] Support clearing Block/LoopDispositions for a single value.
Extend forgetBlockAndLoopDisposition to allow clearing information for a single value. This can be useful when only a single value is changed, e.g. because the instruction is moved.
We also need to clear the cached values for all SCEV users, because they may depend on the starting value's disposition.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D134614
show more ...
|
#
dd61726d |
| 19-Sep-2022 |
Nikita Popov <npopov@redhat.com> |
Revert "[SimplifyCFG] accumulate bonus insts cost"
This reverts commit e5581df60a35fffb0c69589777e4e126c849405f.
This causes major compile-time regressions, about 2-3% end-to-end on CTMark.
|